BotsRated: MCP server
Signed checks of paid AI services, before your agent pays.
BotsRated measures paid AI-agent services with signed receipts. BotPulse is a separate digest and alerts product; these measurements do not claim coverage of every delivery outcome.
BotsRated publishes timestamped, receipt-backed measurements of paid x402 agent services on Base:
- unpaid probes: status, whether the 402 challenge is valid, latency, quoted vs listed price, and payTo;
- paid test-buys, each with its on-chain tx hash.
It reports facts only. No grade or index is shown until a host has 3 paid test-buys on 3 different days.
This repository documents the remote MCP server. There is nothing to install or run locally.
Tools
Facts bundle (preflight and check)
preflight (the MCP tool and GET /v1/preflight?url=<host>) returns measurements and receipt links. You set your own
thresholds. The response has no score and no grade.
check (paid, after the free daily quota) adds measured facts for one host and the last receipts. Those are still
measurements and receipt links, not a score.
The payment guard in @botsrated/x402-preflight and botsrated keeps a smaller local bundle from this response
(covered, host, knownPayTos / known_pay_tos, listingPayTo / listing_pay_to, observedNetwork /
observed_network, observedAmount / observed_amount, stale, receiptUrl / receipt_url). Pick a named preset
(warn, carefulBuyer, or dry-run-only) there. The guard does not invent a score from these fields.
The paid tools return the x402 URL to call. Any x402 client can pay them, for example @x402/fetch or the Coinbase Agentic Wallet. All three paid routes are also listed in the Coinbase x402 Bazaar.
Free daily quota: the first 25 checks and 3 reports per client IP (IPv6 per /48) per UTC day are answered without payment; after that the normal x402 402 applies. /v1/find spends one check from that same quota. /v1/best has no free quota. Preflight stays free, no key, rate limits. No accounts, prepaid balances or stored credit. The badge is free and earned, never sold. Details: https://botsrated.com/pricing
Free HTTP endpoints and pages
Plans (seller alerts and data plans)
One x402 USDC payment on Base buys one 30-day period. There is no balance and no auto-renewal. Cancelling stops delivery. The dataset stays free.
Subscribe with POST https://botsrated.com/v1/alerts/subscribe (free) or POST https://botsrated.com/v1/subscribe/{plan} (x402). The body and the webhook are checked before any 402. The webhook must answer the verification POST with the challenge; it must be https on a public DNS name, and redirects are not followed. Alerts are webhooks only, never email, signed with Ed25519 (botsrated-prober-1, see below) over {"m":"<timestamp>.<raw body>"}. Manage a subscription with GET /v1/subscription and POST /v1/subscription/{cancel,update} plus Authorization: Bearer <token>. Full details: https://botsrated.com/v1/plans
Install
Claude Code:
claude mcp add --transport http botsrated https://botsrated.com/mcp
Cursor / Windsurf / Cline / any client that takes a JSON config:
{
"mcpServers": {
"botsrated": { "type": "streamableHttp", "url": "https://botsrated.com/mcp" }
}
}
VS Code (.vscode/mcp.json):
{ "servers": { "botsrated": { "type": "http", "url": "https://botsrated.com/mcp" } } }
Changelog
See CHANGELOG.md. Catalog listing copy (not submitted from this file): SUBMISSIONS.md.
Security
Report security issues privately: see SECURITY.md ([email protected], subject "Security"). Contributing: CONTRIBUTING.md.
Methodology, replies
- Methodology: https://botsrated.com/methodology
- A seller can send a reply about a measurement for free: https://botsrated.com/disputes (
POST /v1/dispute). The measurement is re-checked and the reply is published next to the data. A measurement is a signed record, not a finding about the seller. - Dataset signature: https://botsrated.com/dataset.sig.json. Key set: https://botsrated.com/.well-known/botsrated-key
- Receipt format v0.2.1 (draft;
mcp_probereceipts for remote MCP servers; v0.2.1 updates reference schedules and MCP retention) and verifier:spec/SPEC.md,node spec/verify.mjs <receipt.json|url>
Signing keys (Ed25519)
Raw 32-byte public keys, base64. Fingerprint = sha256 of the raw key bytes. A signature is valid for an object whose own timestamp
(ts, or generated_at for snapshots) lies in [valid from, valid until). The live key set at /.well-known/botsrated-key is authoritative; this table is an out-of-band copy to compare against.
Payments are USDC on Base mainnet.