# X402 Helper MCP (remote · x402helper.xyz)

API discovery and x402 paid execution via MCP. Search by natural-language, call with USDC payment

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

## Components

- remote · `x402helper.xyz`: 61/100 (this document), [markdown](https://verifymcp.io/servers/xyz-x402helper-mcp/x402helper.md), [page](https://verifymcp.io/servers/xyz-x402helper-mcp/x402helper)

## Channel facts

- Endpoint: `https://x402helper.xyz/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## 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**: 51/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 5 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 check failed: the endpoint is reachable over plaintext HTTP.
  - The HSTS (Strict-Transport-Security) header is present.
  - 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**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1341 tokens (~268/item across 5 items; 5 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (80% of tools); any adoption earns full credit.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "call_endpoint" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the X402 Helper MCP server?

X402 Helper MCP is a hosted endpoint at https://x402helper.xyz/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 xyz-x402helper-mcp 'https://x402helper.xyz/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "xyz-x402helper-mcp": {
      "url": "https://x402helper.xyz/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "xyz-x402helper-mcp": {
      "type": "http",
      "url": "https://x402helper.xyz/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.xyz-x402helper-mcp]
url = "https://x402helper.xyz/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "xyz-x402helper-mcp": {
      "type": "remote",
      "url": "https://x402helper.xyz/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add xyz-x402helper-mcp --url 'https://x402helper.xyz/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  xyz-x402helper-mcp:
    url: "https://x402helper.xyz/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "xyz-x402helper-mcp": {
      "Transport": "http",
      "Url": "https://x402helper.xyz/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add xyz-x402helper-mcp -t streamable-http -u 'https://x402helper.xyz/mcp'
```

### Other

```json
{
  "mcpServers": {
    "xyz-x402helper-mcp": {
      "type": "http",
      "url": "https://x402helper.xyz/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 61, 0)

- [security] Tool “buy_gift_cards” rewrote its description, which is the text the model reads
- [cosmetic] “buy_gift_cards” reworded the description of “prompt”

### 2026-11-04 (score 61, 0)

- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security regression] Tool “day_summary” was removed
- [security] Tool “call_endpoint” rewrote its description, which is the text the model reads
- [security] Tool “get_my_history” rewrote its description, which is the text the model reads
- [security] Tool “search_endpoints” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 243 → 269
- [functional improvement] Tool coverage: 75% → 80%
- [functional] New tool “buy_gift_cards”
- [functional] New tool “get_day_summary”

### 2026-11-03 (score 61, +1)

- [security] Tool “call_endpoint” rewrote its description, which is the text the model reads
- [security] Tool “search_endpoints” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 183 → 243
- [functional improvement] Tool coverage: 78% → 100%
- [cosmetic] “call_endpoint” reworded the description of “arguments”
- [cosmetic] “call_endpoint” reworded the description of “routeId”

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

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

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

- [security] Tool “day_summary” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 557 → 735
- [functional improvement] Tool coverage: 67% → 75%
- [functional] New tool “get_my_history”

### 2026-10-30 (score 58, +2)

- [security] Tool “search_endpoints” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: 20% → 75%
- [functional improvement] Tool coverage: 50% → 67%
- [functional] Schema quality: good → excellent
- [functional] New tool “day_summary”
- [cosmetic] “search_endpoints” added an optional parameter “queries”
- [cosmetic] “search_endpoints” reworded the description of “budget”
- [cosmetic] “search_endpoints” reworded the description of “maxRoutesPerQuery”
- [cosmetic] “search_endpoints” reworded the description of “query”
- [cosmetic] “search_endpoints” made “query” optional

### 2026-10-29 (score 56, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-28 (score 56)

First indexed and scored.

## MCP tools (5)

### `search_endpoints` (~320 tokens)

FREE search for paid API endpoints (x402) by task. Pass either a natural-language query (the planner will split it) or pre-split queries[]. Returns a structured plan with up to `maxRoutesPerQuery` candidates per sub-query. No auth. Limits: burst 200/10s, total 1000/15min per IP; free probes 10/h per IP, 20/h per agent. IMPORTANT: Do not fetch `route.url` directly. To execute the preferred route, call `call_endpoint({ routeId, arguments })` - `routeId` from `plan[].routes[].routeId`, `arguments` keys = `parameters[].name` of that route.

Input parameters:

- `budget` (object): Optional filter to exclude expensive plans. If the cheapest possible plan (estimate.minPlanCost) exceeds maxTotalPrice, the plan is still returned but estimate.overBudget=true.
- `maxRoutesPerQuery` (integer): Max alternative routes returned per sub-query. Controls how many candidates you get to choose from; does not affect the discovery fee. Clamped to [1,5].
- `queries` (array): Optional pre-split sub-queries. If provided, takes precedence over `query` and bypasses the LLM planner (so faster). Use only when you already know the decomposition; otherwise omit and pass `query`.
- `query` (string): Natural-language task. Pass the whole task in one call; the planner splits it into sub-queries automatically. Ignored if `queries` is provided.

Output parameters:

- `budget` (object): Echo of the budget applied to this search (may have maxTotalPrice=null if not provided).
- `estimate` (object)
- `meta` (object)
- `mode` (string)
- `plan` (array): Ordered steps. Each step groups candidate routes for one sub-query. Empty array means no matching endpoints were found.
- `queries` (array)
- `status` (string)

### `call_endpoint` (~258 tokens)

Executes an endpoint found via search_endpoints. Pass `routeId` and `arguments` (keys = `parameters[].name` of that route; omit if the route has none). If payment is required, returns isError=true with `x402Version`+`accepts` in structuredContent - sign those accepts and retry with `_meta["x402/payment"]` (base64 payload). Other isError cases: `invalid_arguments` (structuredContent.details[]/requiredArgs[] tell what to fix and retry), `route_unresolved` (pick another routeId from plan[]), `failed` (refunded/refundTx; try another route). On success, returns the actual result of the endpoint. No auth. Limits: paid 300/5min, burst 200/10s, total 1000/15min per IP.

Input parameters:

- `arguments` (object): Endpoint arguments. Keys = `parameters[].name` of the chosen route. Example: `parameters[] = [{name:"address", in:"path", required:true}]` → `{ "address": "0x098B…" }`.
- `routeId` (string, required): Candidate `routeId` from search_endpoints `plan[].routes[].routeId`.

### `get_day_summary` (~224 tokens)

Fast and simple way to get morning brief in one call: weather, S&P 500 / Dow / NASDAQ, BTC/ETH/SOL with 24h change, top-5 news.Use it when the user asks for a daily brief, morning digest, market+weather snapshot, or "what's happening today. Do NOT use for single-fact lookups or for tickers/coins/countries outside the fixed set - use search_endpoints → call_endpoint instead.Free, read-only. Rate limit: 20 calls / 5 min per agent (key = x-agent-id, else ip:user-agent), exceeding → 429 + Retry-After as errors[].retryAfter.

Input parameters:

- `newsreg` (string): 2-letter ISO country code for news. If omitted, defaults to worldwide headlines. Non-2-letter → -32602 before any call.
- `weatherreg` (string): City for weather. If omitted, the server tries IP-based geolocation of the caller. If geolocation fails, the weather block is skipped and logged in errors[].

Output parameters:

- `blocks` (object): Successfully fetched blocks. Any subset of weather / indices / crypto / news. Blocks that failed are absent and listed in `errors`.
- `errors` (array): Blocks that failed. Empty array when everything succeeded.
- `generatedAt` (string)
- `meta` (object)
- `status` (string)

### `buy_gift_cards` (~320 tokens)

Simple direct way to buy a digital gift card (Amazon, Steam, Apple, Netflix, Google Play, PlayStation, Xbox, IKEA, Airbnb, …) via natural language. Describe what you want in `prompt`, e.g. "steam 25 USD" or "amazon 50 euro germany". If country is omitted, US is used as default. Minimal card nominal is $1. The product and denomination are matched automatically: the closest package for the requested value is selected. Note: the card nominal is not the final charge - expect a deviation. The exact amount is shown in the 402 `accepts` - compare it against your request before signing. Flow: first call WITHOUT a payment signature returns isError=true with `x402Version` + `accepts` in structuredContent (the price is computed dynamically from the product and denomination you asked for). Sign those accepts and retry with `_meta["x402/payment"]` (base64 payload). On success returns the redemption code(s) under `structuredContent.redemption`, or `structuredContent.delivery="pending"` if not delivered yet - codes then appear later in `get_my_history` routes["gift-cards"].events[].params.redemption[].code If the product cannot be resolved or fails after you paid, the call is refunded automatically (structuredContent.refunded=true). Limits: 12 free probes/h per IP, then paid calls 300/5min per IP.

Input parameters:

- `prompt` (string, required): Natural-language purchase intent. Include brand, denomination, and optionally country.

Output parameters:

- `accepts` (array)
- `country` (string)
- `delivery` (string)
- `error` (string)
- `meta` (object): Response metadata. Present in both success and error responses.
- `note` (string)
- `packageValue` (string)
- `product` (string)
- `redemption` (array|null)
- `refunded` (boolean)
- `requiredArgs` (array)
- `status` (string)
- `success` (boolean)
- `x402Version` (integer)

### `get_my_history` (~219 tokens)

Access to your own successful paid calls history. Use it when you need to audit, verify, or summarize what paid calls you have made - e.g. to check spend, confirm a past payment settled, or list your recent endpoints or their parameters. Pass the buyerID you received as `meta.yourID` in any successful paid response - whether you called the endpoint directly over HTTP (e.g. https://x402helper.xyz/test-billing) or via the MCP tool `call_endpoint` (e.g. routeId `34f3gf:r1`). Returns aggregate counters plus per-route events (timestamp, endpoint, network, amount, facilitator, params). No payment required. Free, read-only. Rate limit: 15 calls / 10 min per IP; exceeding → 429. User can also view it in a browser at https://x402helper.xyz/getmyhistory.html page.

Input parameters:

- `buyerID` (string, required): 8-char lowercase hex buyer ID (the value of meta.yourID from a successful paid response).

Output parameters:

- `buyerID` (string): 8-char lowercase hex buyer ID (echo of the input).
- `firstSeenAt` (string|null)
- `found` (boolean): False when no paid calls were recorded for this buyerID yet. Not an error.
- `lastSeenAt` (string|null)
- `meta` (object)
- `routes` (object): Map: routeKey → per-route history. routeKey is either a short alias (r1, r2, …) or path template (e.g. "/9da78c/api/ofac-wallet-screen/:address"). Empty object when found=false.
- `status` (string)
- `successfulCalls` (integer)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/xyz-x402helper-mcp/x402helper#diagnostics

## Score history

- 2026-11-05: 61
- 2026-11-04: 61
- 2026-11-03: 61
- 2026-11-02: 60
- 2026-11-01: 59
- 2026-10-31: 59
- 2026-10-30: 58
- 2026-10-29: 56
- 2026-10-28: 56

## Common questions

### What is the X402 Helper MCP server?

X402 Helper MCP is listed in the public MCP registry as xyz.x402helper/mcp. API discovery and x402 paid execution via MCP. Search by natural-language, call with USDC payment. This page covers its hosted endpoint (https://x402helper.xyz/mcp).

### Is the X402 Helper MCP server safe to use?

X402 Helper MCP scores 61 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 X402 Helper MCP server expose?

X402 Helper MCP exposes 5 tools: search_endpoints, call_endpoint, get_day_summary, buy_gift_cards, get_my_history. Their descriptions and schemas cost roughly 1,341 tokens of context every time the server is loaded.

### Does the X402 Helper MCP server require authentication?

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

### Is the X402 Helper MCP server still maintained?

X402 Helper MCP 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://x402helper.xyz/mcp
- Changelog RSS feed: https://verifymcp.io/servers/xyz-x402helper-mcp/x402helper.xml
- Changelog JSON feed: https://verifymcp.io/servers/xyz-x402helper-mcp/x402helper.json
- HTML version of this page: https://verifymcp.io/servers/xyz-x402helper-mcp/x402helper
