{"openapi":"3.1.0","info":{"title":"Multi-Agent Guide API","version":"1.0.0","description":"Read-only summary data from Multi-Agent Guide: tool summaries, the MCP / A2A / AG-UI protocol matrix, and the lists of scenario and comparison pages. No authentication. Responses are cached for up to one hour. Descriptions © Multi-Agent Guide; link back when reusing: each item carries a \"url\" pointing to its page. Full tool pages (features, quickstart, pros and cons, FAQ) are not part of the API; read the page at \"url\" or its Markdown version at \"url\" + \".md\"."},"servers":[{"url":"https://multiagentguide.top/api/v1"}],"paths":{"/tools":{"get":{"summary":"List tools, sorted by slug","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":"Page size. Values above 50 are reduced to 50."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"The next_cursor value of the previous page."},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["framework","harness","orchestrator","protocol","platform"]},"description":"Filter by tool type."},{"name":"mcp","in":"query","required":false,"schema":{"type":"string","enum":["yes","partial","no","unknown"]},"description":"Filter by MCP support status."},{"name":"a2a","in":"query","required":false,"schema":{"type":"string","enum":["yes","partial","no","unknown"]},"description":"Filter by A2A support status."},{"name":"agui","in":"query","required":false,"schema":{"type":"string","enum":["yes","partial","no","unknown"]},"description":"Filter by AG-UI support status."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolList"}}}},"400":{"description":"Invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (60 requests per 60 seconds per IP). See the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The API is temporarily disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tools/{slug}":{"get":{"summary":"Get one tool","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolDetail"}}}},"404":{"description":"No published tool has this slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (60 requests per 60 seconds per IP). See the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The API is temporarily disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/protocols":{"get":{"summary":"Protocol support matrix for every tool","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProtocolMatrix"}}}},"429":{"description":"Rate limit exceeded (60 requests per 60 seconds per IP). See the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The API is temporarily disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/scenarios":{"get":{"summary":"List scenario shortlist pages","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageRefList"}}}},"429":{"description":"Rate limit exceeded (60 requests per 60 seconds per IP). See the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The API is temporarily disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/comparisons":{"get":{"summary":"List comparison pages","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageRefList"}}}},"429":{"description":"Rate limit exceeded (60 requests per 60 seconds per IP). See the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The API is temporarily disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openapi.json":{"get":{"summary":"This document","responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{}}},"429":{"description":"Rate limit exceeded (60 requests per 60 seconds per IP). See the Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The API is temporarily disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ProtocolCell":{"type":"object","additionalProperties":false,"required":["status","evidence_url","checked_at"],"properties":{"status":{"type":"string","enum":["yes","partial","no","unknown"],"description":"\"unknown\" means no statement was found in official documentation. It does not mean unsupported."},"evidence_url":{"type":["string","null"],"description":"Official page the status is based on."},"checked_at":{"type":["string","null"],"description":"Date the status was checked."}}},"Tool":{"type":"object","additionalProperties":false,"required":["slug","name","kind","tldr","url","languages","license","pricing","orchestration_pattern","links","github","protocols","verified_at","updated_at"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["framework","harness","orchestrator","protocol","platform"]},"tldr":{"type":"string","description":"Short plain-text summary written for this site."},"url":{"type":"string","description":"Tool page on this site. Link to it when reusing the summary."},"languages":{"type":"array","items":{"type":"string"}},"license":{"type":"string","description":"SPDX id, \"proprietary\" or \"unknown\"."},"pricing":{"type":"object","additionalProperties":false,"required":["model","url"],"properties":{"model":{"type":"string","enum":["oss-free","open-core","hosted-paid","usage-based","unknown"]},"url":{"type":["string","null"]}}},"orchestration_pattern":{"type":"string"},"links":{"type":"object","additionalProperties":false,"required":["homepage","docs","repository"],"properties":{"homepage":{"type":["string","null"]},"docs":{"type":["string","null"]},"repository":{"type":["string","null"]}}},"github":{"description":"GitHub snapshot, refreshed daily. null when the tool has no public repository.","oneOf":[{"type":"null"},{"type":"object","additionalProperties":false,"required":["repo","stars","forks","last_push_at","latest_release","archived","fetched_at"],"properties":{"repo":{"type":"string","description":"owner/name"},"stars":{"type":["integer","null"]},"forks":{"type":["integer","null"]},"last_push_at":{"type":["string","null"]},"latest_release":{"type":["string","null"]},"archived":{"type":"boolean"},"fetched_at":{"type":["string","null"]}}}]},"protocols":{"type":"object","description":"MCP, A2A and AG-UI support.","additionalProperties":false,"required":["mcp","a2a","agui"],"properties":{"mcp":{"$ref":"#/components/schemas/ProtocolCell"},"a2a":{"$ref":"#/components/schemas/ProtocolCell"},"agui":{"$ref":"#/components/schemas/ProtocolCell"}}},"verified_at":{"type":"string","description":"Date of the last manual check of the editorial fields."},"updated_at":{"type":"string"}}},"ToolList":{"type":"object","additionalProperties":false,"required":["data_as_of","license_note","total","next_cursor","data"],"properties":{"data_as_of":{"type":"string","description":"Date (YYYY-MM-DD) of the newest data in this response, or \"unknown\"."},"license_note":{"type":"string","description":"Reuse terms for the descriptions in this response."},"total":{"type":"integer","description":"Number of tools matching the filters."},"next_cursor":{"type":["string","null"],"description":"Pass as \"cursor\" to get the next page. null on the last page."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Tool"}}}},"ToolDetail":{"type":"object","additionalProperties":false,"required":["data_as_of","license_note","data"],"properties":{"data_as_of":{"type":"string","description":"Date (YYYY-MM-DD) of the newest data in this response, or \"unknown\"."},"license_note":{"type":"string","description":"Reuse terms for the descriptions in this response."},"data":{"$ref":"#/components/schemas/Tool"}}},"ProtocolRow":{"type":"object","additionalProperties":false,"required":["slug","name","url","protocols"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"protocols":{"type":"object","description":"MCP, A2A and AG-UI support.","additionalProperties":false,"required":["mcp","a2a","agui"],"properties":{"mcp":{"$ref":"#/components/schemas/ProtocolCell"},"a2a":{"$ref":"#/components/schemas/ProtocolCell"},"agui":{"$ref":"#/components/schemas/ProtocolCell"}}}}},"ProtocolMatrix":{"type":"object","additionalProperties":false,"required":["data_as_of","license_note","data"],"properties":{"data_as_of":{"type":"string","description":"Date (YYYY-MM-DD) of the newest data in this response, or \"unknown\"."},"license_note":{"type":"string","description":"Reuse terms for the descriptions in this response."},"data":{"type":"array","items":{"$ref":"#/components/schemas/ProtocolRow"}}}},"PageRef":{"type":"object","additionalProperties":false,"required":["slug","title","url","tools","updated_at"],"properties":{"slug":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","description":"Page on this site."},"tools":{"type":"array","items":{"type":"string"},"description":"Slugs of the listed tools covered by the page."},"updated_at":{"type":"string"}}},"PageRefList":{"type":"object","additionalProperties":false,"required":["data_as_of","license_note","data"],"properties":{"data_as_of":{"type":"string","description":"Date (YYYY-MM-DD) of the newest data in this response, or \"unknown\"."},"license_note":{"type":"string","description":"Reuse terms for the descriptions in this response."},"data":{"type":"array","items":{"$ref":"#/components/schemas/PageRef"}}}},"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"}}}}}}