{
  "openapi": "3.1.0",
  "info": {
    "title": "Agent Connectors API",
    "version": "0.1.0",
    "description": "JSON for the public directory. Listings are copied from the cited source. A link check is not a functionality test."
  },
  "servers": [
    {"url": "https://agentconnectors.dev"}
  ],
  "paths": {
    "/api": {
      "get": {
        "operationId": "getApiIndex",
        "summary": "API index",
        "responses": {
          "200": {
            "description": "Index of the JSON endpoints and the listing schema.",
            "content": {"application/json": {"schema": {"type": "object"}}}
          }
        }
      }
    },
    "/api/tools.json": {
      "get": {
        "operationId": "listTools",
        "summary": "One page of listings",
        "description": "The default page size is 50. Follow next until it is null. limit=all returns every matching listing.",
        "parameters": [
          {"name": "category", "in": "query", "required": false, "description": "Category slug.", "schema": {"type": "string"}},
          {"name": "page", "in": "query", "required": false, "description": "1-based page number.", "schema": {"type": "integer", "minimum": 1}},
          {"name": "limit", "in": "query", "required": false, "description": "Page size from 1 to 100, or the string all.", "schema": {"oneOf": [{"type": "integer", "minimum": 1, "maximum": 100}, {"type": "string", "const": "all"}]}}
        ],
        "responses": {
          "200": {"description": "A page of listings.", "content": {"application/json": {"schema": {"type": "object"}}}},
          "400": {"description": "page or limit is not valid."},
          "404": {"description": "category is not a known slug."}
        }
      }
    },
    "/api/tools/{slug}.json": {
      "get": {
        "operationId": "getTool",
        "summary": "One listing",
        "parameters": [{"name": "slug", "in": "path", "required": true, "description": "Listing slug.", "schema": {"type": "string"}}],
        "responses": {"200": {"description": "One listing.", "content": {"application/json": {"schema": {"type": "object"}}}}, "404": {"description": "No listing with that slug."}}
      }
    }
  }
}
