Clawallex
MCP Server for the Clawallex payment API.
What it can do
- Batch Card Balances: Check balances for multiple cards in one call.
- Clawallex Pay: Pay for a product or service using USDC. Creates a single-use flash virtual card (card_type=100), deducts from wallet balance, returns card details for checkout. Mode A (mode_code=100,
- Clawallex Refill: Top up the balance of a subscription (stream) card. Only stream cards (card_type=200) can be refilled. Refill mode follows the card's creation mode. Mode A: deducts from wallet balan
What data it sees
Do you need an account
No: the server works without sign-in
MCP Server for the Clawallex payment API. Pay for anything with USDC — Clawallex converts your stablecoin balance into virtual cards that work at any online checkout.
How to connect
How to connect Clawallex to Claude
The server address to paste into Claude settings:
https://clawallex--clawallex.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Clawallex to ChatGPT
The server address to paste into ChatGPT settings:
https://clawallex--clawallex.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Clawallex to Cursor
The server address to paste into Cursor settings:
https://clawallex--clawallex.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (14)
Raw names from tools/list. Only developers need these.
| batch_card_balances | Check balances for multiple cards in one call. |
| clawallex_pay | Pay for a product or service using USDC. Creates a single-use flash virtual card (card_type=100), deducts from wallet balance, returns card details for checkout. Mode A (mode_code=100, default): wallet balance → flash card. Immediate settlement. Mode B (mode_code=200): for callers with self-custody wallets — signing is performed by the caller. x402 on-chain two-stage flow: Stage 1 (Quote): POST with mode_code=200, chain_code, token_code. The 402 response is EXPECTED — it is a quote, NOT an error. Returns: card_order_id, client_request_id, x402_reference_id, payee_address, asset_address, final_card_amount, issue_fee_amount, fx_fee_amount, fee_amount, payable_amount. Agent signs: construct and sign an EIP-3009 transferWithAuthorization using your own wallet/signing library. EIP-712 domain: name="USDC", version="2", verifyingContract=asset_address from Stage 1. authorization fields: from=your wallet, to=payee_address, value=maxAmountRequired, validAfter/validBefore=unix seconds validity window, nonce=random 32-byte hex (unique per auth). authorization.from MUST equal payer_address submitted in Stage 1. Stage 2 (Settle): POST again with SAME client_request_id + signed x402 data: - payment_payload.network and payment_requirements.network MUST equal chain_code from Stage 1 - payment_requirements.payTo MUST equal payee_address from Stage 1 - payment_requirements.asset MUST equal asset_address from Stage 1 - maxAmountRequired = payable_amount × 10^6 (USDC decimals, e.g. '207.59' → '207590000') - payment_requirements.extra.referenceId MUST equal x402_reference_id from Stage 1 - extra.card_amount = amount, extra.paid_amount = amount + fee_amount If settle rejected, order stays pending_payment — fix params and retry with same client_request_id. Fee: fee_amount = issue_fee_amount + fx_fee_amount. total = amount + fee_amount. Example (Mode A): clawallex_pay({ amount: 50, description: 'OpenAI API credits' }) |
| clawallex_refill | Top up the balance of a subscription (stream) card. Only stream cards (card_type=200) can be refilled. Refill mode follows the card's creation mode. Mode A: deducts from wallet balance. client_request_id is the idempotency key (auto-generated if omitted). Mode B: x402 settle (no 402 challenge stage) — agent constructs and signs the payment independently. Step 1: call get_x402_payee_address(chain_code, token_code) to get payee_address and asset_address. payee_address → payment_requirements.payTo asset_address → payment_requirements.asset (the USDC token contract on the target chain, e.g. BASE USDC) Step 2: sign an EIP-3009 transferWithAuthorization using your wallet/signing library. EIP-712 domain: name="USDC", version="2", verifyingContract=asset_address from Step 1. authorization.from MUST equal payer_address submitted in the request. Step 3: maxAmountRequired = amount × 10^6 (USDC has 6 decimals; refill has no extra fee, e.g. '50.00' → '50000000'). Step 4: submit with x402_reference_id, x402_version, payment_payload, payment_requirements. - payment_payload.network and payment_requirements.network MUST equal chain_code used in Step 1 - payment_requirements.extra.referenceId MUST equal x402_reference_id - x402_reference_id is the idempotency key (not client_request_id) Tip: use get_card_balance first to check current balance. Example: clawallex_refill({ card_id: 'c_123', amount: 50 }) |
| clawallex_subscribe | Set up a reloadable virtual card for recurring/subscription payments. Creates a stream card (card_type=200) that stays active and can be refilled via clawallex_refill. Mode A (mode_code=100, default): wallet balance → stream card. Immediate settlement. Mode B (mode_code=200): for callers with self-custody wallets — signing is performed by the caller. x402 on-chain two-stage flow: Stage 1 (Quote): POST with mode_code=200, chain_code, token_code. The 402 response is EXPECTED — it is a quote, NOT an error. Returns: card_order_id, client_request_id, x402_reference_id, payee_address, asset_address, final_card_amount, issue_fee_amount, monthly_fee_amount, fx_fee_amount, fee_amount, payable_amount. Agent signs: construct and sign an EIP-3009 transferWithAuthorization using your own wallet/signing library. EIP-712 domain: name="USDC", version="2", verifyingContract=asset_address from Stage 1. authorization fields: from=your wallet, to=payee_address, value=maxAmountRequired, validAfter/validBefore=unix seconds validity window, nonce=random 32-byte hex (unique per auth). authorization.from MUST equal payer_address submitted in Stage 1. Stage 2 (Settle): POST again with SAME client_request_id + signed x402 data: - payment_payload.network and payment_requirements.network MUST equal chain_code from Stage 1 - payment_requirements.payTo MUST equal payee_address from Stage 1 - payment_requirements.asset MUST equal asset_address from Stage 1 - maxAmountRequired = payable_amount × 10^6 (USDC decimals, e.g. '207.59' → '207590000') - payment_requirements.extra.referenceId MUST equal x402_reference_id from Stage 1 - extra.card_amount = amount, extra.paid_amount = amount + fee_amount If settle rejected, order stays pending_payment — fix params and retry with same client_request_id. Fee: fee_amount = issue_fee_amount + monthly_fee_amount + fx_fee_amount. total = amount + fee_amount. Example: clawallex_subscribe({ initial_amount: 100, description: 'AWS monthly billing' }) |
| create_card_order | Advanced: create a virtual card with full control over payment mode and card type. Most agents should use clawallex_pay or clawallex_subscribe instead. Mode A (mode_code=100): wallet balance deduction, immediate settlement. Mode B (mode_code=200): for callers with self-custody wallets — signing is performed by the caller. x402 two-stage flow: Stage 1 (Quote): provide chain_code + token_code. The 402 response is EXPECTED (a quote, NOT an error). Returns: payee_address, asset_address, x402_reference_id, fee breakdown, payable_amount. Agent signs: construct and sign an EIP-3009 transferWithAuthorization using your own wallet/signing library. EIP-712 domain: name="USDC", version="2", verifyingContract=asset_address from Stage 1. authorization fields: from=your wallet, to=payee_address, value=maxAmountRequired, validAfter/validBefore=unix seconds validity window, nonce=random 32-byte hex (unique per auth). authorization.from MUST equal payer_address submitted in Stage 1. Stage 2 (Settle): reuse SAME client_request_id + provide x402_version, payment_payload, payment_requirements, extra. - payment_payload.network and payment_requirements.network MUST equal chain_code from Stage 1 - payment_requirements.payTo MUST equal payee_address from Stage 1 - payment_requirements.asset MUST equal asset_address from Stage 1 - payment_requirements.extra.referenceId MUST equal x402_reference_id from Stage 1 - maxAmountRequired = payable_amount × 10^decimals (USDC = 6, e.g. '207.59' → '207590000') - extra.card_amount = amount, extra.paid_amount = amount + fee_amount If settle rejected, order stays pending_payment — retry with same client_request_id. card_type: 100=flash (single-use), 200=stream (reloadable). Fee: flash = issue_fee + fx_fee; stream = issue_fee + monthly_fee + fx_fee. |
| get_card_balance | Get the current balance and status of a virtual card. Returns available_balance, card_currency, status, and updated_at. |
| get_card_details | Get full card details including PAN, CVV, expiry, balance, cardholder info, billing address, and risk controls. |
| get_wallet | Get the wallet details for the current API key. Each API key has exactly one wallet — shared across all agents using the same API key. Returns available_balance, frozen_balance, low_balance_threshold, currency (USD), and status. Use this to check if there is sufficient balance before creating cards (Mode A) or refilling (Mode A). |
| get_wallet_recharge_addresses | Get the on-chain deposit addresses for a wallet. Send USDC to one of these addresses to top up the wallet balance. If the result is empty, no deposit address has been created yet — ask the user to visit https://app.clawallex.com to create one. |
| get_x402_payee_address | Get the system receiving address for x402 on-chain payments. When to use: MUST call this before Mode B Refill to obtain payee_address and asset_address. Not needed for Mode B card creation — the 402 quote response already includes both addresses. Returns: payee_address (payment_requirements.payTo), asset_address (payment_requirements.asset = USDC token contract). |
| list_cards | List virtual cards created by this agent (scoped to the server's client_id). Cards created by other agents using the same API key are not visible. Returns: card_id, mode_code, card_type (flash/stream), status, masked PAN, balance, and expiry. |
| list_transactions | List card transactions for this agent (scoped to the server's client_id). Transactions from other agents using the same API key are not visible. All filter parameters are optional — omit all to list recent transactions across all cards. |
| update_card | Update card risk controls: per-transaction limit and MCC whitelist/blacklist. At least one field must be provided. |
| whoami | Query the current MCP connection status. Returns user_id, api_key_id, and client_id bound to this MCP token. |