Madhouse Wallet MCP Server
Send global payouts from any AI assistant using natural language.
The Madhouse Wallet MCP (Model Context Protocol) server connects AI assistants like Claude, Cursor, Copilot, and Windsurf to the Madhouse Wallet payout API β letting you send USDC payouts to 85+ currencies, manage bank recipients, and get live FX quotes entirely through chat.
Natural language
Just describe what you want. Your AI figures out which tool to call.
85+ currencies
Pay out to bank accounts across emerging and developed markets.
Your API key
Multi-tenant β each user provides their own Madhouse API key.
Quick Start
Get up and running in under 2 minutes.
- 1
Get your API key
Log in to the Madhouse Wallet dashboard and navigate to Developers β API Keys to generate a key. It starts withmw_live_. - 2
Add the MCP server to your AI client
Paste the endpoint URL and your API key as a Bearer token. See the Installation section for client-specific instructions. - 3
Start sending in chat
Type something like βSend $500 to my recipient in Kenyaβ and your AI will handle the rest.
Authentication
Every request is authenticated with your Madhouse Wallet API key.
Pass your API key as a Bearer token in the Authorization header of every request. This is handled automatically by your AI client once you complete the setup.
Authorization: Bearer mw_live_your_keyInstallation
Choose your AI client below for specific setup instructions.
Replace mw_live_your_key with your actual API key in all examples below.
Run this command in your terminal. Claude Code stores the config automatically.
claude mcp add --transport http madhouse https://main.d2sl38naixknlb.amplifyapp.com/api/mcp \
--header "Authorization: Bearer mw_live_your_key"npm install -g @anthropic-ai/claude-code.Tools Reference
12 tools covering the full payout workflow β from quoting to recipient management.
madhouse_get_limits
madhouse_get_limitsReturns the min and max USD amounts your account can send per transfer.
No parameters required.
Example prompt
βWhat are my Madhouse transfer limits?β
madhouse_get_quote
madhouse_get_quoteGet a live USD β target currency exchange rate. Returns a quoteId valid for 5 minutes required by create_transfer.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| source_amount | number | Yes | USD amount to send (e.g. 500) |
| target_currency | string | Yes | ISO 4217 code β e.g. "KES", "GBP", "EUR" |
Example prompt
βGet me a quote to send $500 to Kenya.β
madhouse_create_transfer
madhouse_create_transferInitiate a USDC payout. Returns a deposit_address β send USDC there to trigger the bank transfer.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| quote_id | string (UUID) | Yes | From madhouse_get_quote β valid 5 min |
| amount | number | Yes | USD amount β must match the quote exactly |
| recipient_id | number | Yes | Recipient ID from madhouse_list_recipients |
| wallet_address | string | Yes | EVM (0x...) or Solana address sending USDC |
| user_id | string | Yes | Your Madhouse Wallet user ID (from account settings) |
| customer_uuid | string (UUID) | Yes | Your unique reference for this transfer |
| customer_email | string | No | Notification email (defaults to account email) |
| source_token | string | No | Token to send β default "usdc" |
| source_network | string | No | Network β default "base". Options: base, arbitrum, ethereum, optimism, polygon, solana |
Example prompt
βSend $200 to John in Kenya using my Base wallet.β
madhouse_get_transfer
madhouse_get_transferPoll the current status of a transfer. Status lifecycle: ready_to_process β processing β transfer_created β completed | failed.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| transfer_id | string | Yes | Transfer ID returned by madhouse_create_transfer |
Example prompt
βWhat's the status of my transfer abc-123?β
madhouse_cancel_transfer
madhouse_cancel_transferCancel a pending transfer before USDC is sent. Omit transfer_id to cancel all pending transfers.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| transfer_id | string | No | Transfer ID to cancel. Omit to cancel ALL pending transfers. |
Example prompt
βCancel all my pending transfers.β
madhouse_list_recipients
madhouse_list_recipientsList all active bank recipients on your account.
No parameters required.
Example prompt
βShow me all my recipients.β
madhouse_get_recipient
madhouse_get_recipientGet details of a single recipient by ID.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| recipient_id | number | Yes | Recipient ID from madhouse_list_recipients |
Example prompt
βShow details for recipient 12345.β
madhouse_create_recipient
madhouse_create_recipientAdd a new bank account recipient. Call madhouse_get_account_requirements first to know which fields to provide.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Your Madhouse Wallet user ID |
| currency | string | Yes | ISO 4217 code β e.g. "GBP", "KES" |
| type | string | Yes | Account type from madhouse_get_account_requirements β e.g. "sort_code", "iban" |
| account_holder_name | string | Yes | Full legal name of the account holder |
| details | object | Yes | Bank account fields β keys vary by currency/type |
Example prompt
βAdd a GBP recipient for Jane Smith with sort code 20-00-00 and account 12345678.β
madhouse_update_recipient
madhouse_update_recipientUpdate the name or bank details of an existing recipient.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| recipient_id | number | Yes | Recipient ID to update |
| account_holder_name | string | No | New full legal name |
| details | object | No | Updated bank account fields |
Example prompt
βUpdate recipient 12345's name to Jane Doe.β
madhouse_delete_recipient
madhouse_delete_recipientPermanently remove a bank recipient. Cannot delete while a transfer to them is in-flight.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| recipient_id | number | Yes | Recipient ID to delete |
Example prompt
βDelete recipient 12345.β
madhouse_get_account_requirements
madhouse_get_account_requirementsReturns the bank fields required to create a recipient for a given currency β including validation rules and allowed values.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| currency | string | Yes | ISO 4217 code β e.g. "GBP", "NGN", "KES" |
Example prompt
βWhat fields do I need to create a Nigerian Naira recipient?β
madhouse_refresh_account_requirements
madhouse_refresh_account_requirementsRefresh required fields after filling in a field that triggers conditional requirements (e.g. selecting bank country reveals more fields).
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| currency | string | Yes | ISO 4217 currency code |
| type | string | Yes | Account type β e.g. "iban", "sort_code" |
| details | object | Yes | Partial details filled in so far |
Example prompt
βRefresh the requirements for an IBAN recipient after selecting Germany as the bank country.β
Examples
How your AI chains tools together to complete real payout workflows.
Check transfer limits
βWhat are my Madhouse transfer limits?β
Tool call sequence
- 1
madhouse_get_limits β returns min/max USD amounts
Get an FX quote
βGet me a quote to send $500 to Kenya.β
Tool call sequence
- 1
madhouse_get_limits β verify $500 is within limits - 2
madhouse_get_quote(500, "KES") β returns rate, fees, and quoteId
Send a payout end-to-end
βSend $200 to John in Kenya using my Base wallet.β
Tool call sequence
- 1
madhouse_list_recipients β find John's recipient ID - 2
madhouse_get_quote(200, "KES") β get quoteId - 3
madhouse_create_transfer β returns deposit_address - β
You send USDC to the deposit_address - 5
madhouse_get_transfer β poll until completed
Add a new recipient
βAdd a UK GBP recipient for Jane Smith, sort code 20-00-00, account 12345678.β
Tool call sequence
- 1
madhouse_get_account_requirements("GBP") β get required fields - 2
madhouse_create_recipient β creates the recipient
Supported Currencies
Pay out to 85+ currencies across emerging and developed markets.
Use madhouse_get_account_requirements with any currency code to see what bank fields are required for that country.