Connecting an AI assistant with the MCP server
Point an MCP client at EmbPay's server with your API key and ask it about sales, create products and checkout links, or refund an order you confirm.
EmbPay hosts a remote Model Context Protocol (MCP) server at https://www.embpay.com/mcp. Any client that speaks MCP over Streamable HTTP with a Bearer header can use it: Claude Code, Claude Desktop (through the mcp-remote bridge), Cursor, VS Code and others. The full client-by-client setup lives on the MCP page.
Setting it up
- 1Create an API key in Settings. Start with a test key (ep_test_): the assistant then sees rehearsal orders only. Leave “Allow this key to move money” unticked unless you need refund requests, archiving or live checkout links.
- 2Add the server to your client. In Claude Code that is one command: claude mcp add --transport http embpay https://www.embpay.com/mcp --header "Authorization: Bearer ep_test_…". Other clients take a JSON entry with the same url and header; the exact text for each is on the MCP page.
- 3Ask it something. A good first question is “what is my account set up like?”, which calls get_account and reports your plan, Stripe status and connected store.
What the assistant can do
| Area | Tools |
|---|---|
| Account | get_account, list_webhook_endpoints, list_events |
| Products | list_products, get_product, create_product, update_product, archive_product |
| Orders | list_orders, get_order, refund_order, list_customers, get_sales_summary |
| Checkout links | create_checkout (a 24-hour hosted payment page for any amount), get_checkout |
| Marketing | list_coupons, create_coupon, deactivate_coupon, list_abandoned_carts |
Orders from a connected WooCommerce store appear alongside EmbPay's own, marked with their store order number. Products that a store pushed into EmbPay are read-only to the assistant, because the store owns them.
What it cannot do without your say-so
A key created without “Allow this key to move money” has no refund_order, archive_product or deactivate_coupon tools at all, and create_checkout only makes test-mode links. That is the default, and it is the right choice for most people: the assistant can read everything and build products, but it cannot take anything offline or collect real money.
On a money-enabled key, refund_order still does not refund. It returns a link to a page in your dashboard that shows the order, the customer and the exact amount; the refund runs only when you click Approve there, and the link expires after 24 hours. archive_product and deactivate_coupon do run when called, so the server tells the assistant to restate the item and get your confirmation first.
Limits
- 100 requests per minute per key, shared with the REST API.
- No OAuth yet, so claude.ai's web connectors (which require it) cannot connect. Desktop and IDE clients that send a header can.
- The server is stateless: each request is authenticated on its own and nothing is remembered between calls beyond what is in your account.
Still stuck?
Email support@embpay.com. It is the same address on every plan — there is no priority queue to be prioritised over. If something on this page disagrees with what the product does, that is a bug in this page and we want to hear about it.
Related
- API keys and rate limitsCreate an API key on the Pro plan, authenticate with a bearer token, and stay inside 100 requests per minute per key.
- Receiving webhooks and verifying signaturesReceive seven order and subscription events at your own https endpoint, verify the signature, and understand the retry schedule.
- Issuing a refundRefund a completed order from your dashboard in two clicks, and know what a refund does and does not undo.