verifier
MCP tool observatory: do registry servers answer, and are their answers true? No key.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"verifier": {
"url": "https://robinsaige.com/mcp"
}
}
}遠端端點
https://robinsaige.com/mcpstreamable-http它能做什麼
工具清單
工具(8)
⚪registry_pulse
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.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢should_i_use(name, names)
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'.
輸入結構描述
{
"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)"
}
}
}🟢find_tools(need, verdict, free_only, open_only, max_latency_ms, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"need": {
"type": "string",
"description": "what the tool should do, in plain words"
},
"verdict": {
"type": "string",
"enum": [
"allow",
"warn",
"block"
],
"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"
},
"nature": {
"type": "string",
"enum": [
"retrieval-public",
"retrieval-private",
"action",
"generative",
"predictive",
"computational",
"orchestration"
],
"description": "only servers whose dominant tool nature is this (see robinsaige.com/verification)"
}
},
"required": [
"need"
]
}🟢resolve_server_name(query)
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.
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "a fragment of a registry name, e.g. 'tariff'"
}
},
"required": [
"query"
]
}🟢check_server(name)
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.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "exact registry name, e.g. io.github.you/your-mcp"
}
},
"required": [
"name"
]
}🟡report_call(server, tool, ok, latency_ms, cost_tokens, ...)
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).
輸入結構描述
{
"type": "object",
"properties": {
"server": {
"type": "string",
"description": "exact registry name"
},
"tool": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"latency_ms": {
"type": "integer"
},
"cost_tokens": {
"type": "integer"
},
"call_hash": {
"type": "string"
}
},
"required": [
"server"
]
}🟢changes_since(since)
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.
輸入結構描述
{
"type": "object",
"properties": {
"since": {
"type": "string",
"description": "YYYY-MM-DD; omit for the whole latest diff"
}
}
}🟢list_findings
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.
輸入結構描述
{
"type": "object",
"properties": {}
}社群
證據