API · version 1
ProtocolProbe API
The facts on every server page, as JSON. Read-only, free, no key. Machine-readable description: OpenAPI 3.1.
Endpoints
GET https://protocolprobe.com/api/v1/servers/{namespace}/{name}: one server, the same facts as its page. The name is the exact registry name, for exampleio.github.example/my-server.GET https://protocolprobe.com/api/v1/servers?page=1: every server in name order, 500 per page, withnextandprevlinks. Add&topic=…for one topic.GET https://protocolprobe.com/api/v1/meta: counts, the topic list, the registry snapshot date, and the meaning of every code the records use.GET https://protocolprobe.com/api/v1/openapi.json: the OpenAPI 3.1 description.
Example
Shortened; … marks left-out parts. Values are illustrative.
{
"apiVersion": "1",
"license": { "id": "CC-BY-4.0", "url": "…", "attribution": "…", "excludes": "…" },
"docs": "https://protocolprobe.com/docs/api",
"server": {
"name": "io.github.example/my-server",
"version": "1.2.0",
"page": "https://protocolprobe.com/mcp/servers/io.github.example/my-server",
"registry": { "title": "…", "description": "…", "packages": [ … ], "remotes": [ … ] },
"taxonomy": {
"license": { "state": "declared", "value": "MIT", "evidence": { "source": "package license field" } },
"stars": { "state": "inapplicable", "value": null, "reason": "server declares no repository link, so there is nothing to fetch" },
…
},
"topic": { "state": "declared", "value": "developer-tools", "aiClassified": true, "checkedAt": "2026-10-08" },
"deps": { "state": "declared", "value": "none-known", "counts": { "critical": 0, "high": 0, … }, "checkedAt": "2026-10-08" },
"tests": {
"remote": {
"outcome": "tested", "mode": "read-only", "testedAt": "…", "verdict": "not-probed-policy",
"coverage": { "exercised": 4, "applicable": 14, "notApplicable": 4 },
"checks": [ { "n": 1, "name": "tool-list", "bucket": "exercised", "why": null }, … ]
}
},
"primaryTest": "remote",
"asOf": { "registry": "…", "taxonomy": "…" }
}
}How to read a record
- Every fact has a state.
declared: the source states a value.undeclared: we checked and found no usable value, with the reason.inapplicable: the field does not apply. An undeclared field is not the same as “none”. ourLimit: truemeans a value is missing because of our limit (a rate limit, a failed fetch), not because the source lacks it.aiClassified: true(topic, pricing) means AI models produced the value; it has not been hand-checked.- Security checks. Until findings are verified and the publisher has been told, no check outcome (pass or finding) is published for any server. Each of the 18 checks shows only whether it ran (
bucket) and, if not, why (why). The verdict line describes coverage and reachability, never a check outcome. - Codes (
bucket,why,verdict,notTested.code,reasonCode, values) are explained in/meta. - Every fact carries the date it was checked (
checkedAt,testedAt,asOf). Facts describe what we saw on that date.
Licence
The data in this API (the same facts as the server pages) is licensed under Creative Commons Attribution 4.0 (CC-BY-4.0). Credit “ProtocolProbe” with a link to the server’s page (the page field) and the date checked. Text quoted from others is not ours to license: a server’s registry title, description and status message, quotes from its website (pricing), deprecation messages from npm or PyPI, and tool, resource and package names. Data is provided as it is, without warranty (see the terms).
Limits and caching
- Responses are cached for a day, and may be served up to a day longer while they refresh; the data itself changes when we reload it, not continuously.
- Only
GETandHEAD. Accepted:?page=N,?topic=Tor both, without percent-encoding. Unknown, repeated or empty parameters and encoded paths are refused (400). - Requests are rate-limited per client. If you need the whole catalogue, page through
/serversrather than fetching every server at once, or contact us. - Any website may call the API from a browser (CORS is open).
Errors
An error is JSON: { "error": { "status": 404, "code": "not-found", "message": "…" } }. Codes: unknown-parameter, bad-parameter (400), not-found (404), method-not-allowed (405), not-publishable (500, a record failed our own publishing check; it is logged), unavailable (503, retry later).
Versions
This is version 1. Fields may be added within a version; a field is never removed or changed in meaning without a new version, announced on this page.
Questions or corrections
hello@protocolprobe.com. If a fact is wrong, tell us; we check every report against its source.