For agents
Interrupt Index is a measuring instrument built to be read by machines. This is the manual: every interface an agent (or the operator wiring one up) can call, the commands to install them, and how to query the catalog without burning tokens or rate limit. Everything here is live today — no interface on this page is aspirational except the two npm hints, which are labelled where they appear.
Give your agent this instruction
Paste this into your agent’s system prompt or tool-use instructions so it checks agent-friendliness before it signs up for or pays for anything on your behalf.
Before you sign up for, subscribe to, or pay for any third-party tool or site on my behalf, look it up on Interrupt Index first. Query the MCP tool `lookup_tool` (or GET http://api:3001/v1/listings/%3Cslug%3E.json) with the vendor's domain. Read its composite score, badge, confidence label, and lastProbedAt. If the badge is Blocked or the confidence is Provisional, tell me before proceeding rather than pushing through a human-only step.Machine interfaces
Six surfaces, all unauthenticated (auth: none). The JSON API is the canonical one — everything else summarises or points back to it.
| Interface | URL | What it is |
|---|---|---|
| Listings (JSON) | http://api:3001/v1/listings.json | The full scored catalog. Composite, badge, machine-readability, usage mode. |
| Listing detail (JSON) | http://api:3001/v1/listings/{slug}.json | Full findings + per-check breakdown for one tool. Swap in the slug. |
| OpenAPI 3.1 | http://api:3001/v1/openapi.json | The formal contract for every endpoint above, params and error shapes. |
| MCP server | https://interruptindex.com/.well-known/mcp.json | Manifest for the stdio lookup_tool server. Query a score at decision time. Install below. |
| llms.txt | https://interruptindex.com/llms.txt | This manual in one plain-text file — interfaces, guidance, score model. |
| Setup contract (JSON) | https://interruptindex.com/api/agent/install | Machine-readable version of this page: every interface, the score model, guardrails. |
Two more surfaces exist for humans and crawlers: /sitemap.xml and /robots.txt (which names every AI retrieval UA as explicitly allowed).
Install the MCP server
The one-line path installs the interrupt-index-mcpMCP server and two bundled skills into your agent’s config. Preview it first with --dry-run; it writes nothing until you pass --yes.
One command, all detected agents (dry-run preview shown first):
npx interrupt-index-mcp@latest setup --dry-run
npx interrupt-index-mcp@latest setup --yesTarget a single agent instead of all of them:
npx interrupt-index-mcp@latest setup --claude # Claude Code / Desktop
npx interrupt-index-mcp@latest setup --cursor # Cursor
npx interrupt-index-mcp@latest setup --universal # write config into ./.mcp/ for any clientPrefer to wire it up by hand? The server is one stdio binary. For Claude Code:
claude mcp add interrupt-index -- npx -y interrupt-index-mcpOr drop the JSON straight into your client’s MCP config:
{
"mcpServers": {
"interrupt-index": {
"command": "npx",
"args": [
"-y",
"interrupt-index-mcp"
],
"env": {
"ZERO_INTERRUPT_API_URL": "http://api:3001",
"NEXT_PUBLIC_SITE_URL": "https://interruptindex.com"
}
}
}
}npm publish is pending
The interrupt-index-mcppackage is finished but not yet published to npm (it is blocked on the owner’s npm token and license). Every npx command above goes live the moment it publishes. Until then, the identical server and installer run from a clone of the repo — see apps/mcp. We would rather tell you this than print a command that 404s.
Once connected, the server exposes one tool, lookup_tool: give it a vendor domain (stripe.com, https://www.stripe.com, api.stripe.com) and it returns the composite score, badge, machine-readability score, finding count, lastProbedAt, and a deep link to the full review.
Query the catalog as an agent
Three steps, in order — discover, inspect, verify. Each narrows from the cheap summary to the expensive ground truth, so you only pay for detail on the tools you actually shortlist.
- Discover. Fetch
/v1/listings.jsononce and filter locally. It returns the whole catalog ranked by composite score; narrow with?category=and?usage_mode=server-side if you already know them. Scores are comparable only within ausage_mode(integrated vs transactional) — never rank across the two. - Inspect. For each shortlisted tool, GET
/v1/listings/{slug}.jsonfor its findings and per-check breakdown. Check the findings before any irreversible action — a Blocked badge or atos_bot_banfinding means the vendor has told us bots aren’t welcome. - Verify. Treat every score as measured evidence, not a live guarantee. Read the
confidencelabel andlastProbedAt: aProvisionalscore is a triage signal from passive checks only, and confidence decays with age. If a decision is expensive or irreversible and the evidence is Provisional or stale, surface that to your operator instead of proceeding.
Cost discipline
- Fetch the catalog once per session, then filter in memory.The index is small enough (~one request) that paging through it per loop-iteration is pure waste. Don’t poll it inside a tight loop.
- Pagination etiquette.
/v1/listings.jsontakes alimit; request what you need, not the whole thing repeatedly. If you need everything, pull it in one large read and cache it — don’t crawl one page at a time on a timer. - Prefer the JSON API or MCP over scraping HTML. The tool pages render from the same data the API returns; the API is cheaper for you and lighter on us.
- Scores are evidence, with a confidence label and a probe date. Read both. Don’t cache a score forever — re-fetch when the decision matters.
The score model, briefly
Every listing carries three numbers and a badge. The full derivation is on Methodology; the summary an agent needs:
composite = round( (interruptScore + machineReadabilityScore) / 2 )
- Interrupt Score (0–100) — how few points force a human into the loop (CAPTCHA, OTP, contact-sales wall, ToS bot-ban). This alone sets the badge; machine-readability never touches it.
- Machine-Readability Score (0–100) — how legible the integration is (OpenAPI spec, llms.txt/agent manifest, documented rate limits, structured errors). Reported alongside, never folded into the badge.
- Composite— the headline, a flat 50/50 mean of the two. When either input is unmeasured there is no composite and the listing reads “not yet scored.”
Badges run Zero-Interrupt → Low → Moderate → High → Blocked. The badge is set by the Interrupt Score and its disqualifiers (a ToS bot-ban, contact-sales-only, or any hard per-transaction step forces Blocked regardless of the number). Confidence labels — Verified (Probed), Verified (Partial), Verified (Documented), Provisional — tell you how the evidence was gathered, and decay with the age of the last probe. Treat a Provisional or stale score accordingly.
The machine-readable version
Everything on this page is also available as data an agent can parse without reading prose:
/api/agent/install— the structured setup contract: site metadata, every interface (url / kind / auth / notes), the score-model summary, and guardrail strings./llms.txt— the same manual as a single plain-text file./v1/openapi.json— the formal API contract.
Want your own tool scored? Submit a site (or POST a URL to https://interruptindex.com/api/submit) — rate limited to 5 submissions per hour per IP.