Skip to main content
Glama

x402-list-mcp

MCP server for x402-list: discover x402 payment services and on-chain-verified facilitator settlement volume.

Upgrading from 0.4.x? Every tool was renamed. 0.5.0 moved all of them into the x402_* namespace and removed the old names, with no compatibility aliases: a tools/call for get_service or search_x402_services now comes back as a JSON-RPC -32602 "Tool not found", and the old names are absent from tools/list too. The old-to-new table and the upgrade checklist (prompts, client allow lists, eval fixtures) are in CHANGELOG.md.

What is x402-list

x402-list is the directory of services that accept x402 (HTTP 402 stablecoin) payments. Its distinctive, defensible data is on-chain-verified settlement volume per facilitator, not self-reported numbers. Listed services are continuously health-monitored (uptime, response time, status).

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

stdio (local MCP clients)

npx -y x402-list-mcp

Claude Desktop / generic MCP client config:

{ "mcpServers": { "x402-list": { "command": "npx", "args": ["-y", "x402-list-mcp"] } } }

Hosted HTTP (Streamable HTTP transport)

MCP_HTTP_PORT=3000 npx -y x402-list-mcp --http

Hosted endpoint: https://mcp.x402-list.com/mcp. Health probe: GET /healthz returns {"status":"ok"}.

Environment variables

Variable

Default

Purpose

X402_LIST_BASE_URL

https://x402-list.com

API base URL. The /api/v1 prefix is appended automatically.

X402_LIST_TIMEOUT_MS

15000

Per-request timeout in milliseconds.

MCP_HTTP_PORT / PORT

3000

HTTP port. Setting MCP_HTTP_PORT selects HTTP transport.

MCP_ALLOWED_ORIGINS

(empty, permissive)

Comma list of allowed CORS origins for HTTP mode.

MCP_ALLOWED_HOSTS

(empty, off)

Comma list that enables DNS-rebinding protection in HTTP mode.

Tools

Tool

What it does

x402_search_services

Search and filter the directory by query, category, network, status, and signable (whether the last observed 402 envelope carries the EIP-712 domain parameters a standard x402 client needs in order to sign); sort by newest/uptime/cheapest/endpoints.

x402_get_service

Full detail for one service by slug: endpoints, per-endpoint USD pricing, uptime windows, networks, settlement asset.

x402_find_best_service

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. The answer carries ranking_version, 3 today (see below), and a units map holding every scoring caveat in full.

x402_check_health

Live status, directory-wide or per service (uptime snapshots, consecutive failures).

x402_facilitator_volumes

Per-facilitator on-chain-verified settlement volume (today UTC/7d/30d/all) in USD, tx counts, and an on-chain vs listed flag. The *_24h fields cover today (UTC) so far, not a trailing 24-hour window.

x402_change_events

Free, read-only feed of what the monitor observed changing on listed services, most recent first, in exactly three event types (payto_changed, price_changed, schema_changed). Filter by service (the listing slug: the parameter is named service, not slug), by type, and by days (1 to 365, default 90); page with page / per_page (up to 100 per page). Each event carries the observation timestamp, a diff summary, and the before/after 402 snapshots. Prices inside an event are atomic token amounts, never dollars, and every payout address is returned masked by the API: the feed reports THAT the payTo changed, never the address.

x402_assess_services

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 payment_signature_b64 to get the x402 challenge verbatim, sign it client-side, then retry with the signature to get the report. Optionally add a probe target { slug, endpoint_path? } to also test one listed service live: the price becomes $0.25 plus that endpoint price X (non-refundable), and the report gains a probe_report block with a verdict and truncated extracts, never the verbatim third-party body.

Ranking generations

x402_find_best_service returns the scoring generation it was produced under. Today it is 3. Scores you stored under an earlier generation are not comparable with these, because the math moved:

  • 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

The source code is not public yet. This package is a thin read-only wrapper over the public x402-list REST API, documented at https://x402-list.com/api.

License

MIT

Available Tools

