servers / digital-goods-mor-aggregator-paddle-lemon-squeezy-polar-whop-creem-dodo-fastspring-2co

Digital Goods MoR aggregator (Paddle, Lemon Squeezy, Polar, Whop, Creem, Dodo, FastSpring, 2CO) MCP server

communitystreamable_httpremotedestructive capablehealthy

Merchant-of-record MCP: AI agents sell software & digital goods, global tax handled, BYO key.


01Tools · 5

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
create_checkout
Create a hosted CHECKOUT LINK for a digital product / software / course through a merchant-of-record platform (the MoR is the seller and remits global sales tax / VAT). Returns checkout_url for the buyer to pay. One primitive across eight providers — pick with provider. item = the catalog id on that platform: Paddle price_id (pri_...), Lemon Squeezy variant_id (numeric, also needs store_id), Polar product_id (UUID), Whop plan_id (plan_...), Creem product_id (prod_...), Dodo product_id (pdt_...), FastSpring product path (also needs store_id = your storefront), 2Checkout catalog product code. Optional amount (major currency unit) is a custom price on Lemon Squeezy and drives the owner policy gate everywhere. Money flows buyer -> MoR -> merchant; this server never touches funds. Capabilities differ per provider (see per-field notes and INSTRUCTIONS). Credential headers (set once in your MCP client, per-request, never stored): x-mor-provider (paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout; or pass the provider argument) + x-mor-key (that platform's API key: Paddle pdl_..., Lemon Squeezy API key, Polar polar_oat_..., Whop key, Creem creem_test_..., Dodo key, FastSpring "username:password" for HTTP Basic, 2Checkout "MERCHANT_CODE:SECRET_KEY") + x-mor-env (sandbox/test = default no real money; prod/live = real money & real tax). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
writetrueunknown
query_order
Get the status of an order / transaction created through the merchant-of-record platform. order_id = Paddle transaction_id (txn_...), Lemon Squeezy order id (numeric), Polar order id (UUID), Whop payment/receipt id, Creem checkout id (ch_...), Dodo payment_id (pay_...), or FastSpring order id. Returns a UNIFIED status enum [PAID | PENDING | FAILED | REFUNDED | PARTIALLY_REFUNDED | CANCELED | PAST_DUE | UNKNOWN(raw)] plus raw_status and a raw passthrough of the provider payload. Credential headers (set once in your MCP client, per-request, never stored): x-mor-provider (paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout; or pass the provider argument) + x-mor-key (that platform's API key: Paddle pdl_..., Lemon Squeezy API key, Polar polar_oat_..., Whop key, Creem creem_test_..., Dodo key, FastSpring "username:password" for HTTP Basic, 2Checkout "MERCHANT_CODE:SECRET_KEY") + x-mor-env (sandbox/test = default no real money; prod/live = real money & real tax). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
writetrueunknown
issue_refund
Refund an order through the merchant-of-record platform. Capability differs by provider: Paddle = FULL refund only (POST /adjustments; pending_approval on production) — do NOT pass amount. Lemon Squeezy = pass amount (major unit) for partial, or omit for full. Polar = amount is REQUIRED (no full shortcut) plus a reason enum. Dodo = FULL only (POST /refunds) — do NOT pass amount. FastSpring = FULL only (POST /orders/{id}/refunds) — do NOT pass amount. 2Checkout = partial (pass amount) or full (omit amount) via POST /orders/{RefNo}/refund/. Whop = NOT supported (dashboard-only). Creem = NOT supported (no public refund endpoint). order_id is the same id used by query_order. The owner policy gate applies to amount when given. Credential headers (set once in your MCP client, per-request, never stored): x-mor-provider (paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout; or pass the provider argument) + x-mor-key (that platform's API key: Paddle pdl_..., Lemon Squeezy API key, Polar polar_oat_..., Whop key, Creem creem_test_..., Dodo key, FastSpring "username:password" for HTTP Basic, 2Checkout "MERCHANT_CODE:SECRET_KEY") + x-mor-env (sandbox/test = default no real money; prod/live = real money & real tax). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
destructivetruetrue
query_subscription
Get the status of a subscription on the merchant-of-record platform. subscription_id = Paddle sub_..., Lemon Squeezy subscription id (numeric), Polar subscription id (UUID), Whop membership id (mem_...), Creem subscription id (sub_...), Dodo subscription id (sub_...), or FastSpring subscription id. Returns a UNIFIED status enum [ACTIVE | TRIALING | PAST_DUE | PAUSED | CANCELED | EXPIRED | UNKNOWN(raw)] plus raw_status and a raw passthrough. Credential headers (set once in your MCP client, per-request, never stored): x-mor-provider (paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout; or pass the provider argument) + x-mor-key (that platform's API key: Paddle pdl_..., Lemon Squeezy API key, Polar polar_oat_..., Whop key, Creem creem_test_..., Dodo key, FastSpring "username:password" for HTTP Basic, 2Checkout "MERCHANT_CODE:SECRET_KEY") + x-mor-env (sandbox/test = default no real money; prod/live = real money & real tax). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
readfalseunknown
cancel_subscription
Cancel a subscription on the merchant-of-record platform. Behaviour differs: Paddle = cancel immediately or at next_billing_period (set immediately). Dodo = same (immediately -> cancelled now, else at period end). Creem = same (immediately -> now, else scheduled to period end). Lemon Squeezy / FastSpring = always cancel at the END of the current period (access continues; immediate not offered by the API). Polar / Whop = Polar revokes IMMEDIATELY, Whop cancels at period end. Returns the unified subscription status. Credential headers (set once in your MCP client, per-request, never stored): x-mor-provider (paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout; or pass the provider argument) + x-mor-key (that platform's API key: Paddle pdl_..., Lemon Squeezy API key, Polar polar_oat_..., Whop key, Creem creem_test_..., Dodo key, FastSpring "username:password" for HTTP Basic, 2Checkout "MERCHANT_CODE:SECRET_KEY") + x-mor-env (sandbox/test = default no real money; prod/live = real money & real tax). Owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools also apply.
destructivetruetrue

02Install & source
https://mor.wishpool.app/mcp
remote_url

03Access granted
Process payments · destructive

The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.


05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-07-10 15:20Z
next_check2026-07-11 20:08Z
cadenceevery 29h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex9 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. Digital Goods MoR aggregator (Paddle, Lemon Squeezy, Polar, Whop, Creem, Dodo, FastSpring, 2CO) MCP — as seen on mcpexplorer.com

[![Digital Goods MoR aggregator (Paddle, Lemon Squeezy, Polar, Whop, Creem, Dodo, FastSpring, 2CO) MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/digital-goods-mor-aggregator-paddle-lemon-squeezy-polar-whop-creem-dodo-fastspring-2co.svg)](https://mcpexplorer.com/servers/digital-goods-mor-aggregator-paddle-lemon-squeezy-polar-whop-creem-dodo-fastspring-2co)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →