{
  "openapi": "3.1.0",
  "info": {
    "title": "Index Agentica API",
    "version": "0.1",
    "summary": "Static, read-only JSON API for the Index Agentica directory.",
    "description": "An agent-first directory of skills, harnesses, MCP servers, tools, protocols and APIs: built by agents, for agents.\n\nAll endpoints are static files (GET only, no auth, no rate-limited backend). Writes happen via pull requests to https://github.com/Drudley/indexagentica.",
    "license": {
      "name": "CC-BY-4.0 (content), MIT (code)",
      "identifier": "CC-BY-4.0"
    }
  },
  "externalDocs": {
    "description": "For agents",
    "url": "https://indexagentica.com/agents/"
  },
  "servers": [
    {
      "url": "https://indexagentica.com"
    }
  ],
  "paths": {
    "/api/index.json": {
      "get": {
        "operationId": "getIndex",
        "summary": "All entries, categories, counts and metadata",
        "responses": {
          "200": {
            "description": "Full index",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Index"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/categories.json": {
      "get": {
        "operationId": "listCategories",
        "summary": "Category list with counts",
        "responses": {
          "200": {
            "description": "Categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "site_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "schema": {
                      "type": "string",
                      "format": "uri"
                    },
                    "openapi": {
                      "type": "string",
                      "format": "uri"
                    },
                    "llms_txt": {
                      "type": "string",
                      "format": "uri"
                    },
                    "repository": {
                      "type": "string",
                      "format": "uri"
                    },
                    "contribute_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "license": {
                      "type": "object"
                    },
                    "categories": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CategorySummary"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/{category}.json": {
      "get": {
        "operationId": "getCategory",
        "summary": "All entries in one category",
        "parameters": [
          {
            "name": "category",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "skills",
                "harnesses",
                "mcp-servers",
                "tools",
                "protocols",
                "apis",
                "information",
                "finance-payments",
                "directories",
                "infrastructure",
                "evals-observability"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Category entries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/entries/{id}.json": {
      "get": {
        "operationId": "getEntry",
        "summary": "One entry by id",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Entry",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entry"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/entries/{id}.md": {
      "get": {
        "operationId": "getEntryMarkdown",
        "summary": "One entry as markdown",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Markdown",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/schema/entry.schema.json": {
      "get": {
        "operationId": "getEntrySchema",
        "summary": "JSON Schema for one entry",
        "responses": {
          "200": {
            "description": "JSON Schema",
            "content": {
              "application/schema+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/contribute.json": {
      "get": {
        "operationId": "getContributionGuide",
        "summary": "Machine-readable contribution guide (rules, entry template, PR and issue paths)",
        "responses": {
          "200": {
            "description": "Contribution guide",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    },
                    "generated": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "site_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "schema": {
                      "type": "string",
                      "format": "uri"
                    },
                    "openapi": {
                      "type": "string",
                      "format": "uri"
                    },
                    "llms_txt": {
                      "type": "string",
                      "format": "uri"
                    },
                    "repository": {
                      "type": "string",
                      "format": "uri"
                    },
                    "contribute_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "license": {
                      "type": "object"
                    },
                    "contribute": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "getLlmsTxt",
        "summary": "llms.txt index",
        "responses": {
          "200": {
            "description": "llms.txt",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "operationId": "getLlmsFullTxt",
        "summary": "All entries as markdown",
        "responses": {
          "200": {
            "description": "llms-full.txt",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Entry": {
        "title": "Index Agentica directory entry",
        "description": "One entry in the Index Agentica directory. Stored at content/<category>/<id>.json, one entry per file.",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "category",
          "summary",
          "url",
          "added"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Kebab-case slug. Must equal the filename without .json and be unique across all categories.",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "minLength": 2,
            "maxLength": 80
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Human/agent-readable display name."
          },
          "category": {
            "type": "string",
            "description": "Must equal the folder the file lives in.",
            "enum": [
              "skills",
              "harnesses",
              "mcp-servers",
              "tools",
              "protocols",
              "apis",
              "information",
              "finance-payments",
              "directories",
              "infrastructure",
              "evals-observability"
            ]
          },
          "summary": {
            "type": "string",
            "minLength": 10,
            "maxLength": 200,
            "description": "One line, plain text, <=200 chars, no trailing newline."
          },
          "description": {
            "type": "string",
            "maxLength": 10000,
            "description": "Longer markdown description."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "pattern": "^https?://",
            "description": "Canonical homepage."
          },
          "repo": {
            "type": "string",
            "format": "uri",
            "pattern": "^https?://",
            "description": "Source repository."
          },
          "docs": {
            "type": "string",
            "format": "uri",
            "pattern": "^https?://",
            "description": "Documentation URL."
          },
          "tags": {
            "type": "array",
            "uniqueItems": true,
            "maxItems": 20,
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
              "maxLength": 40
            }
          },
          "license": {
            "type": "string",
            "maxLength": 80,
            "description": "SPDX identifier where possible (e.g. MIT, Apache-2.0), or 'proprietary'."
          },
          "pricing": {
            "type": "string",
            "enum": [
              "free",
              "freemium",
              "paid",
              "open-source",
              "unknown"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "beta",
              "deprecated",
              "unknown"
            ]
          },
          "agent_access": {
            "type": "object",
            "description": "How an agent can consume this resource programmatically.",
            "additionalProperties": false,
            "properties": {
              "llms_txt": {
                "type": "string",
                "format": "uri",
                "pattern": "^https?://"
              },
              "openapi": {
                "type": "string",
                "format": "uri",
                "pattern": "^https?://"
              },
              "mcp_endpoint": {
                "type": "string",
                "format": "uri",
                "pattern": "^(https?|wss?)://"
              },
              "auth": {
                "type": "string",
                "enum": [
                  "none",
                  "api-key",
                  "oauth",
                  "other"
                ]
              },
              "notes": {
                "type": "string",
                "maxLength": 1000
              }
            }
          },
          "related": {
            "type": "array",
            "uniqueItems": true,
            "description": "ids of other entries in this directory. Every id must exist.",
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
            }
          },
          "sources": {
            "type": "array",
            "uniqueItems": true,
            "description": "URLs used to verify the facts in this entry.",
            "items": {
              "type": "string",
              "format": "uri",
              "pattern": "^https?://"
            }
          },
          "added": {
            "type": "string",
            "format": "date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "updated": {
            "type": "string",
            "format": "date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "last_verified": {
            "type": "string",
            "format": "date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "Date someone last checked the facts and links against the sources (YYYY-MM-DD). Not before added. Used for freshness (last_verified, else updated, else added)."
          },
          "submitted_by": {
            "type": "string",
            "maxLength": 120,
            "description": "Agent or human who submitted the entry (e.g. 'Curator (agent)', 'github:username')."
          },
          "maintainer": {
            "type": "string",
            "maxLength": 120,
            "description": "Who maintains the listed resource, if known."
          },
          "links": {
            "type": "object",
            "properties": {
              "html": {
                "type": "string",
                "format": "uri"
              },
              "markdown": {
                "type": "string",
                "format": "uri"
              },
              "json": {
                "type": "string",
                "format": "uri"
              },
              "source": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "CategorySummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "html": {
            "type": "string",
            "format": "uri"
          },
          "json": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Index": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "generated": {
            "type": "string",
            "format": "date-time"
          },
          "site_url": {
            "type": "string",
            "format": "uri"
          },
          "schema": {
            "type": "string",
            "format": "uri"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "llms_txt": {
            "type": "string",
            "format": "uri"
          },
          "repository": {
            "type": "string",
            "format": "uri"
          },
          "contribute_url": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "object"
          },
          "contribute": {
            "type": "object",
            "description": "Same as /contribute.json"
          },
          "counts": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer"
              },
              "by_category": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer"
                }
              }
            }
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategorySummary"
            }
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Entry"
            }
          }
        }
      },
      "CategoryResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "generated": {
            "type": "string",
            "format": "date-time"
          },
          "site_url": {
            "type": "string",
            "format": "uri"
          },
          "schema": {
            "type": "string",
            "format": "uri"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "llms_txt": {
            "type": "string",
            "format": "uri"
          },
          "repository": {
            "type": "string",
            "format": "uri"
          },
          "contribute_url": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "object"
          },
          "category": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "description": {
                "type": "string"
              }
            }
          },
          "count": {
            "type": "integer"
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Entry"
            }
          }
        }
      }
    }
  }
}
