MCP - Technical User Guide

Use the MoneyHash MCP server to look up your payment data from any AI assistant that supports MCP. Ask about an intent, a transaction, a customer, or a provider response, and the assistant fetches the answer from MoneyHash.

The server is read-only. It cannot create, update, capture, or refund a payment.

Typical questions:

  • "Why did payment intent <INTENT_ID> fail?"
  • "What did the provider return for transaction <TRANSACTION_ID>?"
  • "List [email protected]'s payments this month. How many failed?"
  • "Was the webhook for this payment delivered?"
Note

MCP stands for Model Context Protocol, an open standard that lets AI assistants call tools exposed by a server. You do not need to know how it works to use this page.

What you can query

AreaWhat's returned
Payment intentsThe intent and every transaction attempt and retry under it
TransactionsStatus, amount, provider used, and the reason for the final status
Provider interactionsThe raw request and response exchanged with the provider
WebhooksDelivery status of webhooks sent to your endpoints
CustomersCustomer profile (searchable by email) and payment history
Saved cardsTokenized cards on a customer's profile, masked details only
Payment linksPayment link details
ProvidersProviders connected to an account
AccountsAccounts in your organization
AnalyticsAcceptance rate, success rate, and decline reasons from your dashboard

When to use it

Use the MCP when…Use the Dashboard or the API when…
You are investigating one intent or transaction and want a plain-English answerYou need to create, capture, refund, or edit a payment
You want to chain follow-up questions ("now show me the provider response")You need configuration changes
You already work in an AI-enabled editor and do not want to switch toolsYou need data outside the tool list below

How it works

Your AI assistant (the MCP client) sends each request over HTTP with your token. The MoneyHash MCP server checks the token, reads only your organization's data, and returns the result to the assistant. The client never calls the MoneyHash API directly.

Step 1: Get an API token

MCP access is set up for you by MoneyHash. You do not create tokens yourself.

  1. Contact your MoneyHash account manager or support and ask for MCP access.
  2. MoneyHash creates a token for your organization and sends it to you through a secure channel.
  3. Store the token in a secrets manager or the client's config file. Do not paste it into tickets, chats, or shared documents.
    Each token is created for one mode:
Token typeReadsUse it for
LiveLive-mode dataInvestigating real payments
TestTest-mode dataTrying the MCP server without touching real payments

Both modes run on MoneyHash production and use the same server URL. To query the other mode, ask MoneyHash for a token of that type.

Keep in mind:

  • Tokens are scoped to one organization and cannot access any other organization's data.
  • Tokens expire after 90 days. Ask MoneyHash for a new one and replace it in your client config.
  • Treat the token as a secret. If it is exposed, contact MoneyHash immediately so it can be revoked.

Step 2: Connect your client

The server uses MCP over HTTP. Every client needs the same two values:

SettingValue
Server URLhttps://agentic.moneyhash.io/mcp
Authorization headerBearer <YOUR_API_TOKEN>

Restart the client after adding the config so the MoneyHash tools load.

There are two ways to connect, depending on what your client supports:

Option A: Direct HTTPOption B: Local bridge (mcp-remote)
How it worksThe client connects to the server URL itself and sends your token in a headerA small program on your machine connects to the server and hands the results to the client
Use it forCursor, Claude Code, ChatGPT/Codex, VS CodeClaude Desktop
WhySimplest setup, nothing extra to installClaude Desktop's config file only accepts programs that run on your machine, not a server URL
RequiresNothing extraNode.js (it runs through npx)

If your client accepts a server URL and headers, use Option A. If it only accepts a command to run, as Claude Desktop does, use Option B.

Option A: Direct HTTP

Cursor

Add to ~/.cursor/mcp.json (or Settings → MCP):

{
  "mcpServers": {
    "moneyhash": {
      "type": "http",
      "url": "https://agentic.moneyhash.io/mcp",
      "headers": { "Authorization": "Bearer <YOUR_API_TOKEN>" }
    }
  }
}

