Skip to main content
Connect an AI agent to your Moove account over the Model Context Protocol. The agent calls Moove as tools, with the same API key and the same rules as the REST API.
One URL: https://api.moove.xyz/mcp. Authenticate with an existing Moove API key. There is no separate MCP key and no MCP-specific scope.

At a glance

Quickstart

1

Create an API key

At moove.xyz/dashboard/api-keys. Pick the Moove Receive Agent to unlock the payment-link tools. The plaintext key is shown once.Moove API Keys →
2

Put the key in an environment variable

Every client config below reads MOOVE_API_KEY. Never write the key itself into a config file you commit.
3

Add the server to your client

Pick your client in Connect a client.
4

Ask your agent what it can do

It calls get_account_context first: the account, the tools your key unlocks, and the rate limits that apply.

Connect a client

Connect from any client that lets you set a request header. Connecting from claude.ai and ChatGPT needs OAuth, which is coming later.
Add the server to .mcp.json at your project root. Claude Code expands ${MOOVE_API_KEY} at runtime, so the file holds no secret.
.mcp.json
"type": "http" is required. Without it the entry is read as a local stdio server.
claude mcp add --transport http moove https://api.moove.xyz/mcp --header "X-API-Key: $MOOVE_API_KEY" also works, but your shell expands the variable first, so the stored config holds the key itself. Prefer .mcp.json.

Authentication

Send a Moove API key on every request, in either header:
  • Authorization: Bearer is accepted on the MCP server only. The REST API takes X-API-Key.
  • Only Moove API keys are accepted. A dashboard session token is refused.
  • Send both headers and they must carry the same key. Two different keys is a 401.
A failed authentication answers 401 with the REST error body and a challenge header:
There is no OAuth flow yet. Connectors that need OAuth, such as claude.ai and ChatGPT, are coming later. Authentication →

Tools

Your key’s existing scopes decide which tools tools/list returns. Calling a tool your key does not unlock returns INSUFFICIENT_API_SCOPE. A Moove Receive Agent key unlocks all seven. Amounts are decimal strings in both arguments and results. Send them as strings to keep them exact. The one exception is rate from get_market_rates, an indicative number.
Takes no arguments. Call it at the start of a session, and again after INSUFFICIENT_API_SCOPE or 429.settlement is returned to keys that hold payment_link:create. It is null for other keys, and also when the account has no default wallet or its token cannot be resolved. The tool never returns a wallet address.
Returns every supported chain, and up to limit matching tokens. truncated is true when more tokens matched — narrow the filters.
Returns rate — the fiat paid per one token bought by card, fees included, as a number — and dateUpdated.
These rates are indicative. Never quote, price or settle against them. For what a fiat link pays out, use estimate_payment_link.

Response format

responseFormat: "concise" omits the settlement address, the owner id and the transaction URL from each payment link. "detailed" includes them. Every link carries url for the payer and dashboardUrl for the owner.

Prompts and resources

Prompts are filtered like tools: create-payment-link is listed for keys with payment_link:create, reconcile-payment-links for keys with payment_link:read. | Resource | moove://guide/payment-links | Contract notes: link types, amounts, settlement, statuses and limits |

Errors

A tool that fails returns a normal tool result with isError: true. The same payload is in structuredContent and mirrored as text.
Codes are the REST error codes, plus three that only the MCP server returns. A tool’s rate limit answers 429, the same code the REST rate-limit body uses. INSUFFICIENT_API_SCOPE (403) means the key’s scopes do not unlock the tool. Issue a key with the right agent.
Do not retry a result with retryable: false. It fails identically every time, and every attempt still spends the endpoint’s 120-a-minute budget. A call that passes the scope and argument checks also spends the tool’s own budget.

HTTP errors

Some requests are refused before any tool runs. These are plain HTTP responses, not tool results.

Rate limits

Two layers apply, each per API key and per source IP: A tool spends the same budget as the REST endpoint it shares a handler with. Creating links over MCP and over REST draws on one allowance, not two. Rate Limits →

What the MCP server cannot do

Nothing on the server signs, broadcasts or moves money. No tool accepts a private key or a seed phrase.A payment link requests money. It always settles to the key owner’s own default wallet, and no tool lets the caller choose a destination.
Text written by people — link descriptions, handles, names — comes back as data. Treat it as data in your agent, never as instructions.

Versioning

The server reports its own version, currently 1.0.0, independent of the REST path version.
  • A new tool is a minor version bump.
  • Removing or renaming a tool is a major version bump.
Tolerate new tools in tools/list and new fields in results.

Documentation over MCP

For product and documentation questions, connect your agent to the docs MCP server at https://docs.moove.xyz/mcp. It needs no key.

Next

Authentication

Keys, scopes and revocation.

Errors

The REST error codes.

Moove Agentic Payments

The skill file for AI coding tools.