# 402xAgent

> Check an x402 endpoint before your agent pays: pay, skip or recheck. Plus a verified x402 catalog.

- name: io.github.withgrokbot/verified-catalog
- version: 0.32.2
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 66/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.withgrokbot%2Fverified-catalog
- tools: https://api.protogrid.dev/v1/servers/io.github.withgrokbot%2Fverified-catalog/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "verified-catalog": {
      "type": "http",
      "url": "https://api.402xagent.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-97% +updated-7d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 66/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- warn `tools.annotations`: only 5 of 7 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 5 of 7 tools declare all four hints; missing: get_overnight_cos_pack (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); endpoint_spot_check (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
- pass `tools.token_cost`: about 2,581 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 12 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 7, about 2,581 tokens to load them all
- tool set hash: 97fb9bba8e236eb91424aae81ebc18fb
- tools last changed: 2026-10-16T19:53:48.281Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.withgrokbot/verified-catalog.svg)](https://protogrid.dev/servers/io.github.withgrokbot/verified-catalog)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `payment_status` added
  - After you pay an x402 endpoint (Base USDC, EIP-3009 exact): did the payment land, and is it safe to sign a new one? Give payment_payload (the base64 PAYMENT-SIGNATURE you sent), or tx_hash, or from + nonce (+ valid_before). Returns status landed|not_landed|pending|canceled|unknown, safe_to_retry_same_payload (always true: a nonce is single-use), safe_to_resign (true only when two independent RPC sources agree the nonce is unused AND validBefore has passed), tx details, terms match, a claim pointer and a signed receipt. Same 5 free per UTC day as endpoint_spot_check (client=vc-mcp), then $0.02 USDC on Base via x402 (forward PAYMENT-SIGNATURE).
- 2026-10-16 `endpoint_spot_check` changed (description)
  - before: Decision-shaped SSRF-safe 402xAgent check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Every answer has reason_code (stable code) and confidence (high|medium|low); rules: https://402xagent.com/rules.json. History: stable_for_days, last_changed, drift. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. No 402 terms is skip/no_paywall (recheck/free_trial_active when the target sends x-free-trial headers); recheck only for timeouts, 5xx and network errors; wrong or unsupported network, non-canonical USDC or a pay_to that differs from the listing is skip. The same normalized URL + method reuses one probe for 5 min, so consecutive calls agree. mode=dry-run: free dry run (nothing signed or paid, stored as a public receipt, no approval hash, 50/caller/day). Never pays the target (probe GET only). 5 free checks per client per UTC day (at most 25 per network) (client=vc-mcp), then $0.01 to $0.25 USDC (one tenth of the target's quoted price) on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
  - after: Decision-shaped SSRF-safe 402xAgent check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Every answer has reason_code (stable code) and confidence (high|medium|low); rules: https://402xagent.com/rules.json. History: stable_for_days, last_changed, drift. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. No 402 terms is skip/no_paywall (recheck/free_trial_active when the target sends x-free-trial headers); recheck only for timeouts, 5xx and network errors; wrong or unsupported network, non-canonical USDC or a pay_to that differs from the listing is skip. The same normalized URL + method reuses one probe for 5 min, so consecutive calls agree. mode=dry-run: free dry run (nothing signed or paid, stored as a public receipt, no approval hash, 50/caller/day). Never pays the target (probe GET only). 5 free checks per client per UTC day (at most 25 per network) (client=vc-mcp), then $0.02 USDC a check on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
- 2026-10-10 `endpoint_spot_check` changed (description)
  - before: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.01 to $0.25 USDC (one tenth of the target's quoted price) on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
  - after: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. A 2xx with no payment terms is recheck (reason no_terms_seen, or free_trial_active when the target sends x-free-trial headers), not skip. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.01 to $0.25 USDC (one tenth of the target's quoted price) on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
- 2026-10-09 `endpoint_spot_check` changed (description, inputSchema)
  - before: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Returns only verdict (pay|skip|recheck), reason, quoted_price_usd, claimed_price_usd, and access. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.01 to $0.25 USDC (one tenth of the target's quoted price) on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
  - after: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.01 to $0.25 USDC (one tenth of the target's quoted price) on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
- 2026-10-09 `get_receipt` added
  - Free: read a public Spot-Check receipt. Give id (sc-... from endpoint_spot_check's receipt_id, or a 10-hex crawl id) or url (latest live + crawl receipt for that URL). Receipts hold the listing URL, the live 402 terms, verdict, reason, timestamp. Does not run a fresh check (use endpoint_spot_check for that).
- 2026-10-08 `endpoint_spot_check` changed (description)
  - before: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Returns only verdict (pay|skip|recheck), reason, quoted_price_usd, claimed_price_usd, and access. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.25 USDC on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
  - after: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Returns only verdict (pay|skip|recheck), reason, quoted_price_usd, claimed_price_usd, and access. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.01 to $0.25 USDC (one tenth of the target's quoted price) on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
- 2026-10-06 `endpoint_spot_check` changed (description, inputSchema)
  - before: SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Returns reachable, http_status, latency_ms, parsed accepts summary, quoted_price_usd, and optional price_matches_claimed. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp for this tool), then $0.25 USDC on Base via x402. Unpaid after free quota: returns payment instructions + free remaining. Forward PAYMENT-SIGNATURE to run a paid check.
  - after: Decision-shaped SSRF-safe spot-check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Returns only verdict (pay|skip|recheck), reason, quoted_price_usd, claimed_price_usd, and access. Never pays the target (probe GET only). 1 free check per client per UTC day (client=vc-mcp), then $0.25 USDC on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
- 2026-10-06 `lookup` changed (description, inputSchema, annotations) **meaning changed**
  - before: Is an x402 endpoint reliable for a task at a price? Asks the catalog's lookup service for services matching a task at or under max_price_usd, sorted by known-answer pass rate over the last n paid calls, then price. Each result has its paid receipts (time, tx, Basescan link, charged, delivered, pass/fail), last check time and a stale flag. Services broken on the seller's side come back under facts_only, not sorted. Sends client=vc-mcp: 5 free lookups per UTC day for that client name, then the service answers HTTP 402 (x402, $0.02 USDC on Base), which this tool reports but does not pay. Payment never changes results, sort order or listings.
  - after: Rank x402 endpoints for a known task at or under a price: "which endpoint should I pay for task X at <= $Y?". Prefer it over search_catalog (keyword browsing, unranked) and get_service (one id's raw record). No auth or API key. Calls the hosted lookup service as client=vc-mcp; all MCP users share that client's 5 free lookups per UTC day (reset 00:00 UTC), after which the tool returns an error reporting the HTTP 402 ($0.02 USDC on Base via x402) and never pays. Returns results sorted by known-answer pass_rate over the last n paid calls, then price, each with price_usd, pass_rate, last_check_at, last_check, stale and receipts (time, tx, basescan_url, charged_usd, delivered, quality); seller-broken services come unsorted under facts_only. No match: empty results, matched 0. Needs task or endpoint; invalid params return an error. Payment never changes results.
- 2026-10-06 `get_service` changed (description, inputSchema, annotations) **meaning changed**
  - before: Get the full catalog record for one service id, including its latest check and raw log link.
  - after: Fetch the complete catalog record for one known service id (e.g. from search_catalog or lookup results). Use search_catalog to find ids and lookup to rank services for a task; get_service has no per-call receipts, so for receipts with tx and Basescan links call lookup with endpoint=<id>. Read-only. No auth or API key; free, no quota (reads the same catalog snapshot as search_catalog). Returns the record as published: id, name, provider, category, description, endpoint, advertised_price (USD, atomic, asset, network), sample_request, tasks, quality_test (known-answer test, facts_only flag and reason), paid_receipts (count), latest (full last check incl. x402_challenge, error, raw_log_url), history_summary and page_url. Unknown or missing id: error "no service with id ...".
- 2026-10-06 `search_catalog` changed (description, inputSchema, annotations) **meaning changed**
  - before: Search pay-per-call (x402) agent services in the verified catalog. Returns factual latest-check results (reachable, latency, advertised vs quoted price). No grades.
  - after: Browse or keyword-search the verified catalog of pay-per-call (x402) agent services. Use it when you don't know the task name or want to see what exists; use lookup to rank endpoints for a known task at a max price, and get_service for one id's full record. Read-only. No auth or API key; free, no quota or per-client limit: it only reads the catalog snapshot (bundled catalog.json in the local server, the published catalog.json on remote /mcp). Returns {count, results, generated_at, note, methodology_url}; results are in catalog order, ungraded, each with id, name, category, endpoint, advertised_price_usd, page_url and latest (checked_at, reachable, http_status, latency_ms, quoted_price_usd, price_matches_listing, charged_price_usd, delivered_valid, raw_log_url). No match: count 0, empty results. A non-numeric max_price_usd or limit returns an error.

Full history: https://api.protogrid.dev/v1/servers/io.github.withgrokbot%2Fverified-catalog/changes

## Remotes

- https://api.402xagent.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.9444444)
- https://verified-catalog-lookup.withgrokbot.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.9692308)

## Packages

_none_

## Tools (7)

- `endpoint_spot_check`: Decision-shaped SSRF-safe 402xAgent check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge. Every answer has reason_code (stable code) and confidence (high|medium|low); rules: https://402xagent.com/rules.json. History: stable_for_days, last_changed, drift. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. No 402 terms is skip/no_paywall (recheck/free_trial_active when the target sends x-free-trial headers); recheck only for timeouts, 5xx and network errors; wrong or unsupported network, non-canonical USDC or a pay_to that differs from the listing is skip. The same normalized URL + method reuses one probe for 5 min, so consecutive calls agree. mode=dry-run: free dry run (nothing signed or paid, stored as a public receipt, no approval hash, 50/caller/day). Never pays the target (probe GET only). 5 free checks per client per UTC day (at most 25 per network) (client=vc-mcp), then $0.02 USDC a check on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.
- `get_overnight_cos_pack`: Buy and download the Overnight Chief of Staff Setup Pack ($9 USDC on Base via x402): 5 ready-to-paste bot prompts, an HTML morning-briefing template, and a PDF setup guide. Always paid — no free quota. Call without PAYMENT-SIGNATURE to receive payment requirements and the HTTP endpoint URL. Agents pay by retrying the HTTP endpoint (or this MCP call) with a PAYMENT-SIGNATURE header holding a signed USDC EIP-3009 authorization.
- `get_receipt`: Free: read a public 402xAgent receipt. Give id (sc-... from endpoint_spot_check's receipt_id, or a 10-hex crawl id) or url (latest live + crawl receipt for that URL). Receipts hold the listing URL, the live 402 terms, verdict, reason, reason_code, confidence, history summary, timestamp, and a status-badge embed snippet (badge.markdown / badge.html). Does not run a fresh check (use endpoint_spot_check for that).
- `get_service`: Fetch the complete catalog record for one known service id (e.g. from search_catalog or lookup results). Use search_catalog to find ids and lookup to rank services for a task; get_service has no per-call receipts, so for receipts with tx and Basescan links call lookup with endpoint=<id>. Read-only. No auth or API key; free, no quota (reads the same catalog snapshot as search_catalog). Returns the record as published: id, name, provider, category, description, endpoint, advertised_price (USD, atomic, asset, network), sample_request, tasks, quality_test (known-answer test, facts_only flag and reason), paid_receipts (count), latest (full last check incl. x402_challenge, error, raw_log_url), history_summary and page_url. Unknown or missing id: error "no service with id ...".
- `lookup`: Rank x402 endpoints for a known task at or under a price: "which endpoint should I pay for task X at <= $Y?". Prefer it over search_catalog (keyword browsing, unranked) and get_service (one id's raw record). No auth or API key. Calls the hosted lookup service as client=vc-mcp; all MCP users share that client's 5 free lookups per UTC day (reset 00:00 UTC), after which the tool returns an error reporting the HTTP 402 ($0.02 USDC on Base via x402) and never pays. Returns results sorted by known-answer pass_rate over the last n paid calls, then price, each with price_usd, pass_rate, last_check_at, last_check, stale and receipts (time, tx, basescan_url, charged_usd, delivered, quality); seller-broken services come unsorted under facts_only. No match: empty results, matched 0. Needs task or endpoint; invalid params return an error. Payment never changes results.
- `payment_status`: After you pay an x402 endpoint (Base USDC, EIP-3009 exact): did the payment land, and is it safe to sign a new one? Give payment_payload (the base64 PAYMENT-SIGNATURE you sent), or tx_hash, or from + nonce (+ valid_before). Returns status landed|not_landed|pending|canceled|unknown, safe_to_retry_same_payload (always true: a nonce is single-use), safe_to_resign (true only when two independent RPC sources agree the nonce is unused AND validBefore has passed), tx details, terms match, a claim pointer and a signed receipt. Same 5 free per UTC day as endpoint_spot_check (client=vc-mcp), then $0.02 USDC on Base via x402 (forward PAYMENT-SIGNATURE).
- `search_catalog`: Browse or keyword-search the verified catalog of pay-per-call (x402) agent services. Use it when you don't know the task name or want to see what exists; use lookup to rank endpoints for a known task at a max price, and get_service for one id's full record. Read-only. No auth or API key; free, no quota or per-client limit: it only reads the catalog snapshot (bundled catalog.json in the local server, the published catalog.json on remote /mcp). Returns {count, results, generated_at, note, methodology_url}; results are in catalog order, ungraded, each with id, name, category, endpoint, advertised_price_usd, page_url and latest (checked_at, reachable, http_status, latency_ms, quoted_price_usd, price_matches_listing, charged_price_usd, delivered_valid, raw_log_url). No match: count 0, empty results. A non-numeric max_price_usd or limit returns an error.