Claude Code

claude mcp add --transport http moneyhash \
  https://agentic.moneyhash.io/mcp \
  --header "Authorization: Bearer <YOUR_API_TOKEN>"

Run /mcp to confirm the server loaded.

ChatGPT / Codex

Add MoneyHash as a custom MCP server using the server URL and bearer token above. From the Codex CLI:

codex mcp add moneyhash --url https://agentic.moneyhash.io/mcp \
  --header "Authorization: Bearer <YOUR_API_TOKEN>"

VS Code

Add to .vscode/mcp.json. VS Code uses servers, not mcpServers:

{
  "servers": {
    "moneyhash": {
      "type": "http",
      "url": "https://agentic.moneyhash.io/mcp",
      "headers": { "Authorization": "Bearer <YOUR_API_TOKEN>" }
    }
  }
}

Option B: Local bridge for Claude Desktop

Claude Desktop starts MCP servers as local programs. It does not accept a url entry in its config file, and skips it with the message "not valid MCP server configurations." mcp-remote is a small bridge that Claude Desktop starts locally and that forwards to the MoneyHash server. It runs through npx, which comes with Node.js. Install Node.js (LTS) first if npx is not already on your machine.

  1. In Claude Desktop, open the Claude menu in your system menu bar (not the settings inside the chat window), then Settings → Developer → Edit Config. This opens claude_desktop_config.json.
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the mcpServers block below at the top level of the file, next to any existing keys. Do not put it inside preferences. If the file already has an mcpServers object, add moneyhash inside it.
{
  "mcpServers": {
    "moneyhash": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://agentic.moneyhash.io/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer <YOUR_API_TOKEN>"
      }
    }
  }
}
  1. Fully quit Claude Desktop (Cmd+Q on macOS, not just closing the window) and reopen it.
If Claude Desktop cannot find npx

Run which npx in a terminal (macOS) and put the full path it prints, for example /usr/local/bin/npx, in the "command" field instead of npx. Claude Desktop does not use your shell's full PATH.

Other clients

Any MCP client that supports HTTP servers works. Point it at https://agentic.moneyhash.io/mcp and send the token as a bearer token in the Authorization header.

Step 3: Run your first query

Every query runs against one account and one environment.

  • Mode: set by the token. A live token reads live-mode data and a test token reads test-mode data, both on MoneyHash production. To query the other mode, use a token of that type.
  • Account: every account-level tool takes an account ID. If the assistant asks for one, copy it from the MoneyHash Dashboard under Settings → Accounts and include it in your prompt.
    Example session:
On account <ACCOUNT_ID>, get payment intent <INTENT_ID> and explain why it failed.
 
Show the provider interactions for the failed transaction.

More examples:

  • "Was this a provider decline, or did it fail before reaching the provider?"
  • "Find [email protected] and list their recent transactions."
  • "Which providers are connected to account <ACCOUNT_ID>?"
  • "Was a webhook sent for transaction <TRANSACTION_ID>, and was it delivered?"

Tool reference

All tools are read-only. Parameter names below are exactly as the server exposes them. List-style tools accept optional page and page_size.

