x402-list-mcp
This server is a read-only MCP wrapper over the x402-list directory, letting you discover, inspect, compare, and monitor x402 payment services without holding keys or settling payments.
Search services:
search_x402_servicesfilters by query, category, network, live status, signability, and verification; sorts by newest/uptime/cheapest/endpoints; returns USD prices, uptime, and status.Get service details:
get_servicereturns a single service's health, uptime windows, response time, networks, settlement asset, and per-endpoint prices (raw on-chain amount plus USD), with optional 90-day on-chain series.Find best service:
find_best_serviceranks services for a need using reliability, x402 compliance, price, and a small on-chain traction weight; supports filters (network, category, max price, verified-only) and optional facilitator context; reports ranking version and buyer concentration.Check health:
check_healthgives directory-wide status counts or a single service's status, uptime snapshots, response time, and consecutive failures.Get facilitator volumes:
get_facilitator_volumesreturns on-chain-verified settlement volume and tx counts per facilitator (24h/7d/30d/all-time), with optional daily timeseries and per-chain breakdowns.Paid AI assessment:
assess_servicesruns a fresh $0.25 USDC-on-Base comparison of a shortlist against a stated need; it is a pass-through that returns an x402 payment challenge for client-side signing, then a verdict report, and optionally performs a paid live probe of one service.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@x402-list-mcpfind cheapest x402 service for payments on ethereum"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
x402-list-mcp
Discover x402 payment APIs, check uptime and pricing, and inspect on-chain-verified settlement volume per facilitator through MCP.
What is x402-list
x402-list is a directory of services that accept x402 (HTTP 402 stablecoin) payments. It monitors listed services for uptime, response time and status, and measures facilitator settlement volume on-chain.
This package is a thin wrapper over the public x402-list HTTP JSON API. It holds no keys, touches no database, and makes no writes to the directory. It exposes the directory to AI agents through the Model Context Protocol as seven tools: six are free and read-only, and the seventh, x402_assess_services, is the only paid one, a pass-through that relays an x402 payment challenge you sign yourself client-side (the package never holds keys, never signs, and never settles).
Related MCP server: Tilde x402 MCP Server
Install and quick start
Connect to the hosted server at https://mcp.x402-list.com/mcp using Streamable HTTP, or run the npm package locally over stdio. Local use requires Node.js 20 or newer and npm; the hosted connection needs no local Node.js installation.
Claude Code
Connect to the hosted server:
claude mcp add --transport http x402-list https://mcp.x402-list.com/mcpOr use the local package instead:
claude mcp add --transport stdio x402-list -- npx -y x402-list-mcpChoose one transport. See the Claude Code MCP documentation for configuration scopes.
Cursor
Add the hosted server to Cursor, then confirm the installation in Cursor.
The install link encodes the same configuration as this manual entry in .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"x402-list": {
"url": "https://mcp.x402-list.com/mcp"
}
}
}See the Cursor MCP documentation and install-link format.
VS Code
Add this entry to .vscode/mcp.json in your project, then start the server from the editor and use it in Copilot agent mode:
{
"servers": {
"x402-list": {
"type": "http",
"url": "https://mcp.x402-list.com/mcp"
}
}
}See the VS Code MCP documentation for other configuration locations.
Codex
Add the hosted server with the Codex CLI:
codex mcp add x402-list --url https://mcp.x402-list.com/mcpOr add this entry to ~/.codex/config.toml; the CLI and IDE extension share this configuration:
[mcp_servers.x402-list]
url = "https://mcp.x402-list.com/mcp"See the Codex MCP documentation.
Claude Desktop and other local stdio clients
Add this entry to claude_desktop_config.json, or the equivalent configuration for your stdio client, and restart the client:
{
"mcpServers": {
"x402-list": {
"command": "npx",
"args": ["-y", "x402-list-mcp"]
}
}
}See the local MCP connection guide for the Claude Desktop configuration file location.
The client launches the same command you can run in a terminal:
npx -y x402-list-mcpSelf-host Streamable HTTP
To run your own HTTP instance in a POSIX shell:
MCP_HTTP_PORT=3000 npx -y x402-list-mcp --httpConnect your client to http://localhost:3000/mcp. The health probe at http://localhost:3000/healthz returns {"status":"ok"}.
Environment variables
Variable | Default | Purpose |
|
| API base URL. The |
|
| Per-request timeout in milliseconds. |
|
| HTTP port. Setting |
| (empty, permissive) | Comma list of allowed CORS origins for HTTP mode. |
| (empty, off) | Comma list that enables DNS-rebinding protection in HTTP mode. |
Tools
Tool | What it does |
| Search and filter the directory by query, category, network, status, and |
| Full detail for one service by slug: endpoints, per-endpoint USD pricing, uptime windows, networks, settlement asset. |
| Ranked recommendation for a need, computed server-side (GET /api/v1/best). Ranks mostly by reliability, x402 compliance and price (status, verified, uptime, response time, USD price), with a small (~10%) weight on per-service on-chain traction that can never dominate those three. Read the answer's |
| Live status, directory-wide or per service (uptime snapshots, consecutive failures). |
| Per-facilitator on-chain-verified settlement volume (today UTC/7d/30d/all) in USD, tx counts, and an on-chain vs listed flag. The |
| Free, read-only feed of what the monitor observed changing on listed services, most recent first, in exactly three event types ( |
| Paid ($0.25 USDC on Base, x402). Fresh on-demand AI comparison of a shortlist of listed services for a stated need. Pass-through: it never holds keys, never signs, and never settles. Call without |
Ranking generations
x402_find_best_service returns its scoring generation in ranking_version. Compare scores only
within the same generation. The changes below explain why scores across generations differ:
Generation 2 capped the compliance term at 0.6, the floor of the C band, when at least one of a service's EVM routes was observed missing the EIP-712 domain parameters (
extra.name,extra.version) a standard x402 client needs in order to sign a payment. A fact about the envelope on the wire, not a judgement on the merit of the service.Generation 3 added the anti-wash rules on the traction term: an absolute floor of $10 on 30d settlement volume, below which the term scores 0 because sub-floor volume is indistinguishable from dust and must not move rank; a discount on a payout concentrated in one buyer, up to half the traction term when a single buyer accounts for all of it, since one buyer is one relationship and not the broad demand the term is meant to reward; and a service that publishes no mappable payTo now scores 0 on that term instead of having the weight renormalized away, so hiding the payout address no longer beats having a measured one.
Units note
All monetary values are decimal US dollars and are passed through verbatim. There is no cents conversion anywhere. The per-endpoint pricing[].price field is a raw atomic on-chain token amount (a uint256 string), not dollars; only price_usd is the dollar figure.
Honesty note
Two different on-chain volume signals; do not conflate them. Facilitator volume (x402_facilitator_volumes) is the ecosystem headline, aggregated per facilitator. Per-service traction (the traction block on each service, weighed at ~10% inside x402_find_best_service) is settlement measured over a service's own payTo via recognized settlers - a deliberate conservative undercount, not an estimate: unattributed settlements are left out, never scaled up. When a payTo is shared across services (shared_payout: true), only settlement VOLUME is attributed pro-quota, the operator-level volume over that address divided across the services sharing it, which is a declared convention and not an individually observed measure, while transaction count and unique buyers stay whole operator-level integers; a service on a network not yet measured, or a shared-payout member whose probe has been failing, carries no traction term at all and the remaining weights are renormalized over it. Never read shared, pro-quota or unmeasured volume as one service's revenue. To ask "which facilitators have real on-chain volume", use x402_facilitator_volumes and read the verification flag.
Source
Source code: mcccsm/x402-list-mcp. This repository mirrors the MCP package when it is published. The public REST API is documented at x402-list.com/api.
License
MIT
Available Tools
7 toolsx402_assess_servicesAssess x402 services (paid)AInspect
Call this when the free signals have run out: you hold 2 to 8 finalists from x402_search_services or x402_find_best_service, their stored fields do not separate them for YOUR stated need, and choosing wrong costs more than a quarter. It buys one fresh AI assessment reasoned against your question, not a cached grade; reading an already-computed assessment stays free via x402_get_service. Price: a one-time $0.25 USDC on Base, over two calls. Call once WITHOUT payment_signature_b64 to receive the x402 payment challenge verbatim (accepts[], amount, payTo, and a base64 PAYMENT-REQUIRED header); sign accepts[0] client-side with your own wallet; call again with the SAME question and services plus payment_signature_b64 to receive the report and a base64 PAYMENT-RESPONSE settlement receipt. This server holds no keys, never signs and never settles: it only relays the challenge. Optionally add probe { slug, endpoint_path? } to have one listed service paid and called for real and its answer analyzed: the challenge is then priced at $0.25 plus that endpoint price X, and the report gains a probe_report block with a verdict and truncated extracts, never the verbatim third-party body. When live probing is not armed the probe is ignored. Caveats: read the amount to sign from accepts[0].amount, never from a fixed figure, since a probe changes it; probe fees are non-refundable whatever the verdict; if the fresh run cannot be produced the server answers before settling, so you are never charged for nothing; there is no refund. Prices are US dollars.
| Name | Required | Description | Default |
|---|---|---|---|
| probe | No | Optional live-probe request: pay one listed service for real and analyze what it returns. When the server has probing armed the price becomes $0.25 plus that endpoint price X (non-refundable); the report gains a probe_report block with a verdict and truncated extracts, never the verbatim third-party body. Ignored when probing is not armed. | |
| question | Yes | The need to assess the shortlist against (1 to 1000 characters). | |
| services | Yes | Service slugs to compare for the need (1 to 8; find them with x402_search_services or x402_find_best_service). | |
| payment_signature_b64 | No | Base64 PAYMENT-SIGNATURE for the x402 payment, produced by signing the accepts[0] challenge client-side. Omit on the first call to receive the challenge; set it on the retry to run the paid assessment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations (which don't indicate paid or two-call behavior) to disclose the full payment flow: call without signature to get challenge, sign accepts[0], retry with signature; it explains probe pricing, non-refundable fees, no charge if fresh run cannot be produced, and that probe responses are truncated and never verbatim. It also warns to read amount from accepts[0].amount. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and thorough, front-loading the core purpose and payment flow. It earns its length by covering substantive caveats (pricing, refund, probe truncation). A slight deduction because the description is very long and repeats the $0.25 fee and 'never charged for nothing' concepts in a slightly redundant way, but every sentence adds important security or usage detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete: it explains the required two-call protocol, how to compute the correct amount, what happens with probes, fee consequences, error/refund behavior, and the report contains probe_report. Given there is no output schema, the description fully compensates by describing what is returned (report, probe_report, verdict, truncated extracts) and what is never returned (verbatim body).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all 4 parameters with high coverage, and the description adds critical semantic meaning for the key 'payment_signature_b64' parameter (omit on first call, set on retry), the 'probe' object's behavior (pricing, ignored when not armed), and the 'services' array (1-8, found via siblings). It explains the exact relationship between parameters and the two-call flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a paid assessment of service slugs against a user's need, and explicitly distinguishes it from sibling tools search (find services) and get (read cached assessment). It specifies a paid action with a $0.25 USDC fee and a two-call challenge/response flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to call this tool: when free signals are exhausted and choosing wrong costs more than a quarter, and it contrasts with x402_search_services and x402_find_best_service, and references x402_get_service for already-computed assessments, giving clear alternatives and conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_change_eventsx402 service change eventsARead-onlyInspect
Call this before you trust anything you cached about a service, and right after a payment failed for no obvious reason: the monitor's log of what moved under you. Returns payTo, price and 402-schema changes observed on listed services, most recent first, in exactly three event types (payto_changed, price_changed, schema_changed). Filter with service (the slug), type, and days (1 to 365, default 90). Caveats: prices here are atomic token amounts, never dollars, and every payTo is masked by design, so the feed reports THAT the payout address changed, never the address. Free and read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days, 1 to 365 (default 90). Events older than the window are not in the feed. | |
| page | No | 1-based page index into the filtered event set (see total_pages). | |
| type | No | Restrict to one kind of change: 'payto_changed' (the payout address set changed), 'price_changed' (at least one endpoint's price changed), 'schema_changed' (the 402 envelope gained or lost accepts entries or priced endpoints). Omit for all three. | |
| service | No | Service slug to restrict the feed to, e.g. 'exa' (the same slug x402_get_service takes). Omit for changes across every listed service. | |
| per_page | No | Events per page, 1 to 100 (default 25). Each event carries the full before/after envelope snapshots, so a large page is heavy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Matches the readOnlyHint annotation with 'Free and read-only' and adds important caveats beyond the annotation: prices are atomic token amounts not dollars, and payTo values are masked (only change is reported, not the address).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single run-on sentence with colon-separated lists, making it a bit dense, but it packs all essential details without redundancy. Could be split into clearer sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by mentioning the return shape (most recent first, event types, full snapshots). It could be more explicit about the exact output fields, but the 'before/after envelope snapshots' hint provides enough context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters have schema descriptions, and the description enriches them: the type enum is explained with concrete meanings, service is tied to the same slug as x402_get_service, and per_page notes that large pages are heavy due to full before/after snapshots.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the resource (service change events) and the action (returns a log of payTo, price, and schema changes), with specific triggers for when to call it. Distinguished from siblings by being the change-feed tool rather than search/get/health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete scenarios: before trusting cached service data and after a payment failure. Does not explicitly name alternatives, but the two use cases make the intended context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_check_healthCheck x402 service healthARead-onlyInspect
Call this before you send a payment, or right after a call unexpectedly failed: is this service up right now. With no slug, the directory snapshot: five status counts across the directory (include_services=true attaches every row). With a slug: that service's status, its 24h/7d/30d/90d uptime windows, response time, consecutive failures, daily snapshots. No money fields.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Service slug for a single-service health report. Omit for the whole directory. | |
| uptime_period | No | Daily uptime snapshot window for single-service mode. | 30d |
| include_services | No | Directory mode only (no slug): if true, also attach the full per-service status array. Off by default so a directory health check returns just the five status counts, not every service. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by stating 'No money fields' (meaningful in a payment protocol) and enumerating what each mode returns, but it does not disclose rate limits, auth requirements, or how large the include_services=true payload could be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is compact and front-loads the when-to-call guidance before the mode breakdown. The telegraphic fragment style ('is this service up right now') is dense but every clause conveys distinct information about inputs or outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so for both modes, listing status counts, uptime windows, response time, consecutive failures, and daily snapshots. The main gap is the lack of any mention of pagination or size limits when include_services=true attaches every row.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining the slug/no-slug mode split and explicitly tying include_services=true to attaching 'every row'. It adds the operational meaning of the parameters rather than restating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose (is this service up right now) and clearly separates its two modes: directory snapshot with five status counts versus single-service status with uptime windows. It distinguishes itself functionally by noting 'No money fields', though it never names sibling tools like x402_get_service or x402_assess_services to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit triggering conditions: 'Call this before you send a payment, or right after a call unexpectedly failed.' That is clear when-to-use context, but there are no exclusions or named alternatives, so the agent must infer why this differs from x402_get_service or x402_assess_services.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_facilitator_volumesx402 facilitator volumesARead-onlyInspect
Call this when the question is about the rail rather than the service: which x402 facilitator actually settles money, and how much. Returns on-chain-verified settlement volume and transaction counts per facilitator for today (UTC), 7d, 30d and all-time, plus a verification flag ('on-chain' once volume has been observed on-chain, else 'listed'), across more than 30 facilitators. Optional daily timeseries (up to 90 days) and per-chain breakdown. Volume is decimal USD. Caveats: PER-FACILITATOR, never per-service; the *_24h fields cover today (UTC) so far, not a trailing 24 hours, and reset at 00:00 UTC, so prefer 7d.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Length of the timeseries in days (only used when include_timeseries is true). | |
| page | No | ||
| per_page | No | ||
| timeframe | No | Drives the sort order of the returned facilitators. '24h' sorts by today (UTC) so far, not by a trailing 24-hour window. | 7d |
| include_chains | No | Include a per-chain (network/asset) volume breakdown per facilitator. | |
| include_timeseries | No | Include a daily volume_usd / tx_count series per facilitator. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, so the description isn't required to state that. However, it adds substantial behavioral detail: the on-chain verification flag, the meaning of 'listed' vs 'on-chain', the exact definition of *_24h fields (today UTC so far, not trailing 24h), and that volume is decimal USD. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the trigger condition, then the return payload, then optional features, then caveats — a logical flow. Every sentence carries information; the caveats are essential and not redundant. It's longer than a single sentence but earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only data tool with no output schema, the description covers the key output elements (volume, counts, verification flag, timeframes), the units, the optional breakdowns, and the critical temporal caveat. An agent has enough to invoke it correctly and interpret results. Nothing crucial is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 67% of parameters (4 of 6 have descriptions). The description reinforces include_timeseries and include_chains by calling out 'optional daily timeseries (up to 90 days) and per-chain breakdown', and it reiterates the critical timeframe nuance ('prefer 7d'). While page/per_page lack descriptions in both, they are conventional pagination parameters. The description adds meaningful clarification beyond the schema for the most important params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise trigger condition — 'question is about the rail rather than the service' — and names the exact resource (facilitator settlement volumes) and the data returned (volume and tx counts per facilitator). This clearly separates it from sibling tools like x402_search_services or x402_get_service, which target services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call ('about the rail rather than the service') and what not to do ('never per-service'), plus a strong caveat to prefer 7d over 24h due to reset semantics. While it doesn't name specific alternatives, the per-service/per-facilitator distinction is sufficient routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_find_best_serviceFind best x402 serviceCRead-onlyInspect
Call this when you have a need in words and want one service to call rather than a list to read: it is the free ranking step between searching and paying. Pass the need as q, plus any category, network, price cap or verification requirement, and get up to 20 ranked recommendations with the basis each one placed on. Ranking is mostly per-service reliability (live status, verification, uptime, response time), x402 compliance, and price in USD, with a small (about 10%) weight on measured on-chain settlement traction that can never dominate those three. The response carries ranking_version (currently 3), need_blind_ranking (true when no q was given, so the order is global quality rather than your need), and a units map holding every scoring caveat in full: the compliance cap, the pro-quota rule for shared payout addresses, renormalization, the $10 volume floor, and the single-buyer discount. Read units before comparing scores across generations.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text need description to match against name/description. | |
| limit | No | How many ranked recommendations to return. | |
| prefer | No | Tie-breaking emphasis for the ranking weights. | balanced |
| network | No | Required network name or abbreviation, e.g. 'Base' or 'BSE'; any network code returned by /api/v1/networks is accepted. | |
| category | No | Desired service category. | |
| max_price_usd | No | Cap on min_price_usd in US dollars; cheaper or equal passes. | |
| require_verified | No | If true, only verified services are eligible. | |
| include_facilitator_context | No | If true, also return top facilitators by 7d settlement volume as separate ecosystem context (NOT per-service). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description does not contradict them. The description adds details on ranking methodology but does not explicitly mention that the tool makes no modifications or that results may change (open-world). Given the annotations cover the key behavioral aspects, a neutral score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is unusually long and repetitive, with multiple sentences restating ranking weights and output fields. It lacks a clear front-loaded summary; the first sentence is confusing and the subsequent paragraphs ramble. A concise version would improve readability without losing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description attempts to describe the response structure (ranking_version, need_blind_ranking, units map) and the meaning of include_facilitator_context. However, it leaves ambiguities (e.g., what 'units map' keys are, how caveats apply) and does not fully compensate for the lack of a formal output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides complete descriptions for all 8 parameters. The description adds context on ranking criteria and mentions some parameters indirectly (e.g., 'price cap' for max_price_usd), but it does not meaningfully enhance parameter understanding beyond the schema. The addition of the 'units map' is unclear and could be considered more about output than input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clarifies that this tool returns ranked service recommendations based on a free-text need and optional filters, distinguishing it from a simple search. However, the phrase 'free ranking step' is ambiguous (likely 'first ranking step' or 'the ranking step'), and the long sentence structure initially obscures the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a broad trigger ('when you have a need in words') but does not explicitly compare with sibling tools (e.g., when to use x402_search_services vs. x402_find_best_service). No 'use X instead' guidance is provided, leaving the agent to infer the tool's relationship to others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_get_serviceGet x402 serviceARead-onlyInspect
Call this once you hold a slug and are deciding whether to commit to that service: the full record behind a directory row. Live status, uptime over 24h/7d/30d/90d, average response time, networks and settlement asset, every priced endpoint, and the assessment block. include_series=true adds 90 daily points of on-chain volume and distinct buyers. Read the units map in the response: the per-endpoint price field is atomic token units, not dollars.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Service slug, e.g. 'my-api'. | |
| include_series | No | If true, also attach this service's daily on-chain series under `series` (settlement volume and distinct buyers, one point per UTC day over the most recent 90 days, oldest first). Off by default to keep the response small. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint and openWorldHint annotations already cover the read-only nature, and the description adds meaningful behavioral detail beyond that, such as the optional include_series behavior and the important units-map warning that prices are atomic token units, not dollars.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the purpose and use case. It lists response contents efficiently and keeps the optional-series explanation brief, though the phrasing is slightly awkward in places.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema provided, the description supplies a useful inventory of the response fields and flags the key units caveat. It is sufficient for an agent to understand what it will receive, though 'assessment block' is mentioned without explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates what the schema already explains for slug and include_series without adding significant new meaning beyond the schema text itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: retrieve the full service record for a given slug, and it lists the key contents (status, uptime, response time, networks, endpoints, assessment). It also frames the intended moment of use ('once you hold a slug and are deciding whether to commit'), which differentiates it from search or health-check siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when to call it: after obtaining a slug and before committing to a service. It implies this is the comprehensive lookup rather than a lighter health check, though it does not explicitly contrast with x402_check_health or x402_find_best_service.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_search_servicesSearch x402 servicesARead-onlyInspect
Your first call when you do not know which x402 service exists for a job: it narrows the directory of listed services to candidates. Filter by free-text query, category, network, live status, and whether the last observed 402 envelope is signable by a standard x402 client; sort by newest, uptime, cheapest, or endpoints. Returns up to 100 compact summaries a page: price in decimal USD, uptime, status, verification. Then x402_get_service for the full record.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search across name, description, category, base_url. | |
| page | No | 1-based page index into the filtered result set (see meta.total_pages). | |
| sort | No | Server-side sort order. | newest |
| fields | No | Response detail: 'compact' (default) = lean summaries (identity, price, status, uptime, verification, networks, compliance grade), 'full' = every field including the per-service assessment block. Compact keeps a directory sweep small enough to not truncate. | compact |
| status | No | Filter by live monitoring status. | all |
| network | No | Network name or abbreviation, e.g. 'Base' or 'BSE'; any network code returned by /api/v1/networks is accepted. Omit for all. | |
| category | No | Exact category name (see categories context). Omit for all. | |
| per_page | No | Services per page, 1 to 100 (default 25). Higher values return larger results; with fields='full' a large page can be very heavy, so prefer compact when raising it. | |
| signable | No | Filter on the signability of the last observed 402 envelope: true = no EVM route of the service was observed missing the EIP-712 domain parameters (extra.name and extra.version) that a standard x402 client requires in order to sign a payment, false = at least one such route was observed. It describes the payment envelope on the wire, not the merit of the service. A service whose latest assessment has not measured that check yet matches NEITHER value, so omit this parameter to include it. Filtered server-side, so the result total covers the whole filtered set. | |
| verified_only | No | If true, return only verified services. Filtered server-side, so the result total covers the whole verified set, not just this page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful behavioral context beyond that: result-payload shape (compact summaries, price in decimal USD, uptime, status, verification) and the one-page-of-up-to-100 boundary. It stops short of rate limits or server-side filtering cost caveats that the schema's 'per_page' note hints at.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the routing instruction that matters most. The middle sentence is dense with filter/sort enumeration that largely duplicates the schema, costing a little against pure conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 params, no output schema, and a directory-scale read, the description covers the essentials: trigger, filter/sort axes, response granularity and size, and the escalation path to the detail tool. Minor gaps are pagination mechanics and how it relates to the sibling ranking/assessment tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries its own detailed description, including the nuanced signable semantics. The description only restates the filter dimensions (query, category, network, status, signable) and sort orders in prose, adding no syntax or format information beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('narrows the directory of listed services to candidates') and frames itself as the discovery entry point. It explicitly distinguishes itself from the sibling x402_get_service, whose job is the full record, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening clause gives a clear trigger condition ('Your first call when you do not know which x402 service exists for a job') and names the follow-up alternative x402_get_service. It does not address when to prefer x402_find_best_service or x402_assess_services instead, so the guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.5.1- Removed
assess_services - Removed
check_health - Removed
find_best_service - Removed
get_facilitator_volumes - Removed
get_service - Removed
search_x402_services - Added
x402_assess_services - Added
x402_change_events - Added
x402_check_health - Added
x402_facilitator_volumes - Added
x402_find_best_service - Added
x402_get_service - Added
x402_search_services
6 tool updates
v0.4.2- First observed
assess_services - First observed
check_health - First observed
find_best_service - First observed
get_facilitator_volumes - First observed
get_service - First observed
search_x402_services
TDQS
Scored across 7 tools
The tools mostly partition cleanly by workflow stage (search → rank → inspect → assess → monitor), and descriptions explicitly cross-reference each other ('Then x402_get_service for the full record'), which resolves most ambiguity. There is residual overlap: x402_search_services vs x402_find_best_service both discover services, and x402_get_service vs x402_check_health both describe a single service's status/uptime.
All names share the x402_ prefix and snake_case, and most follow a verb_noun shape (get_service, search_services, assess_services, check_health, find_best_service). Two names break the verb pattern (x402_change_events, x402_facilitator_volumes), a minor but real deviation.
Seven tools is well-scoped for a read-only x402 directory and rail-monitoring server. Each tool occupies a distinct role (discovery, ranking, detail, health, change log, facilitator volumes, paid assessment) with no filler.
The discovery-to-decision pipeline (search, rank, get record, health, changes, facilitator volumes) is well covered, plus a paid assessment path. Minor gaps: no explicit category/network enumeration and live endpoint calling exists only as an optional probe, not a first-class tool.
Maintenance
Related MCP Connectors
Pay-per-use weather, environment, finance, and on-chain intelligence tools for AI agents via x402.
Search settlement-verified x402 APIs. Discovery is free. Agents pay the provider in USDC on Base.
Give your AI agent an x402 wallet: discover and pay for services in USDC, or earn from your own.
x402-paid analytics, market intelligence, research, and LLM inference for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to access paid content by integrating cryptocurrency payments through the x402 protocol, allowing LLMs to verify payments and retrieve paid resources automatically.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and pay for x402-enabled services using natural language, with multi-chain support for Solana and EVM payments.30 npm1MIT

@hpp-io/x402-mcp-bridgeofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to autonomously pay for and discover services using HPP USDC.e over the x402 protocol, without API keys or manual signing.252 npmApache 2.0- AlicenseBqualityBmaintenanceDiscover, pay for, execute, and publish monetized APIs directly from your agent, settled per call in USDC over x402, through the Model Context Protocol.4234 npmMIT