7 tools
x402_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
probeNoOptional 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.
questionYesThe need to assess the shortlist against (1 to 1000 characters).
servicesYesService slugs to compare for the need (1 to 8; find them with x402_search_services or x402_find_best_service).
payment_signature_b64NoBase64 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

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 eventsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days, 1 to 365 (default 90). Events older than the window are not in the feed.
pageNo1-based page index into the filtered event set (see total_pages).
typeNoRestrict 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.
serviceNoService slug to restrict the feed to, e.g. 'exa' (the same slug x402_get_service takes). Omit for changes across every listed service.
per_pageNoEvents per page, 1 to 100 (default 25). Each event carries the full before/after envelope snapshots, so a large page is heavy.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 healthA
Read-only
Inspect

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 500+ services (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoService slug for a single-service health report. Omit for the whole directory.
uptime_periodNoDaily uptime snapshot window for single-service mode.30d
include_servicesNoDirectory 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

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses non-obvious behaviors: it returns different structures depending on whether slug is present, and explains that include_services defaults to false to keep directory responses lean. Also clarifies the tool involves no money fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a bit informal and runs long in parts, but it is still compact and puts the primary use case first. The mode explanations are efficient, though the phrasing could be more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the three parameters and no output schema, the description adequately covers the main return shapes (directory counts vs. single-service details). It omits error cases but that is acceptable for a health check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all three parameters with descriptions, and the tool description adds context: it explains how slug toggles the mode, how uptime_period applies only in single-service mode, and why include_services defaults to false. This extra rationale helps an agent choose values correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the verb 'Check' and resource 'x402 service health' clearly. Distinguishes between directory mode and single-service mode, so its scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to call it ('before you send a payment, or right after a call unexpectedly failed'). Does not name sibling tools directly, but the context signals list them; the usage timing is sufficient to distinguish it.

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 volumesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLength of the timeseries in days (only used when include_timeseries is true).
pageNo
per_pageNo
timeframeNoDrives the sort order of the returned facilitators. '24h' sorts by today (UTC) so far, not by a trailing 24-hour window.7d
include_chainsNoInclude a per-chain (network/asset) volume breakdown per facilitator.
include_timeseriesNoInclude a daily volume_usd / tx_count series per facilitator.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 serviceC
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text need description to match against name/description.
limitNoHow many ranked recommendations to return.
preferNoTie-breaking emphasis for the ranking weights.balanced
networkNoRequired network name or abbreviation, e.g. 'Base' or 'BSE'; any network code returned by /api/v1/networks is accepted.
categoryNoDesired service category.
max_price_usdNoCap on min_price_usd in US dollars; cheaper or equal passes.
require_verifiedNoIf true, only verified services are eligible.
include_facilitator_contextNoIf true, also return top facilitators by 7d settlement volume as separate ecosystem context (NOT per-service).

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness2/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 serviceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesService slug, e.g. 'my-api'.
include_seriesNoIf 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

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 servicesA
Read-only
Inspect

Your first call when you do not know which x402 service exists for a job: it narrows a directory of 500+ 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text search across name, description, category, base_url.
pageNo1-based page index into the filtered result set (see meta.total_pages).
sortNoServer-side sort order.newest
fieldsNoResponse 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
statusNoFilter by live monitoring status.all
networkNoNetwork name or abbreviation, e.g. 'Base' or 'BSE'; any network code returned by /api/v1/networks is accepted. Omit for all.
categoryNoExact category name (see categories context). Omit for all.
per_pageNoServices 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.
signableNoFilter 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_onlyNoIf true, return only verified services. Filtered server-side, so the result total covers the whole verified set, not just this page.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description transparently explains the signable filter's nuanced behavior (neither true nor false if not measured) and the server-side filtering effects on result totals. Combined with readOnlyHint=true and openWorldHint=true annotations, the read-only nature and external dependency on network data are clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph that front-loads the purpose and then lists capabilities. Every sentence earns its place—there is no redundant or vague phrasing. It is concise yet comprehensive for a tool with 10 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since no output schema is provided, the description adequately covers the return format (up to 100 compact summaries per page with price, uptime, status, verification). It also references external context (network codes, categories) and notes the pagination, making it complete for the intended search use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 10 parameters are described in the schema, and the description adds significant value beyond basic definitions: it clarifies the signable filter's EIP-712 domain parameter check, explains the trade-off of per_page with fields='full', and details the difference between compact and full responses. This goes well beyond the schema's one-liners.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Your first call when you do not know which x402 service exists for a job.' It specifies the action (search) and the scope (directory of 500+ services), and mentions the follow-up sibling tool x402_get_service for full records, making the role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this as the first call when unknown, and directs to x402_get_service after narrowing candidates. It also explains the optional filters and their effects (e.g., signable filter semantics), providing clear guidance on when and how to apply them.

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.

  1. 13 tool updatesv0.5.1
    • Removedassess_services
    • Removedcheck_health
    • Removedfind_best_service
    • Removedget_facilitator_volumes
    • Removedget_service
    • Removedsearch_x402_services
    • Addedx402_assess_services
    • Addedx402_change_events
    • Addedx402_check_health
    • Addedx402_facilitator_volumes
    • Addedx402_find_best_service
    • Addedx402_get_service
    • Addedx402_search_services
  2. 6 tool updatesv0.4.2
    • First observedassess_services
    • First observedcheck_health
    • First observedfind_best_service
    • First observedget_facilitator_volumes
    • First observedget_service
    • First observedsearch_x402_services

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinct, non-overlapping purpose: search, get details, best-match recommendation, health check, volume stats, paid assessment, and change log. No two tools could be confused for one another.

Naming Consistency4/5

All tools share the consistent 'x402_' prefix and snake_case convention. Most use a clear verb (search, get, find_best, check, assess), though 'facilitator_volumes' and 'change_events' are noun phrases—still clear and predictable.

Tool Count5/5

Seven tools is well-scoped for a directory service covering search, retrieval, comparison, health, stats, paid deep-dive, and monitoring. Neither too lean nor bloated.

Completeness5/5

The surface covers the full read-only lifecycle: discover (search), inspect (get), decide (find_best), verify (check_health), analyze (volumes), go deeper (assess), and track changes (change_events). No obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers