MCP Drift Registry Note № 02 Fleet census

51 tenants,
four contracts

51 public endpoints run the same hosted documentation template (mintlify-docs). They do not serve the same contract. Here is which one each of them serves, by name, as of this pulse.

Regenerated each pulse Every row, every count and the completeness check below are computed from the same snapshots the ledger renders from. bin/fleet.js prints this table from state/ and cannot disagree with it.

01Why a table and not a number

Note № 01 establishes that the search_* tool of this template has four distinct schema fingerprints across 51 tenants. That is the right number for judging the sample and the wrong one for doing anything. Nobody integrates with a distribution: they integrate with one named endpoint, and the only question they have is which of the four they are about to get.

The template's tool names embed the tenant slug, so the fingerprints differ trivially for every tenant and cannot be compared directly. What is compared here is the shape of the search_* input schema: every variant requires query and every variant is closed to unknown properties. The variation is entirely in which optional parameters exist.

02Four variants, no remainder

Tenants per distinct search_* schema, this pulse. Each row is labelled by the optional parameters that schema carries beyond the required query, under its fingerprint.
required onlycb69ec950d34e626 38
versionfb21dc8a09203eac 7
language9718d03564ef138a 4
languageversion7f49cff0033583af 2

The four variants are exactly the power set of the two optional parameters language and version — 22 is 4, 4 is what is live, and there is no leftover. That is a feature matrix, not drift: each tenant has some subset of switches on, every combination is somebody's production contract, and no combination is unaccounted for.

None of this is negotiated with the caller. There is no user, no session and no credential anywhere in this sample; the same anonymous request gets a different contract depending only on which tenant answers it. A client written against one tenant's search_* is not portable to the next one, and nothing in a tools/list response says which of the four it just received.

03Look up the endpoint you are calling

One row per endpoint, so the question "what will this URL accept" has an answer that does not require calling it. Extra parameters is what this endpoint's search_* accepts beyond the required query; V is the variant number from the table above; read via is how this registry obtained the row on the last pulse, not how the endpoint is documented.

Tenant Host Extra parameters V Fingerprint Read via
Anchor Browser Docs docs.anchorbrowser.io version 2 fb21dc8a09203eac direct POST
Aryn Docs docs.aryn.ai 1 cb69ec950d34e626 direct POST
Baseten Docs docs.baseten.co 1 cb69ec950d34e626 direct POST
Bland AI Docs docs.bland.ai 1 cb69ec950d34e626 direct POST
Bright Data Docs docs.brightdata.com language 3 9718d03564ef138a direct POST
Cartesia Docs docs.cartesia.ai language version 4 7f49cff0033583af direct POST
Chroma Docs docs.trychroma.com 1 cb69ec950d34e626 direct POST
Chunkr Docs docs.chunkr.ai version 2 fb21dc8a09203eac direct POST
CockroachDB Docs docs.cockroachlabs.com version 2 fb21dc8a09203eac direct POST
Cognee Docs docs.cognee.ai 1 cb69ec950d34e626 direct POST
Contextual AI Docs docs.contextual.ai 1 cb69ec950d34e626 direct POST
Courier Docs unvouched docs.courier.com 1 cb69ec950d34e626 direct POST, redirected
CrewAI Docs docs.crewai.com language version 4 7f49cff0033583af direct POST
Daily Docs docs.daily.co 1 cb69ec950d34e626 direct POST
Dub Docs dub.co 1 cb69ec950d34e626 direct POST
Dust Docs docs.dust.tt 1 cb69ec950d34e626 direct POST
E2B Docs docs.e2b.dev version 2 fb21dc8a09203eac direct POST
Fal AI Docs unvouched docs.fal.ai 1 cb69ec950d34e626 direct POST, redirected
Fireworks AI Docs docs.fireworks.ai 1 cb69ec950d34e626 direct POST
Galileo Docs docs.galileo.ai 1 cb69ec950d34e626 direct POST
Hanko Docs docs.hanko.io 1 cb69ec950d34e626 direct POST
Helicone Docs docs.helicone.ai 1 cb69ec950d34e626 direct POST
Honeycomb Docs docs.honeycomb.io 1 cb69ec950d34e626 direct POST
Hoppscotch Docs docs.hoppscotch.io 1 cb69ec950d34e626 direct POST
Hyperbrowser Docs unvouched docs.hyperbrowser.ai 1 cb69ec950d34e626 direct POST, redirected
Labelbox Docs docs.labelbox.com 1 cb69ec950d34e626 direct POST
LanceDB Docs docs.lancedb.com 1 cb69ec950d34e626 direct POST
LangChain Docs docs.langchain.com 1 cb69ec950d34e626 direct POST
Linkup Docs docs.linkup.so 1 cb69ec950d34e626 direct POST
Mem0 Docs docs.mem0.ai 1 cb69ec950d34e626 direct POST
Mergent Docs docs.mergent.co 1 cb69ec950d34e626 direct POST
Mixpanel Docs docs.mixpanel.com 1 cb69ec950d34e626 direct POST
Novu Docs docs.novu.co 1 cb69ec950d34e626 direct POST
Perplexity Docs docs.perplexity.ai 1 cb69ec950d34e626 direct POST
Pinecone Docs docs.pinecone.io version 2 fb21dc8a09203eac direct POST
Polymarket Docs docs.polymarket.com language 3 9718d03564ef138a direct POST
Porter Docs docs.porter.run 1 cb69ec950d34e626 direct POST
Prefect Docs docs.prefect.io 1 cb69ec950d34e626 direct POST
Reducto Docs docs.reducto.ai version 2 fb21dc8a09203eac direct POST
Replit Docs docs.replit.com language 3 9718d03564ef138a direct POST
Resend Docs resend.com 1 cb69ec950d34e626 direct POST
Retell AI Docs docs.retellai.com 1 cb69ec950d34e626 direct POST
RunPod Docs docs.runpod.io 1 cb69ec950d34e626 direct POST
Tavily Docs docs.tavily.com 1 cb69ec950d34e626 direct POST
Together AI Docs docs.together.ai version 2 fb21dc8a09203eac direct POST
Trigger.dev Docs trigger.dev 1 cb69ec950d34e626 direct POST
Turso Docs docs.turso.tech 1 cb69ec950d34e626 direct POST
Unstructured Docs docs.unstructured.io 1 cb69ec950d34e626 direct POST
Weights and Biases Docs docs.wandb.ai language 3 9718d03564ef138a direct POST
Zapier Docs docs.zapier.com 1 cb69ec950d34e626 direct POST
ZenRows Docs docs.zenrows.com 1 cb69ec950d34e626 direct POST

04The template's own endpoint

The template (mintlify-docs) documents an MCP endpoint of its own, https://docs.mintlify.com/mcp. It is not one of the 51 endpoints above and enters none of their counts, but it is a URL a reader of this page may well call next, so the same collector probes it on the same pulse and the result is printed here rather than left to be discovered.

On this pulse it did not answer: HTTP 530: {"type":"https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-1xxx-errors/error-1016/","title":"Error 1016: Origin DNS error",. That has been the outcome on 5 consecutive pulses, since 2026-09-09 15:51Z. Plan for it the way you would plan for any endpoint that may not answer.

No contract was read on this pulse: https://docs.mintlify.com/mcp was reached and did not answer usably. One endpoint's result on one pulse, with a timestamp — not a statement about anybody's reliability or about the 51 endpoints above, which are served by different infrastructure and are measured separately on this same page.

05Read it by machine

Nothing above is asserted from a hash. Every variant is published with the properties it actually accepts, so the table can be re-derived rather than believed:

curl -s https://he110.github.io/mcp-drift-registry/api/fleet.json \
| jq '.variants[] | {tenants, required, optional, additionalProperties}'

# and the full input schema of any single endpoint, as returned to us:
curl -s https://he110.github.io/mcp-drift-registry/api/servers/<id>.json \
| jq '.tools[] | select(.name | startswith("search_")) | .inputSchema'

The census is also regenerable locally from the committed state, with no network call at all — the same function this page renders from, printed to a terminal:

git clone https://github.com/he110/mcp-drift-registry && node bin/fleet.js
node bin/fleet.js --json | jq '.tenants[] | select(.optional | length > 0)'

Of the 51 rows above, 51 were read by direct POST and 0 required a full initialize handshake; 3 went through a method-preserving redirect, and 3 were read from a URL other than the one declared. 3 rows are not vouched for and are marked as such above.

← Back to the ledger