Skip to main content

robinsaige

Check the dependency rating of an MCP tool before your agent calls it.

Humans build agents; agents call tools they've never seen. This is a thin, dependency-free client for Robin Saige — a neutral observatory that probes ~10,000 MCP servers and publishes what they actually are: alive or dead, honest or drifting, a real server or one of 1,300 costumes on a single operator. Ask it before you depend on a stranger's tool.

pip install robinsaige

Read a rating

import robinsaige

r = robinsaige.check("io.github.cyanheads/usaspending-mcp-server")
rating = r["rating"]
print(rating["cluster"])            # e.g. "mid-solo"
print(rating["distinctiveness"])    # 0 = typical, 1 = highly unusual
print(rating["reach"], rating["use"], rating["trust"])

Every figure is a percentile or class within the ~10,813-server census — a dated observation, not a warranty. What it does not claim is spelled out in rating["not_claimed"].

Find the right tool

Don't know the name? Search by what you need — ranked by rating, so trustworthy live servers come first.

res = robinsaige.find_tools("US tariff data")
for r in res["results"][:5]:
    print(r["cluster"], r["server"], r["matched_tools"])

Gate a tool call

Put a TrustGate in front of tool dispatch. It never silently allows a tool it couldn't rate — the default on a missing rating is warn, not allow.

from robinsaige import TrustGate, Blocked

gate = TrustGate()                        # sensible default policy

d = gate.assess("some.registry/name")
if d.ok:
    call_the_tool()                       # allow or warn
else:
    skip_it(d.reason)                     # blocked: dead-listing / unreachable / not-mcp / rate-limited

# or enforce — raises Blocked on a blocked cluster:
try:
    gate.guard("some.registry/name")
except Blocked as b:
    ...

Report how a call went (the tap)

Reading a rating and contributing one are the same install. Wrap a tool call in gate.tap(...) — it times the call and fire-and-forgets a report on exit. The observatory anchors every report to its own probe (a "worked" report on a server it saw dead is discarded) and reports do not move the verdict — they accumulate. Reporting failures are swallowed; the tap never breaks your agent.

with gate.tap("some/server", tool="lookup") as t:
    result = call_the_tool()
    t.ok = looks_good(result)     # optional; defaults to "no exception raised"

Policy is yours to widen or narrow:

gate = TrustGate(
    block={"dead-listing", "unreachable", "farm-costume"},   # refuse these
    warn={"stale-thin-solo", "auth-walled"},                 # warn on these
    on_missing="block",                                      # unrated = refused
)

Command line

robinsaige pulse                       # the whole ecosystem at a glance
robinsaige find tariff                 # discover a server by name fragment
robinsaige check io.github.you/mcp     # full rating (JSON)
robinsaige gate io.github.you/mcp      # ALLOW / WARN / BLOCK  (exit 2 if blocked)

What the clusters mean

dead-listing a registry entry pointing at a 404 · farm-costume many names, one operator · walled-opaque a login with no legible challenge · stale-thin old protocol, few tools · rich-fast-solo a large, quick, independent server. Browse them all at robinsaige.com/spectrum.

Honesty

Robin Saige is a signal, not a gate — it publishes its method and raw data so you can recompute and disagree. This client is stdlib-only on purpose: a trust tool should add zero dependencies. It is a dated observation, never a guarantee; auth-walled internals are unverified from outside.

MIT licensed.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robinsaige-0.4.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robinsaige-0.4.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file robinsaige-0.4.0.tar.gz.

File metadata

  • Download URL: robinsaige-0.4.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for robinsaige-0.4.0.tar.gz
Algorithm Hash digest
SHA256 5f535f4bd8d7d9bf8e4ac837a9263fb35b95bbef2ca5888e9d221514327f9735
MD5 f64bec7b55ba46f50ec670f0402098c8
BLAKE2b-256 1574513276a87da6392c079aaa23bbdfe2ad56bfb99f149b4b9a620eb2908802

See more details on using hashes here.

File details

Details for the file robinsaige-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: robinsaige-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for robinsaige-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b3cce5f37797e39ca5bcfd9fb737613e0ff8df384b1939016afcae0eca0203d
MD5 b5dae7faf4115d3b8a5c79b063d47687
BLAKE2b-256 a81e1c30bdb1df0c6964341148423b89d63a4ce8f1b701d73bc23d69b15f5773

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.0

2 files

0.5.0

2 files

0.4.1

2 files

This release

0.4.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page