Celo x402 Facilitator
Server Details
Check supported assets and verify x402 payments on Celo
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
The three get_* tools target clearly separate resources (config, health, supported kinds), and verify_payment vs payment_status are distinguished by lifecycle stage (pre-settlement check vs on-chain consumption check). The two payment tools could still be initially confused since both operate on signed authorizations, but the descriptions draw a clear boundary.
Three tools follow a get_noun pattern, but payment_status is a bare noun and verify_payment uses a different verb style. Individually readable, but the set mixes conventions rather than following one predictable scheme.
Five tools is a reasonable, well-scoped surface for a facilitator that mostly mirrors a small HTTP API (config, health, supported, verify, status). It is on the thin side, but each tool maps to a distinct endpoint and none are redundant.
Verification and status are covered, but there is no settle tool despite settlement being a core facilitator operation (the description references POST /settle status but never exposes settlement itself). Config/health/supported are complete, so this is a notable but localized gap rather than a wholesale missing surface.
Available Tools
5 toolsget_configAssets, fee and free creditsARead-onlyInspect
Every settleable asset with its address, decimals, transfer method and EIP-712 domain values, plus the pricing model (gas at cost, plus a fee in basis points on the payment value when the asset has a USD price), the gas fallback and the free-credit allowances. Same answer as GET /api/config.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so safety behavior is covered. The description adds substantial context about the returned configuration, including the pricing formula, gas fallback, and free-credit allowances, which is valuable beyond the annotations, though it does not discuss auth or rate limits.
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 reasonably concise and front-loads the asset-related contents before pricing and credit details. The single long sentence with a nested parenthetical is dense but every clause contributes relevant 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?
With no output schema, the description carries the burden of explaining return values and does so fairly well by listing assets, EIP-712 fields, pricing model, gas fallback, and free credits. The main gap is the lack of explicit sibling differentiation and exact response structure.
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 tool has zero parameters, so the baseline score of 4 applies. The description does not need to explain parameter 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 clearly identifies the resource and enumerates its contents: settleable assets, pricing model, gas fallback, and free-credit allowances. It does not explicitly distinguish this tool from the sibling get_supported, which likely overlaps in asset-related functionality, so sibling differentiation is incomplete.
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 explains what data is returned but gives no guidance on when to use this tool versus alternatives such as get_supported or get_health. The reference to GET /api/config anchors the endpoint but does not provide usage conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_healthFacilitator healthBRead-onlyInspect
Whether the facilitator behind this host is answering. Same answer as GET /health.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful equivalence to GET /health, telling the agent this is an external reachability probe, but it does not describe what the response looks like or what failure/partial states mean.
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?
Two short sentences, front-loaded with the core meaning and followed by the endpoint equivalence. No filler 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?
For a parameterless health probe with no output schema, the description should convey what is returned (boolean, status object, error shape). 'Same answer as GET /health' gestures at this but assumes knowledge of that endpoint, leaving the return value under-specified.
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 tool takes zero parameters, so the baseline is 4 per the rubric. There is nothing for the description to compensate for on this dimension.
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 the resource (facilitator health) and the check performed (whether the facilitator behind this host is answering), which is a clear liveness probe. It distinguishes itself from siblings like get_config and payment_status by scope, though the verb is implied rather than stated.
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?
No guidance is given on when to call this versus the other status-style siblings (get_supported, payment_status). Usage is only inferable from the tool's name and the word 'answering'; there is no explicit context or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supportedSupported payment kindsARead-onlyInspect
The (x402Version, scheme, network) kinds and extensions this facilitator verifies and settles. Same answer as GET /supported.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful equivalence to GET /supported, giving the agent a verifiable ground-truth reference, but says nothing about caching, refresh cadence, or whether the response is stable over time.
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?
Two compact sentences with the resource definition front-loaded and the endpoint equivalence as supporting detail. No filler, every clause carries 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?
With no output schema, the description carries the burden of describing the return value, and it does so at a high level — kinds and extensions. It stops short of specifying the exact shape of each kind entry or the extensions field, which an agent would still need to discover at runtime, but for a zero-parameter discovery tool this is close to sufficient.
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 tool takes zero parameters and the schema is a closed empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter information is needed or missing.
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?
Names the exact resource with its tuple structure — (x402Version, scheme, network) kinds plus extensions — and states the verb-like function (verifies and settles). This is clearly distinguishable from verify_payment and payment_status, which act on individual payments rather than enumerating capabilities.
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 purpose implies a capability-discovery call, but there is no explicit when-to-use or when-not-to-use guidance, and no mention of how it relates to siblings like get_config (configuration vs. supported kinds). An agent must infer that this is the pre-flight lookup before attempting verify_payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payment_statusHas an authorization been used?ARead-onlyInspect
Whether a signed payment authorization has been used on chain, for a client whose settle reply was lost. Answers unspent, consumed or expired from the chain (EIP-3009 authorizationState, or the Permit2 nonce bitmap). unspent is not final: the authorization can still be used until validBefore, and a settlement already in flight reads as unspent here. Only consumed and expired are final; expired is only reported 5 s after validBefore, so a payment still in flight is not called final. The settled and pending states need the owning API key and are only served over HTTP. Same answer as GET /settle/status, and it spends the same per-IP allowance.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | Token address the payment was signed for. | |
| nonce | Yes | EIP-3009: the 32-byte hex nonce. Permit2: the nonce as a decimal or 0x-hex uint256. | |
| payer | Yes | Address that signed the authorization. | |
| validBefore | No | Optional. The authorization's validBefore (Permit2: deadline), in unix seconds, so an unused one more than 5 s past it reads as expired. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses finality semantics (only consumed and expired are final; expired reported 5 s after validBefore), the caveat that a settlement already in flight reads as unspent, the auth requirement for certain states, and that it consumes the same per-IP allowance — an explicit rate-limit warning. This is exactly the extra context annotations cannot convey.
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?
Front-loaded with the core purpose, then finality, then auth/rate-limit caveats — a logical order with no filler sentences. It is dense to the point of being slightly packed, but every sentence carries decision-relevant 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?
No output schema exists, and the description compensates by explaining every returned state and its finality. Combined with 100% schema coverage and readOnly/openWorld annotations, an agent has everything needed to call it correctly and interpret results.
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 adds genuine semantic meaning: it ties validBefore to the 5 s expiry rule and explains why unspent is provisional rather than final. That elevates it above schema repetition, though the per-parameter formats (nonce hex/decimal) are already in the schema.
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 — checks whether a signed payment authorization has been used on chain — and enumerates the concrete return states (unspent, consumed, expired) plus the underlying mechanisms (EIP-3009 authorizationState, Permit2 nonce bitmap). An agent can distinguish it from verify_payment or the config/health siblings purely from this text.
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?
Names the triggering scenario explicitly: 'for a client whose settle reply was lost'. It also clarifies that settled and pending states require the owning API key over HTTP, which tells the agent when this tool is not sufficient. It stops short of naming a sibling alternative (e.g. verify_payment) for the in-flight case, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_paymentVerify an x402 paymentARead-onlyInspect
Check a signed x402 payment against its requirements: signature, amount, balance and simulation. Moves no funds. Same answer as POST /verify, and it spends the same per-IP allowance.
| Name | Required | Description | Default |
|---|---|---|---|
| x402Version | No | x402 protocol version of the payload, e.g. 2. | |
| paymentPayload | Yes | The PaymentPayload the buyer signed. | |
| paymentRequirements | Yes | The PaymentRequirements the resource server stated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the readOnlyHint and openWorldHint annotations: no funds move, it returns the same answer as POST /verify, and it consumes the same per-IP allowance. It does not detail failure modes or full return shape, but the safety and rate-limit context are valuable.
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 three short sentences, front-loaded with the core action and checks. Every sentence adds useful information with no wasted wording.
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 verification tool with full schema coverage and annotations, the description covers the core action, safety, equivalence, and rate-limit impact. It leaves return-value shape and failure behavior somewhat implicit by relying on external POST /verify reference.
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%, so the schema already documents the three parameters and their nested objects. The description adds conceptual context about what is checked but does not add parameter-level meaning beyond the schema.
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 verb and resource: 'Check a signed x402 payment against its requirements,' and enumerates the checks performed. This clearly distinguishes it from siblings like get_health, get_config, and payment_status.
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 clear context for use, including that it moves no funds and is equivalent to POST /verify. However, it does not explicitly contrast with sibling tools such as payment_status or state when not to use it.
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.
5 tool updates
- First observed
get_config - First observed
get_health - First observed
get_supported - First observed
payment_status - First observed
verify_payment
Related MCP Connectors
Read-only on-chain receipt check for x402 payments; confirm settlement before trusting a tx.
Pre-payment merchant trust checks for x402 agents on Base and Solana.
Verify signed x402 payments; treasury-scoped settlement is irreversible.
EVM token risk checks, x402 payability check for sellers, address classifier and live gas.
Related MCP Servers
- AlicenseAqualityBmaintenanceNon-custodial stablecoin bill payments (airtime, data, electricity, cable, education) on Celo mainnet, reachable via x402 (zero setup, EIP-3009), a linked wallet's PIN-gated MCP/A2A tool catalog, or plain natural language on Telegram/WhatsApp/X.101MIT
- AlicenseAqualityAmaintenanceEnables agents and developers to check x402 endpoints, assess scores and wallet risks, authorize payments with spending rules, and report outcomes before an agent pays.61MIT
- AlicenseAqualityBmaintenanceBefore an AI agent pays an x402 endpoint, checks whether it's safe to pay: liveness, scam/anomaly scan (payTo hijack, bait-and-switch, honeypot), and on-chain receiver verification. ~70% of x402 endpoints are dead or scams.3MIT
- FlicenseNot gradedqualityCmaintenanceProvides tools to look up providers, fetch receipts, and verify Ed25519 signatures for x402 payments on Base and Solana, with no API key needed for basic operations.0-
Glama MCP Gateway
Add one secure layer between your agents and this server.