Skip to main content
Glama

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

Server Details

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

Status
Unhealthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 5 of 5 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: creating a checkout, querying an order or subscription, canceling a subscription, and issuing a refund. There is no overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_checkout, query_order, cancel_subscription), making the naming predictable and easy to understand.

Tool Count5/5

Five tools is well-scoped for a digital goods server covering the essential lifecycle actions: purchase, status queries, cancellation, and refunds. Each tool earns its place.

Completeness4/5

Core operations are covered, but minor gaps exist (e.g., no tool to update a subscription or list orders). These are acceptable given the server's focused purpose.

Available Tools

5 tools
cancel_subscriptionA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoMerchant-of-record platform (or set the x-mor-provider header). paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout.
immediatelyNoPaddle ONLY: true = cancel now, false/omit = at next billing period. Lemon Squeezy always cancels at period end; Polar always cancels immediately.
subscription_idYesThe subscription id to cancel (Paddle sub_...; Lemon Squeezy numeric; Polar UUID).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description extensively explains behavioral differences across platforms (e.g., immediate vs period-end cancellation), credential headers, and the destructive nature of the operation. This far exceeds the annotations which only set destructiveHint true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but necessarily detailed due to platform variability. It is front-loaded with the purpose and well-structured by platform. A few sentences could be tightened, but no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and high complexity (multiple platforms, different behaviors), the description is comprehensive. It covers credential setup, platform behaviors, and return value, giving the agent all needed contextual information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra context about credential headers and platform-specific behaviors for the 'immediately' parameter, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it cancels a subscription on merchant-of-record platforms. It lists specific platforms and their behaviors, distinguishing this cancellation tool from sibling tools like create_checkout or issue_refund.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (cancelling subscriptions) and details platform-specific behaviors. However, it does not explicitly state when not to use it or mention alternatives, though no other cancellation tool exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_checkoutAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesThe item id to sell. Paddle = price_id (pri_...) to bill the catalog price, OR product_id (pro_...) together with amount + currency to charge a CUSTOM price (donations, pay-what-you-want, variable services); Lemon Squeezy = variant_id (numeric); Polar = product_id (UUID); Whop = plan_id (plan_...); Creem = product_id (prod_...); Dodo = product_id (pdt_...); FastSpring = product path.
amountNoOptional price in the MAJOR currency unit (e.g. 19.99). Paddle: a custom price when item is a product_id (pro_...) — also send currency. Lemon Squeezy = custom_price override. Other providers use the catalog price (amount only drives the owner policy gate).
countryNoDodo ONLY: 2-letter billing country code for the required billing address (default US; the buyer can change it on the hosted page). Ignored by other providers.
currencyNoISO currency code (e.g. TWD, USD, JPY). Required by Paddle when item is a product_id (pro_...) and amount is a custom price. Zero-decimal currencies (JPY, KRW, VND, CLP, ISK) are converted correctly.
providerNoMerchant-of-record platform (or set the x-mor-provider header). paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout.
quantityNoQuantity (default 1). Supported by Paddle, Lemon Squeezy, Creem (units), Dodo, FastSpring; Polar and Whop checkouts are single-item.
store_idNoRequired by Lemon Squeezy (your Store id) and FastSpring (your storefront, e.g. "yourstore" -> yourstore.onfastspring.com, used to build the hosted URL). Ignored by Paddle / Polar / Whop / Creem / Dodo.
success_urlNoOptional https URL to send the buyer to after payment. Used by Polar (success_url), Lemon Squeezy (redirect), Whop (redirect_url), Creem (success_url), Dodo (return_url). Paddle sets this in its dashboard, not per call.
customer_emailNoOptional buyer email to pre-fill on the checkout. Recommended for Dodo (its create requires a customer email).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the server never touches funds, describes credential setup, and notes that capabilities differ per provider. Adds context beyond annotations (e.g., money flow, owner-policy headers) without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense with information but well-structured: purpose stated upfront, followed by provider details and parameter nuances. Every sentence earns its place given the complexity; slightly long but justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Thoroughly covers all 9 parameters, provider-specific behavior, credential headers, and owner-policy setup. With no output schema, the description explicitly states the return value ('checkout_url'). Matches the complexity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds extensive provider-specific semantics for each parameter (e.g., 'item' format per provider, 'amount' custom price behavior, zero-decimal currency handling). This adds meaningful value beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool creates a hosted checkout link for digital products via a merchant-of-record platform. It specifies the verb ('create'), resource ('checkout link'), and scope ('digital product / software / course'), and distinguishes from siblings by detailing the unique function and provider flexibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use the tool (for creating checkout links) and how to pick among eight providers with detailed parameter notes. Lacks explicit 'when not to use' instructions but sibling context implies clear boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

