Facilitators
A facilitator is the on-chain broadcaster that validates a buyer's payment authorisation and pushes the transaction to the network. The buyer signs off-chain (EIP-3009 on EVM, partial-sign on Solana); the facilitator pays the gas / fee and broadcasts. The marketplace verifies the resulting tx hash on-chain before resolving the endpoint call.
tools402 runs a 3-level stack per chain — two external broadcasters plus one same-chain local-key fallback. 9 facilitators total across the 3 chains. Independent stacks per chain — no cross-chain single point of failure.
#Architecture
Base ──→ [1] Coinbase CDP [2] PayAI [3] local-key
Polygon ──→ [1] PayAI Polygon [2] RelAI [3] local-key-polygon
Solana ──→ [1] PayAI Solana [2] Kobaru [3] local-key-solanaFor each chain : the router cycles through priorities 1 → 2 → 3 in order of measured latency. A facilitator is bypassed if its health check fails or if it misses SLA on a recent settle. Failover happens in < 500 ms based on production measurements.
#The 9 facilitators
#Base (eip155:8453)
| Priority | Name | URL | Type | Notes |
|----------|-------------------|-------------------------------------------|----------------------------------|-------|
| 1 | Coinbase CDP | (Coinbase-hosted) | Official x402 facilitator | Fastest path when up. Bypassed automatically on health-check fail. Source : getFacilitators() at runtime (dynamic env-reload, per-request). |
| 2 | PayAI | https://facilitator.payai.network | External, multi-chain | Secondary signer. Picks up if Coinbase CDP misses SLA. Combined target with Coinbase : 99.99 % over 24 h. |
| 3 | local-key | (server-local) | Same-chain self-signed | Activates only when both externals miss SLA. 0 third-party custody touch. Uses TOOLS402_FACILITATOR_KEY env (secp256k1 EVM key). |
#Polygon (eip155:137)
| Priority | Name | URL | Type | Notes |
|----------|-------------------------|-------------------------------------------|----------------------------------|-------|
| 1 | PayAI Polygon | https://facilitator.payai.network | External, multi-chain | Single endpoint, Polygon identified via CAIP-2 eip155:137 in request body. Hardcoded default. |
| 2 | RelAI | (multi-chain x402) | External, gas-sponsored | USDC on Polygon, additional broadcaster. |
| 3 | local-key-polygon | (server-local) | Same-chain self-signed | Uses TOOLS402_FACILITATOR_KEY_POLYGON env, or falls back to TOOLS402_FACILITATOR_KEY since secp256k1/EIP-155 semantics are shared with Base. |
#Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp)
| Priority | Name | URL | Type | Notes |
|----------|------------------------|-------------------------------------------|----------------------------------|-------|
| 1 | PayAI Solana | https://facilitator.payai.network | External, multi-chain | Supports solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp. |
| 2 | Kobaru | https://gateway.kobaru.io | External, multi-chain | Confirmed via docs.kobaru.io/integration/x402-sdk. |
| 3 | local-key-solana | (server-local) | Same-chain self-signed | Uses TOOLS402_FACILITATOR_KEY_SOLANA (Solana keypair, base58 secretKey 64 B = seed ∥ pubkey). Ed25519. |
#Why a 3-level stack per chain ?
Single-facilitator setups have a single point of failure. If Coinbase CDP goes silent (as it did for ~25 days in early 2026), the marketplace dies. The 3-level stack guarantees that at least one facilitator is reachable on each chain — including a local-key fallback that signs + broadcasts without any third-party.
The local-key facilitator is the kill-switch removed : even if every external facilitator on the planet goes down simultaneously, tools402 keeps settling. The trade-off : the marketplace itself becomes the signer of last resort, which means a marginal increase in custody surface during the moments local-key is active. In production this is rare (< 0.01 % of settlements in 2026).
#Health monitoring
Live status per facilitator : tools402.dev/status.
Per-call result + which facilitator settled it : /v1/_audit/<txHash>.