AreaToolWhat it doesRequired parametersOptional parameters
IntentsgetIntentFetch a payment intent by IDintent_idaccount_id, is_live
IntentsgetIntentTransactionsAll transactions for a payment intentaccount_id, intent_idpage, page_size, is_live
TransactionsgetTransactionFetch a transaction by UUIDtransaction_uuidaccount_id, is_live
TransactionslistTransactionsList transactionsaccount_idstatus, page, page_size, is_live
Provider interactionsgetProviderInteractionsProvider API request and response for a transactionaccount_id, transaction_uuidpage, page_size, is_live
WebhooksgetWebhookDeliveriesWebhook delivery historyaccount_idintent_id, transaction_uuid, page, page_size, is_live
CustomerslistCustomersList customersaccount_idemail, page, page_size, is_live
CustomersgetCustomerA customer by UUID, with saved cardsaccount_id, customer_uuidis_live
CustomersgetCustomerTransactionsAll transactions for a customeraccount_id, customer_uuidpage, page_size, is_live
Saved cardslistCardsSaved cards for a customeraccount_id, customer_uuidis_live
Saved cardsgetCardTokenCard token detailsaccount_id, card_uuidis_live
ProviderslistConnectedProvidersConnected payment providersaccount_idpage, page_size, is_live
AccountslistAccountsAccounts in your organizationaccount_idpage, page_size, is_live
Payment linksgetPaymentLinkPayment link detailsaccount_id, payment_link_idis_live
AnalyticsgetAnalyticsDashboard analytics (see below)metric, start_date, end_datesee below
AnalyticslistAnalyticsMetricsLists supported metrics and valid filter valuesnonenone
Note

Always include account_id when you ask about an intent or transaction, even though getIntent and getTransaction list it as optional.

Analytics

getAnalytics returns the same numbers your Dashboard shows for the same filters. It is read-only.

ParameterMeaning
metric (required)One of acceptance_rate, success_rate, decline_reasons, summary
start_date, end_date (required)YYYY-MM-DD, inclusive UTC days, at most 30 days apart
group_bynone (default), provider, or method. Rate metrics only
providersProvider display names, up to 10
currenciesCurrency codes, for example ['SAR']
initiationCIT or MIT
account_idsRestrict to these account IDs, up to 20
decline_typeSOFT_DECLINE or HARD_DECLINE. decline_reasons only
limitTop N rows, 1 to 50, default 10. decline_reasons only
  • Only provider and method are breakdowns. Everything else is a filter. To split by currency, run one query per currency.
  • If the response is flagged empty, there is no data for that filter. It does not mean 0%.
  • Names are shown exactly as returned. Blank or UNKNOWN values are not interpreted.

Limits and behavior

ItemBehavior
AccessRead-only. No payment can be created, captured, refunded, or edited.
ScopeA token reads only the organization it was issued for.
ModeFixed per token: live or test, both on MoneyHash production.
Rate limit60 requests per minute per token.
Token lifetime90 days.
Analytics rangeAt most 30 days per query.

Troubleshooting

My token stopped working. +
It most likely expired after 90 days. Ask MoneyHash for a new token and replace it in your config. No other changes are needed.
Claude Desktop shows "not valid MCP server configurations and were skipped". +
You used the `"type": "http"` format in `claude_desktop_config.json`. Use the `mcp-remote` block in the Claude Desktop section above.
The log says "Failed to spawn process: No such file or directory". +
Claude Desktop cannot find `npx`. Install Node.js, run `which npx`, and use the full path it prints as the `"command"`.
The log says `getaddrinfo ENOTFOUND` for the server hostname. +
The server URL is wrong or does not resolve from your network. Check `https://agentic.moneyhash.io/mcp` for typos, and test it with `nslookup ` in a terminal.
The assistant keeps asking for an account ID. +
Account-level tools need one. Copy it from the MoneyHash Dashboard under Settings → Accounts and include it in your prompt.
The server does not appear after I edit the config. +
Restart the client fully. Most clients read MCP config only on startup. In Claude Desktop, quit with Cmd+Q rather than closing the window.

FAQ

Which clients are supported? +
Any client that supports HTTP MCP servers, including Cursor, Claude Code, Claude Desktop (through `mcp-remote`), ChatGPT/Codex, and VS Code.
Can the MCP server move money? +
No. It is read-only. It cannot create, capture, refund, or edit payments.
Can a token access another organization's data? +
No. A token is locked to the organization it was issued for.
Can I create a token myself? +
No. MoneyHash creates tokens for your organization and shares them with you securely. Contact your account manager or support.

Did this page help you?