{"openapi":"3.1.0","info":{"title":"ProtocolProbe API","version":"1","summary":"Checked facts about every server in the official MCP Registry.","description":"Read-only. No key. Every fact carries its source and the date it was checked. Until findings are verified and publishers are told, no check outcome (pass or finding) is published for any server; a check shows only whether it ran, and if not, why. Data licence: CC-BY-4.0 (attribution: ProtocolProbe (https://protocolprobe.com), with a link to the server's page and the date checked). Text quoted from others is not ours to license: the publisher's registry title, description and status message, quotes from the publisher's website (pricing), deprecation messages from npm or PyPI, and tool, resource and package names.","license":{"name":"CC BY 4.0 (data)","identifier":"CC-BY-4.0"},"contact":{"email":"hello@protocolprobe.com","url":"https://protocolprobe.com/contact"}},"externalDocs":{"url":"https://protocolprobe.com/docs/api"},"servers":[{"url":"https://protocolprobe.com/api/v1"}],"paths":{"/servers/{namespace}/{name}":{"get":{"operationId":"getServer","summary":"One server, with the same facts as its page","parameters":[{"name":"namespace","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9.-]{1,100}$"},"example":"io.github.example"},{"name":"name","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9._-]{1,100}$"},"example":"my-server"}],"responses":{"200":{"description":"The server","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerResponse"}}}},"400":{"description":"Unknown or repeated query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No server with this name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"The record failed our own publishing check (not-publishable)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/servers":{"get":{"operationId":"listServers","summary":"Servers in name order, 500 per page, optionally of one topic","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1},"description":"No percent-encoding; unknown, repeated or empty parameters are refused with 400."},{"name":"topic","in":"query","required":false,"schema":{"type":"string"},"description":"One of the topics listed by /meta (AI-classified)."}],"responses":{"200":{"description":"One page of servers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"description":"Bad, unknown or repeated parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such page or topic","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/meta":{"get":{"operationId":"getMeta","summary":"Counts, topics, snapshot date and the meaning of every code the records use","responses":{"200":{"description":"Metadata and codebook","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApi","summary":"This document","responses":{"200":{"description":"OpenAPI 3.1","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Envelope":{"type":"object","required":["apiVersion","license","docs"],"properties":{"apiVersion":{"type":"string","const":"1"},"license":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"attribution":{"type":"string"},"excludes":{"type":"string"}}},"docs":{"type":"string","format":"uri"}}},"Field":{"type":["object","null"],"description":"A checked fact. `state` is declared (value given), undeclared (checked, no usable value; see reason/reasonCode) or inapplicable.","required":["state","value"],"properties":{"state":{"enum":["declared","undeclared","inapplicable"]},"value":{},"reason":{"type":["string","null"]},"reasonCode":{"type":"string"},"ourLimit":{"const":true,"description":"Missing because of our limit, not the source."},"aiClassified":{"const":true},"evidence":{"type":"object"},"checkedAt":{"type":["string","null"]}}},"Check":{"type":"object","required":["n","name","bucket"],"properties":{"n":{"type":"integer","minimum":1,"maximum":18},"name":{"type":"string"},"bucket":{"type":"string","description":"Whether the check ran; codes in /meta `buckets`. Never a pass or finding."},"why":{"type":["string","null"],"description":"Why it did not run; codes in /meta `checkReasons`."}}},"Test":{"type":"object","properties":{"kind":{"enum":["remote","package"]},"outcome":{"type":"string"},"mode":{"enum":["read-only","full",null]},"testedAt":{"type":["string","null"]},"verdict":{"type":"string","description":"Codes in /meta `verdicts`; never states a check outcome."},"coverage":{"type":"object","properties":{"exercised":{"type":"integer"},"applicable":{"type":"integer"},"notApplicable":{"type":"integer"}}},"inventory":{"type":["object","null"]},"tools":{"type":"array","items":{"type":"string"}},"checks":{"type":"array","items":{"$ref":"#/components/schemas/Check"}}}},"Server":{"type":"object","required":["name","page","registry","taxonomy","tests"],"properties":{"name":{"type":"string","description":"The exact registry name (namespace/name)."},"version":{"type":["string","null"]},"page":{"type":"string","format":"uri"},"registry":{"type":"object","description":"As listed in the official MCP Registry. title, description and statusMessage are the publisher's own text."},"taxonomy":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Field"}},"topic":{"$ref":"#/components/schemas/Field"},"pricing":{"$ref":"#/components/schemas/Field"},"language":{"$ref":"#/components/schemas/Field"},"deps":{"$ref":"#/components/schemas/Field"},"derived":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/Field"}},"versionPin":{"type":["object","null"]},"tests":{"type":"object","properties":{"remote":{"$ref":"#/components/schemas/Test"},"package":{"$ref":"#/components/schemas/Test"}}},"primaryTest":{"enum":["remote","package",null]},"notTested":{"type":["object","null"],"properties":{"code":{"type":"string","description":"Codes in /meta `notTested`."}}},"asOf":{"type":"object"}}},"ServerResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["server"],"properties":{"server":{"$ref":"#/components/schemas/Server"}}}]},"Summary":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"topic":{"type":["string","null"]},"hostingType":{"type":["string","null"]},"verdict":{"type":["string","null"]},"lastChecked":{"type":["string","null"]},"page":{"type":"string","format":"uri"},"api":{"type":"string","format":"uri"}}},"ListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["total","page","pages","pageSize","servers"],"properties":{"total":{"type":"integer"},"page":{"type":"integer"},"pages":{"type":"integer"},"pageSize":{"type":"integer"},"topic":{"type":["string","null"]},"next":{"type":["string","null"]},"prev":{"type":["string","null"]},"servers":{"type":"array","items":{"$ref":"#/components/schemas/Summary"}}}}]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["status","code","message"],"properties":{"status":{"type":"integer"},"code":{"type":"string"},"message":{"type":"string"}}}}}}}}