{"service":"chainpay-mcp","transport":"streamable-http","endpoint":"/mcp","tools":[{"name":"list_mandates","description":"Discover all ChainPay mandates owned by a wallet and report their live status, limits, and token-account delegation.","inputSchema":{"type":"object","properties":{"owner":{"type":"string","description":"Connected wallet or mandate owner public key"}},"required":["owner"],"additionalProperties":false}},{"name":"find_compatible_mandate","description":"Find an active mandate compatible with an invoice mint, amount, token program, and optional approved agent.","inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"mint":{"type":"string"},"amount":{"type":"string","description":"Unsigned token amount in base units"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]},"agent":{"type":"string"}},"required":["owner","mint","amount"],"additionalProperties":false}},{"name":"get_mandate","description":"Read an on-chain ChainPay payment mandate and its current status.","inputSchema":{"type":"object","properties":{"address":{"type":"string","description":"Mandate PDA address"}},"required":["address"],"additionalProperties":false}},{"name":"get_protocol_config","description":"Read the ChainPay protocol configuration and bootstrap asset list.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"get_asset","description":"Read whether a mint is enabled in the ChainPay asset registry.","inputSchema":{"type":"object","properties":{"mint":{"type":"string"}},"required":["mint"],"additionalProperties":false}},{"name":"get_supported_assets","description":"List every mint in the scalable on-chain SupportedAsset registry, including enabled state and exact token program.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"quote_payment_request","description":"Verify a merchant-signed request, derive deterministic payment references, and quote it against a mandate without signing or submitting.","inputSchema":{"type":"object","properties":{"request":{"type":"object","description":"Signed payment request with payload and base64 Ed25519 signature"},"mandate":{"type":"string","description":"Mandate PDA to check"},"agent":{"type":"string","description":"Approved agent public key"}},"required":["request","mandate","agent"],"additionalProperties":false}},{"name":"create_demo_payment_request","description":"Create a valid, merchant-signed Devnet demo payment request using a real token account.","inputSchema":{"type":"object","properties":{"invoice":{"type":"string","description":"Optional invoice reference"},"description":{"type":"string","description":"Optional human-readable purchase description"},"mint":{"type":"string","description":"Optional Devnet token mint"},"recipient":{"type":"string","description":"Optional recipient token account"},"amount":{"type":"string","description":"Optional amount in base units"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]},"resource":{"type":"string","description":"Optional merchant resource reference"}},"additionalProperties":false}},{"name":"create_mandate","description":"Prepare a wallet-signed spending mandate. Each payment supplies its own recipient.","inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"approvedAgent":{"type":"string"},"sourceTokenAccount":{"type":"string"},"allowedMint":{"type":"string"},"maxPerPayment":{"type":"string","description":"Unsigned token amount in base units"},"totalLimit":{"type":"string","description":"Unsigned token amount in base units"},"delegateAmount":{"type":"string","description":"Optional delegate amount in base units"},"expiresAtSlot":{"type":"string"},"maxPaymentCount":{"type":"string","description":"Optional maximum number of payments; 0 means unlimited"},"cooldownSlots":{"type":"string","description":"Optional minimum slot gap between payments"},"mandateNonce":{"type":"string","description":"Optional ChainPay-generated nonce; omit to create a fresh mandate identity"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]}},"required":["owner","approvedAgent","sourceTokenAccount","allowedMint","maxPerPayment","totalLimit","expiresAtSlot","tokenProgram"],"additionalProperties":false}},{"name":"update_mandate","description":"Prepare an owner-signed update to a mandate's agent, limits, expiry, and cooldown policy.","inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"mandate":{"type":"string","description":"Specific mandate PDA; omit only for the legacy owner-scoped mandate"},"approvedAgent":{"type":"string"},"maxPerPayment":{"type":"string"},"totalLimit":{"type":"string"},"expiresAtSlot":{"type":"string"},"maxPaymentCount":{"type":"string"},"cooldownSlots":{"type":"string"},"paused":{"type":"boolean"}},"required":["owner","approvedAgent","maxPerPayment","totalLimit","expiresAtSlot","maxPaymentCount","cooldownSlots"],"additionalProperties":false}},{"name":"check_payment_requirements","description":"Check whether a payment has the token, recipient, amount, expiry, mandate limits, and policy details needed to proceed. Ask the user for missing details before quoting or settling.","inputSchema":{"type":"object","properties":{"mandate":{"type":"string"},"agent":{"type":"string"},"invoiceHash":{"type":"string","description":"32-byte hexadecimal idempotency hash from a verified request"},"paymentId":{"type":"string","description":"32-byte hexadecimal payment id from a verified request"},"signatureReference":{"type":"string","description":"32-byte hexadecimal merchant signature reference"},"request":{"type":"object","description":"Optional signed merchant request; MCP verifies it and derives the payment references before checking requirements"},"mint":{"type":"string"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]},"recipient":{"type":"string"},"amount":{"type":"string","description":"Unsigned token amount in base units"}},"additionalProperties":false}},{"name":"prepare_payment","description":"Validate a payment request against the on-chain mandate and prepare a transaction for the approved agent signer.","inputSchema":{"type":"object","properties":{"mandate":{"type":"string"},"agent":{"type":"string"},"invoiceHash":{"type":"string","description":"32-byte hexadecimal idempotency hash"},"paymentId":{"type":"string","description":"32-byte hexadecimal payment id"},"signatureReference":{"type":"string","description":"32-byte hexadecimal reference"},"mint":{"type":"string"},"recipient":{"type":"string"},"amount":{"type":"string","description":"Unsigned token amount in base units"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]}},"required":["mandate","agent","invoiceHash","paymentId","signatureReference","mint","recipient","amount"],"additionalProperties":false}},{"name":"execute_payment","description":"Settle through an explicitly selected human or delegated signing path. Delegated mode uses the mandate-bound provider signer through Axum.","inputSchema":{"type":"object","properties":{"mandate":{"type":"string"},"agent":{"type":"string"},"invoiceHash":{"type":"string"},"paymentId":{"type":"string"},"signatureReference":{"type":"string"},"mint":{"type":"string"},"recipient":{"type":"string"},"amount":{"type":"string"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]},"signingMode":{"type":"string","enum":["human","delegated"],"description":"human returns/relays a browser-signed transaction; delegated asks Axum's mandate-bound provider signer"},"signedTransaction":{"type":"string","description":"Base64 wallet-signed transaction for relay through the Rust backend"}},"required":["mandate","agent","invoiceHash","paymentId","signatureReference","mint","recipient","amount","signingMode"],"additionalProperties":false}},{"name":"quote_payment","description":"Return a policy quote and preflight result without signing or submitting a transaction.","inputSchema":{"type":"object","properties":{"mandate":{"type":"string"},"agent":{"type":"string"},"invoiceHash":{"type":"string"},"paymentId":{"type":"string"},"signatureReference":{"type":"string"},"mint":{"type":"string"},"recipient":{"type":"string"},"amount":{"type":"string"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]}},"required":["mandate","agent","invoiceHash","paymentId","signatureReference","mint","recipient","amount"],"additionalProperties":false}},{"name":"verify_payment_request","description":"Verify a merchant-signed payment request before ChainPay settlement.","inputSchema":{"type":"object","properties":{"request":{"type":"object","description":"Signed payment request with payload and base64 Ed25519 signature"}},"required":["request"],"additionalProperties":false}},{"name":"prepare_x402_payment","description":"Normalize a Solana x402 challenge and prepare a mandate-checked payment transaction.","inputSchema":{"type":"object","properties":{"challenge":{"type":"object","description":"x402 exact payment challenge","properties":{"network":{"type":"string"},"scheme":{"type":"string","enum":["exact"]},"asset":{"type":"string"},"payTo":{"type":"string"},"amount":{"type":"string"},"resource":{"type":"string"},"nonce":{"type":"string"},"tokenProgram":{"type":"string","enum":["spl-token","token-2022"]}},"required":["asset","payTo","amount","resource"],"additionalProperties":true},"mandate":{"type":"string"},"agent":{"type":"string"},"signingMode":{"type":"string","enum":["human","delegated"]}},"required":["challenge","mandate","agent"],"additionalProperties":false}},{"name":"execute_x402_payment","description":"Run the live x402 GET/402 flow, prepare an externally signed ChainPay settlement, verify its receipt, and retry the resource with proof.","inputSchema":{"type":"object","properties":{"resource":{"type":"string","description":"HTTPS x402-gated resource URL"},"mandate":{"type":"string"},"agent":{"type":"string"},"signedTransaction":{"type":"string","description":"Optional base64 transaction signed outside ChainPay; omit on the first call"}},"required":["resource","mandate","agent","signingMode"],"additionalProperties":false}},{"name":"get_payment","description":"Fetch a ChainPay receipt PDA and join it with Axum's persisted transaction signature.","inputSchema":{"type":"object","properties":{"receiptAddress":{"type":"string"},"mandate":{"type":"string"},"invoiceHash":{"type":"string"}},"additionalProperties":false}},{"name":"wait_for_payment","description":"Poll the Rust backend until a relayed payment is confirmed or failed.","inputSchema":{"type":"object","properties":{"paymentId":{"type":"string"},"timeoutMs":{"type":"string","description":"Maximum wait in milliseconds, up to 120000"},"pollMs":{"type":"string","description":"Polling interval in milliseconds"}},"required":["paymentId"],"additionalProperties":false}},{"name":"pause_mandate","description":"Prepare an owner-signed transaction that pauses a ChainPay mandate.","inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"mandate":{"type":"string","description":"Specific mandate PDA; omit only for the legacy owner-scoped mandate"}},"required":["owner"],"additionalProperties":false}},{"name":"revoke_mandate","description":"Prepare an owner-signed transaction that permanently revokes a ChainPay mandate.","inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"mandate":{"type":"string","description":"Specific mandate PDA; omit only for the legacy owner-scoped mandate"}},"required":["owner"],"additionalProperties":false}}]}