# 402xAgent (remote · api.402xagent.com)

Check an x402 endpoint before your agent pays: pay, skip or recheck, with Ed25519-signed receipts.

- Trust score: 68/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.402xagent.com`: 68/100 (this document), [markdown](https://verifymcp.io/servers/withgrokbot-verified-catalog/api.md), [page](https://verifymcp.io/servers/withgrokbot-verified-catalog/api)

## Channel facts

- Endpoint: `https://api.402xagent.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.59.10`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 4 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3283 tokens (~273/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 90% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the 402xAgent MCP server?

402xAgent is a hosted endpoint at https://api.402xagent.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http withgrokbot-verified-catalog 'https://api.402xagent.com/mcp'
```

### Cursor

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

### VS Code

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

### Codex

```toml
[mcp_servers.withgrokbot-verified-catalog]
url = "https://api.402xagent.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "withgrokbot-verified-catalog": {
      "type": "remote",
      "url": "https://api.402xagent.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add withgrokbot-verified-catalog --url 'https://api.402xagent.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  withgrokbot-verified-catalog:
    url: "https://api.402xagent.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "withgrokbot-verified-catalog": {
      "Transport": "http",
      "Url": "https://api.402xagent.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add withgrokbot-verified-catalog -t streamable-http -u 'https://api.402xagent.com/mcp'
```

### Other

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

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 68, 0)

- [functional] Server version: 0.63.0 → 0.66.1
- [functional] New tool “pdf_tables”

### 2026-11-04 (score 68, +1)

- [functional] Server version: 0.62.0 → 0.63.0
- [functional] New tool “page_to_markdown”

### 2026-11-03 (score 67, 0)

- [functional] Server version: 0.59.5 → 0.62.0

### 2026-11-02 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 65, 0)

- [functional] Server version: 0.58.9 → 0.59.5

### 2026-10-29 (score 65, +1)

- [functional] Server version: 0.58.7 → 0.58.9
- [functional] Server version: 0.57.0 → 0.58.7

### 2026-10-28 (score 64, 0)

- [security] Tool “endpoint_spot_check” rewrote its description, which is the text the model reads
- [security] Tool “discover” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 261 → 296
- [functional] Server version: 0.51.4 → 0.57.0
- [cosmetic] “endpoint_spot_check” added an optional parameter “quote”

## MCP tools (12)

### `search_catalog` (~382 tokens)

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.

Input parameters:

- `category` (string): Optional. Case-insensitive substring of the service category, e.g. "web search", "news", "on-chain data", "weather", "public records", "utility".
- `limit` (integer): Optional. Maximum number of results, 1-100 (default 20).
- `max_price_usd` (number): Optional. Keep services whose advertised price per call is at or below this many USD, e.g. 0.01.
- `query` (string): Optional. Space-separated words; every word must appear (case-insensitive) in the service id, name, category, description or provider. Omit to list all. Examples: "search", "crypto news".
- `reachable_only` (boolean): Optional (default false). If true, keep only services that were reachable in the latest check.

### `get_service` (~224 tokens)

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 ...".

Input parameters:

- `id` (string, required): Exact, case-sensitive catalog service id as returned by search_catalog or lookup, e.g. "exa-search", "x402tap-weather", "onesource-erc20-balance".

### `lookup` (~488 tokens)

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.

Input parameters:

- `endpoint` (string): A catalog service id (e.g. exa-search) or endpoint URL, to get one service's receipts instead of a whole task. Required unless task is given; can be combined with task.
- `limit` (integer): Optional. Maximum ranked services in results, 1-20 (default 10; clamped). facts_only is not limited.
- `max_price_usd` (number): Optional. Only services whose listed price per call is at or below this many USD, e.g. 0.01. Negative values are rejected.
- `n` (integer): Optional. Most recent paid receipts per service used for pass_rate and returned, 1-20 (default 5; out-of-range values are clamped).
- `payer` (string): Optional 0x wallet address (40 hex characters), recorded so a later payment from it to a returned vendor can be matched on-chain. Nothing is charged; a malformed address returns an error.
- `task` (string): Task name from /v1/tasks, e.g. web-search, crypto-news, news, weather, token-balance, sec-filings, fx-rates, url-check. Case-insensitive; a known name matches exactly, an unknown one falls back to ma…

### `get_overnight_cos_pack` (~111 tokens)

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` (~134 tokens)

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).

Input parameters:

- `id` (string): receipt id
- `url` (string): endpoint URL exactly as checked

### `endpoint_spot_check` (~892 tokens)

Decision-shaped 402xAgent check of a public URL (private, loopback and link-local addresses blocked on every redirect hop) 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, network errors and (0.55.0) HTTP 429 (rate_limited), a 403 with a firewall/WAF challenge signature (waf_challenge) or a host that still does not resolve after one retry (dns_error); after 24 h (TRANSIENT_SKIP_AFTER_HOURS) of only those rechecks the endpoint falls back to skip (*_persistent); (0.56.0) recheck/timeout when the whole probe (redirects + body) exceeds PROBE_TIMEOUT_MS (default 8000 ms), and recheck/host_unstable while the per-host circuit breaker is open (3 failed probes of the host in 10 min -> 15 min pause; target not fetched, no free check used, never charged); (0.57.0) before a live pay (after the free check or payment is accepted) a second quick probe of the same target must read the same 402 terms (scheme, network, asset, payTo; amount within 1%): different terms are recheck/terms_unstable, a failed confirm probe is its own recheck (server_error, timeout, unreachable); same price and free check; a plain 403 stays skip/no_paywall; 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 (nothi…

Input parameters:

- `claimed_price` (number): optional claimed USD price to compare vs quoted
- `method` (string): optional: probe the target with POST (empty JSON body) for POST-only endpoints
- `mode` (string): optional: dry-run = free dry run: one unpaid probe, nothing signed or paid, always stored as a public receipt (check_type dry-run). Returns the free-tier shape with payment_terms_sha256 null (never a…
- `network` (string): optional: the CAIP-2 network you expect, e.g. eip155:8453
- `pay_to` (string): optional: the wallet you expect to pay (from your listing)
- `quote` (string): optional (0.54.0): the receipt id you were quoted (a discover/crawl id, 10 hex, or a live sc- id). If the live terms (price, pay_to, network, asset) differ from it, the answer is recheck/terms_change…
- `ref` (string): optional attribution tag stored on the receipt (dry-run-<caller> sets mode=dry-run)
- `task` (string): optional task label (ignored in decision output)
- `url` (string, required): public http(s) URL to probe

### `payment_status` (~247 tokens)

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).

Input parameters:

- `from` (string)
- `nonce` (string)
- `payment_payload` (string): base64 PAYMENT-SIGNATURE / X-PAYMENT value of the payment you sent
- `seller_url` (string): the URL you paid
- `tx_hash` (string)
- `valid_before` (string): unix seconds (with from + nonce)

### `x402_hygiene` (~85 tokens)

Free x402 hygiene score for an endpoint you run: {score, grade, deductions[{code, points, fix}]} from normal unpaid requests (never pays, never sends bad params). 20 per day per network, cached 24 h. Grades are returned only to you.

Input parameters:

- `url` (string, required): Full http(s) URL of the x402 endpoint.

### `discover` (~222 tokens)

Free discovery of x402 pay-per-call endpoints from 402xAgent's weekly crawl. Returns up to 20 endpoints matching the words in q (URL or source list), each with the verified (quoted) price, network, last_checked, stale flag, verdict pay|skip|recheck with its reason, and a receipt. Skips are included by default; pass verdict to filter. A result older than 36 h is stale; a pay whose terms are older than 7 days (TERMS_MAX_AGE_HOURS) is returned as recheck (reason_code terms_stale). Run endpoint_spot_check right before paying (pass quote=<result receipt_id> to be told if the live terms moved). Read-only, no auth, 60 calls per minute.

Input parameters:

- `limit` (integer)
- `q` (string): Optional. 2-100 chars; space-separated words that must all appear, e.g. "weather" or "crypto price".
- `verdict` (string): Optional filter on the (freshness-adjusted) verdict.

### `endpoint_report` (~181 tokens)

Paid ($0.05 USDC on Base via x402, no free tier): the exact committed snapshots behind endpoint_spot_check's locked teasers: which payment terms changed in the last 30 days, when, from what to what, and the full hygiene checks. Pass the url and the commitment_ref from the free answer's locked_commitments; verify each revealed {snapshot, nonce} against its sha256 digest (docs: https://402xagent.com/docs#endpoint-report).

Input parameters:

- `commitment_ref` (string): locked_commitments.ref from the free check, e.g. cm-0123456789abcdef
- `include_current` (boolean): also return today's stored data under current (not covered by the commitment)
- `url` (string, required): the endpoint URL you checked, e.g. https://api.402rates.com/v1/ping

### `page_to_markdown` (~146 tokens)

Fetch one public web page and return clean, LLM-ready Markdown of its main content (no nav, footers, ads or cookie banners; absolute links; tables kept) plus title, description, links, word_count and token_estimate. Respects robots.txt; skips login walls, paywalls and 401/403 pages (never charged). 3 free pages per day, then $0.002 USDC on Base via x402: retry with the PAYMENT-SIGNATURE header.

Input parameters:

- `format` (string): markdown = url/title/markdown only; json (default) = all fields
- `url` (string, required): http(s) URL of a public page

### `pdf_tables` (~171 tokens)

Extract the tables (CSV, JSON, Markdown) and per-page text from one PDF at a public URL. Digital PDFs ~97% cell accuracy; scanned pages (OCR) ~80%. Priced per page via x402 USDC on Base: $0.005/page with ocr=never, $0.015/page with ocr=auto. Charged only if every page succeeds. Max 20 pages per call. Retry with the PAYMENT-SIGNATURE header.

Input parameters:

- `ocr` (string): never (default, digital PDFs) or auto (OCR scanned pages, 3x price)
- `pages` (string): page range, e.g. 1-3,7 (default: all, max 20)
- `url` (string, required): http(s) URL of a PDF

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/withgrokbot-verified-catalog/api#diagnostics

## Score history

- 2026-11-05: 68
- 2026-11-04: 68
- 2026-11-03: 67
- 2026-11-02: 67
- 2026-11-01: 66
- 2026-10-31: 66
- 2026-10-30: 65
- 2026-10-29: 65
- 2026-10-28: 64
- 2026-10-27: 64
- 2026-10-26: 64
- 2026-10-25: 63
- 2026-10-24: 63
- 2026-10-23: 62
- 2026-10-22: 62
- 2026-10-21: 61
- 2026-10-20: 61
- 2026-10-19: 60
- 2026-10-18: 60
- 2026-10-17: 60
- 2026-10-16: 60
- 2026-10-15: 59
- 2026-10-14: 59
- 2026-10-13: 58
- 2026-10-12: 58

## Common questions

### What is the 402xAgent MCP server?

402xAgent is an MCP server listed in the public MCP registry as io.github.withgrokbot/verified-catalog. Check an x402 endpoint before your agent pays: pay, skip or recheck, with Ed25519-signed receipts. This page covers its hosted endpoint (https://api.402xagent.com/mcp).

### Is the 402xAgent MCP server safe to use?

402xAgent scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the 402xAgent MCP server expose?

402xAgent exposes 12 tools: search_catalog, get_service, lookup, get_overnight_cos_pack, get_receipt, and 7 more. Their descriptions and schemas cost roughly 3,283 tokens of context every time the server is loaded.

### Does the 402xAgent MCP server require authentication?

No. We connected to 402xAgent without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the 402xAgent MCP server still maintained?

402xAgent is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.402xagent.com/mcp
- Repository: https://github.com/withgrokbot/verified-catalog
- Website: https://402xagent.com/
- Changelog RSS feed: https://verifymcp.io/servers/withgrokbot-verified-catalog/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/withgrokbot-verified-catalog/api.json
- HTML version of this page: https://verifymcp.io/servers/withgrokbot-verified-catalog/api
