MCP tool observatory: do registry servers answer, and are their answers true? No key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
What changed in the tool economy since a date: verdict flips, deaths, revivals, new servers, confirmed drift — the census diff as data. Poll this weekly to keep a local view current without re-crawling.
YYYY-MM-DD; omit for the whole latest diff
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
What changed in the tool economy since a date: verdict flips, deaths, revivals, new servers, confirmed drift — the census diff as data. Poll this weekly to keep a local view current without re-crawling.
| Argument | Type | Description |
|---|---|---|
| since | string | YYYY-MM-DD; omit for the whole latest diff |
{
"type": "object",
"properties": {
"since": {
"type": "string",
"description": "YYYY-MM-DD; omit for the whole latest diff"
}
}
}The FULL evidence behind the verdict for ONE server, by exact registry name — call should_i_use first for the one-word decision; call this when you want the whole record. Leads with the verdict (allow/warn/block), then the `rating` grouped as REACH (answers, latency vs population, protocol, auth), USE (tool count vs population, capability breadth, harness readiness) and TRUST (costume-farm?, duplicate inventory?, verifiability grade, drift / rug-pull, and where checkable whether its ANSWERS are true vs a public primary), a cluster tag, a distinctiveness score, and an explicit not_claimed block. Argument: name.
| Argument | Type | Description |
|---|---|---|
| name* | string | exact registry name, e.g. io.github.you/your-mcp |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "exact registry name, e.g. io.github.you/your-mcp"
}
}
}Find and RANK the trustworthy tool for a NEED. Describe the task in plain words ('screen a company for sanctions', 'US tariff data', 'vessel tracking') — the search is full-text over tool names AND their stored descriptions (stemmed, BM25-ranked), so your words need not appear in any tool's name. Servers come best-rated first, and EACH ROW carries its verdict (allow/warn/block), cluster, distinctiveness and the matching tool names, so you can pick without a second call. Alive, non-costume, current-protocol servers rank on top; dead / costume-farm / walled ones sink. Argument: need.
| Argument | Type | Description |
|---|---|---|
| need* | string | what the tool should do, in plain words |
| nature | string | only servers whose dominant tool nature is this (see robinsaige.com/verification) |
| verdict | string | only servers with this verdict |
| free_only | boolean | exclude servers that demand payment at the handshake |
| open_only | boolean | exclude auth-walled servers |
| max_latency_ms | integer | only servers at or under this probe latency |
{
"type": "object",
"required": [
"need"
],
"properties": {
"need": {
"type": "string",
"description": "what the tool should do, in plain words"
},
"nature": {
"enum": [
"retrieval-public",
"retrieval-private",
"action",
"generative",
"predictive",
"computational",
"orchestration"
],
"type": "string",
"description": "only servers whose dominant tool nature is this (see robinsaige.com/verification)"
},
"verdict": {
"enum": [
"allow",
"warn",
"block"
],
"type": "string",
"description": "only servers with this verdict"
},
"free_only": {
"type": "boolean",
"description": "exclude servers that demand payment at the handshake"
},
"open_only": {
"type": "boolean",
"description": "exclude auth-walled servers"
},
"max_latency_ms": {
"type": "integer",
"description": "only servers at or under this probe latency"
}
}
}The observatory's ruled findings — each with its claim and its falsification test — plus the public corrections log (what we published, then corrected, never deleted). Call this to cite what has been established, or to see where we were wrong. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}Call this FIRST for the state of the MCP tool ecosystem in one shot: how many servers exist, how many actually answer a real handshake, how many are behind a login, the largest costume-farm concentration, AND the Tier-2 truth summary (how many server answers were re-derived against a public primary source and matched). Every number is re-derivable; grades observed/reported/derived. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}AFTER your agent calls a tool, fire-and-forget how it went — success/failure, latency, cost — so the observatory accumulates realized reliability (the one thing outside-in probing can't see: did it actually work for a real call). Anchored against our own probe: a 'worked' report on a server we saw dead is discarded. Does NOT change the current rating yet (probing stays load-bearing) — this is accumulate-ahead-of-demand. Args: server (required), tool, ok, latency_ms, cost_tokens, call_hash (a hash binding the report to a real call).
| Argument | Type | Description |
|---|---|---|
| ok | boolean | |
| tool | string | |
| server* | string | exact registry name |
| call_hash | string | |
| latency_ms | integer | |
| cost_tokens | integer |
{
"type": "object",
"required": [
"server"
],
"properties": {
"ok": {
"type": "boolean"
},
"tool": {
"type": "string"
},
"server": {
"type": "string",
"description": "exact registry name"
},
"call_hash": {
"type": "string"
},
"latency_ms": {
"type": "integer"
},
"cost_tokens": {
"type": "integer"
}
}
}Resolve a partial or misspelled server name to its EXACT registry id before calling should_i_use / check_server. Matches a fragment against registry NAMES only (not capabilities — for 'which tool does X' use find_tools). Returns candidate exact names with each one's latest liveness outcome. Empty query rejected.
| Argument | Type | Description |
|---|---|---|
| query* | string | a fragment of a registry name, e.g. 'tariff' |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "a fragment of a registry name, e.g. 'tariff'"
}
}
}THE GATE — call this before your agent depends on a tool you don't already trust. Give an exact server registry name and get a one-word verdict — allow / warn / block — with the reason, plus the full rating underneath. 'block' = dead/unreachable/costume-farm-shaped, don't depend on it; 'warn' = usable but look first; 'allow' = safe to depend on. If you have a NEED not a name, use find_tools; if you have a fuzzy name, use resolve_server_name. Argument: name, e.g. 'com.trimtabist/us-tariff-ledger'.
| Argument | Type | Description |
|---|---|---|
| name | string | exact registry name, e.g. io.github.you/your-mcp |
| names | array | batch form: vet a whole config at session start (max 20) |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "exact registry name, e.g. io.github.you/your-mcp"
},
"names": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "batch form: vet a whole config at session start (max 20)"
}
}
}