MCP Drift Observatory
drift.getvda.ai
· VDA / GOSCE
Tells you whether a public MCP server's tools have changed since anyone last looked. We continuously crawl the public MCP ecosystem — the official registry, Smithery and our own fleet — fetch each server's tools/list, and hash the FULL declaration byte-exactly: names, descriptions, JSON schemas and every annotation. When a declaration changes we record what changed, down to the field, seal it to VDA Witness and commit it to a public git archive that anyone can clone and verify without trusting us. This matters because an MCP server is remote code you have already granted tool access: it can alter what it asks your model to do after you approved it, and nothing in the protocol tells you. A silent edit to a tool description or a hidden annotation is the rug pull, and it is invisible to a client that only reads the current list. Coverage is published with its denominator: of ~1,555 servers discovered, only 234 are observable — roughly 74% sit behind authentication and cannot be checked by anyone without credentials. LIMIT, stated plainly: we observe DECLARATIONS, not behaviour. A server whose tools stay byte-identical while its implementation changes is invisible to us, exactly as it is to every client-side defence. If you need behavioural assurance this is not it.
drift.getvda.ai via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
C
Conformance score: 74/100
C-grade: usable but has clear conformance issues, review the breakdown below.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
10 snapshots drifted 9× Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-09-08 14:28:23 current | f61d832c9ec9… |
view → |
| 2026-09-08 07:48:56 | f61d832c9ec9… |
view → |
| 2026-09-08 01:42:13 | f61d832c9ec9… |
view → |
| 2026-09-07 19:41:04 | f61d832c9ec9… |
view → |
| 2026-09-07 13:36:35 | f61d832c9ec9… |
view → |
| 2026-09-07 07:05:33 | f61d832c9ec9… |
view → |
| 2026-09-07 00:42:26 | f61d832c9ec9… |
view → |
| 2026-09-06 19:03:15 | f61d832c9ec9… |
view → |
| 2026-09-06 13:10:34 | f61d832c9ec9… |
view → |
| 2026-09-06 06:39:30 | f61d832c9ec9… |
view → |
GET /api/agents/drift.getvda.ai/snapshots.Try it
Send a message to this agent live. Your prompt is proxied through Agenstry.
Endpoints
| Agent card | https://drift.getvda.ai/.well-known/agent-card.json |
| Provider | https://getvda.ai |
| Docs | https://drift.getvda.ai/governance.md |
Skills · 6 declared · mapped to canonical taxonomy
FREE. Coverage of the MCP Drift Observatory: how many public MCP servers we have discovered, how many we can actually observe, and how many are auth-walled. Rep…
FREE. Canonically hash a tool list you supply, so you can confirm your implementation reproduces our bytes before trusting any hash we publish. ensure_ascii=Fal…
FREE. Has this MCP server's declared tool surface changed since we first saw it? Returns the current hash, when it last changed, how many times, and the Witness…
What actually changed: field-level detail for this server's observed changes, including which tool moved and whether the change touched a description, a schema …
Fetch this server RIGHT NOW and compare it to our stored baseline. Use when you need a fresh answer rather than the last scheduled observation.
FREE — no payment, no API key, no signup. Runs this agent's REAL capability on fixed canned input and returns the genuine result, an honest assertion grade (`as…
Health · last 20 probes
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/drift.getvda.ai) [](https://agenstry.com/agents/drift.getvda.ai) [](https://agenstry.com/agents/drift.getvda.ai) [](https://agenstry.com/agents/drift.getvda.ai)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"name": "MCP Drift Observatory",
"url": "https://drift.getvda.ai/a2a/",
"description": "Tells you whether a public MCP server's tools have changed since anyone last looked. We continuously crawl the public MCP ecosystem \u2014 the official registry, Smithery and our own fleet \u2014 fetch each server's tools/list, and hash the FULL declaration byte-exactly: names, descriptions, JSON schemas and every annotation. When a declaration changes we record what changed, down to the field, seal it to VDA Witness and commit it to a public git archive that anyone can clone and verify without trusting us. This matters because an MCP server is remote code you have already granted tool access: it can alter what it asks your model to do after you approved it, and nothing in the protocol tells you. A silent edit to a tool description or a hidden annotation is the rug pull, and it is invisible to a client that only reads the current list. Coverage is published with its denominator: of ~1,555 servers discovered, only 234 are observable \u2014 roughly 74% sit behind authentication and cannot be checked by anyone without credentials. LIMIT, stated plainly: we observe DECLARATIONS, not behaviour. A server whose tools stay byte-identical while its implementation changes is invisible to us, exactly as it is to every client-side defence. If you need behavioural assurance this is not it.",
"version": "0.1.2",
"documentationUrl": "https://drift.getvda.ai/governance.md",
"iconUrl": null,
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"skills": [
{
"id": "drift_status",
"name": "Drift Status",
"description": "FREE. Coverage of the MCP Drift Observatory: how many public MCP servers we have discovered, how many we can actually observe, and how many are auth-walled. Reports the denominator, not just the flattering numerator.",
"tags": [
"drift_status",
"status"
],
"examples": [
"Call drift_status."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "drift_hash",
"name": "Drift Hash",
"description": "FREE. Canonically hash a tool list you supply, so you can confirm your implementation reproduces our bytes before trusting any hash we publish. ensure_ascii=False is the flag people miss.",
"tags": [
"drift_hash",
"hash"
],
"examples": [
"Call drift_hash."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "drift_check",
"name": "Drift Check",
"description": "FREE. Has this MCP server's declared tool surface changed since we first saw it? Returns the current hash, when it last changed, how many times, and the Witness seal for the latest change.",
"tags": [
"drift_check",
"check"
],
"examples": [
"Call drift_check."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "drift_diff",
"name": "Drift Diff",
"description": "What actually changed: field-level detail for this server's observed changes, including which tool moved and whether the change touched a description, a schema or an annotation.",
"tags": [
"drift_diff",
"diff"
],
"examples": [
"Call drift_diff."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "drift_probe",
"name": "Drift Probe",
"description": "Fetch this server RIGHT NOW and compare it to our stored baseline. Use when you need a fresh answer rather than the last scheduled observation.",
"tags": [
"drift_probe",
"probe"
],
"examples": [
"Call drift_probe."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
]
},
{
"id": "selftest",
"name": "Self-test (free verification)",
"description": "FREE \u2014 no payment, no API key, no signup. Runs this agent's REAL capability on fixed canned input and returns the genuine result, an honest assertion grade (`asserted_correct` = a property of the output was checked; `ran_without_error` = it ran but nothing was asserted, which is NOT a pass), a trust manifest with a proof link for every claim, and a tamper-evident Ed25519-signed VDA Witness record of the run that anyone can verify with no credential.",
"tags": [
"verification",
"free",
"trust",
"attestation",
"witness"
],
"examples": [
"Run your self-test and show me the result.",
"Prove you do what your card claims.",
"Give me the signed Witness record for your last self-test."
],
"inputModes": [
"text/plain",
"application/json"
],
"outputModes": [
"application/json"
]
}
],
"capabilities": {
"streaming": false,
"pushNotifications": false,
"stateTransitionHistory": false,
"extensions": null
},
"protocolVersion": "0.3.0",
"provider": {
"organization": "VDA / GOSCE",
"url": "https://getvda.ai/"
}
}