issue_refundA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoAmount to refund in the MAJOR currency unit. Lemon Squeezy: partial (omit for full). Polar: REQUIRED. Paddle: MUST be omitted (full-only).
reasonNoRefund reason. Paddle: free text (sent). Polar: one of duplicate | fraudulent | customer_request | service_disruption | satisfaction_guarantee | dispute_prevention | other (default customer_request). Lemon Squeezy: kept for your records (not sent).
order_idYesThe order/transaction id to refund (Paddle transaction_id txn_...; Lemon Squeezy order id; Polar order id UUID).
providerNoMerchant-of-record platform (or set the x-mor-provider header). paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and readOnlyHint=false. The description adds details like Paddle's pending_approval on production and the owner policy gate on amount. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with provider-specific sections. It front-loads the main purpose. While not concise, the length is justified by the complexity of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 params, no output schema, destructive), the description covers credentials, environments, owner policy, and provider-specific behaviors. It does not mention the response format, but the overall completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds crucial provider-specific behavior for each parameter. For example, it clarifies that amount must be omitted for some providers and required for Polar. The reason field is explained per provider.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Refund an order through the merchant-of-record platform.' The verb and resource are unambiguous. It distinguishes from siblings like cancel_subscription and query_order by focusing solely on refunding orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use and when-not-to-use guidance per provider. It specifies which providers support partial vs full refunds, which require amount, and lists unsupported providers (Whop, Creem). This prevents misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_orderA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesThe order/transaction id. Paddle = transaction_id (txn_...); Lemon Squeezy = order id (numeric); Polar = order id (UUID).
providerNoMerchant-of-record platform (or set the x-mor-provider header). paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds significant behavioral details beyond annotations: the unified status enum, raw passthrough, and complex authentication requirements (headers for provider, key, environment). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but verbose and could be better structured (e.g., bullet points). It front-loads the purpose but includes many details about credentials that could be separate. Some redundancy with input schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a query tool with multiple providers and authentication, the description covers essential aspects: purpose, parameters, return values (unified enum + raw), and credential setup. No output schema, but return format is explained. Missing error handling details, but adequate for the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters. The description adds value by explaining the format of order_id for each provider and noting that provider can be passed via header. This goes beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the purpose: 'Get the status of an order / transaction'. It specifies the verb and resource, and distinguishes from sibling tools like cancel_subscription, create_checkout, etc. It provides specific details about the returned status enum.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use the tool, including supported providers, credential headers, and environment selection. However, it does not explicitly state when not to use this tool or directly mention alternative tools, though siblings are listed outside the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_subscriptionA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNoMerchant-of-record platform (or set the x-mor-provider header). paddle | lemonsqueezy | polar | whop | creem | dodo | fastspring | twocheckout.
subscription_idYesThe subscription id (Paddle sub_...; Lemon Squeezy numeric; Polar UUID).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint), the description details credential headers (x-mor-provider, x-mor-key, x-mor-env) and owner-policy headers, plus the return structure (unified status enum, raw_status, raw passthrough). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but contains all necessary information without fluff. It could be slightly better organized (e.g., bullet points for headers), but it's efficient and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (multiple platforms, credential headers, unified response), the description is complete. It covers input parameters, provider enum, ID formats, headers, and output structure. No output schema exists, so the description adequately explains return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and baseline is 3, but the description adds significant value by explaining ID formats for each platform (Paddle sub_..., Lemon Squeezy numeric, etc.) and providing context for the provider parameter. This goes beyond the schema's enum descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get the status of a subscription on the merchant-of-record platform', specifying the verb and resource. It lists supported platforms and ID formats, distinguishing it from sibling tools like cancel_subscription or issue_refund.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates this tool is for querying subscription status. While it doesn't explicitly say when not to use it, the sibling tool list (cancel_subscription, create_checkout, etc.) provides context. A brief usage distinction would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources