Skip to main content
Glama

get_subscription

Read-only

Retrieve a single subscription by ID from your Checkout Page account. Pass livemode: false to read test-mode records.

Use list_subscriptions first if you need to discover a subscription ID by customer email, customer name, product title, or order ID.

If the subscription ID does not exist for the authenticated seller, returns a 404 error: "Subscription not found".

Example uses:

  • "Fetch subscription 6812fe6e9f39b6760576f01c"

  • "Show me the full state of this subscription"

  • "What's the current period end on this subscription?"

This tool is read-only. Cancellation and refund operations must be performed in the Checkout Page dashboard. For cancellation context, use prepare_subscription_cancellation to see eligibility, side effects, and a dashboard link.

Input Schema

NameRequiredDescriptionDefault
livemodeNoSet to false to read test-mode records (created while a page was in test mode). Defaults to live records.
subscriptionIdYesThe ID of the subscription to retrieve. Use `list_subscriptions` first if you need to discover the subscription ID by email, name, customer, page, or date range.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / data / properties / couponSnapshot / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "amountOff": {
      -        "name": "The fixed amount to subtract from the total. Cannot be combined with `percentOff` for the same coupon.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "appliesToSetupFee": {
      -        "description": "Whether the coupon discount applies to the setup fee, if any.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "code": {
      -        "name": "The coupon code that the customer entered to receive the discount. E.g. `BLACKFRIDAY`.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "currency": {
      -        "name": "The currency code for the coupon. Must match the subscription currency. Required if `amountOff` is set.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "deleted": {
      -        "name": "Whether the coupon is deleted.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "duration": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "once",
      -              "repeating",
      -              "forever"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "name": "The duration of the coupon discount. `once` means the discount applies to the first invoice only. `repeating` means the discount applies for a fixed number of billing periods, as specified by `durationInMonths`. `forever` means the discount applies to all invoices until the subscription is canceled."
      -      },
      -      "durationInMonths": {
      -        "name": "If `duration` is `repeating`, the number of billing periods that the discount applies for.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "label": {
      -        "name": "Label for the coupon, such as \"20% off\" or \"$10 off\". This is the label displayed in the dashboard. Not seen by customers.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "maxRedemptions": {
      -        "name": "The maximum number of times the coupon can be redeemed. A coupon can be redeemed by the same customer multiple times.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "pageIds": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "name": "The list of page IDs to which the coupon applies."
      -      },
      -      "percentOff": {
      -        "name": "The percentage to subtract from the total. Cannot be combined with `amountOff` for the same coupon.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "redeemBy": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "name": "The date and time when the coupon expires."
      -      },
      -      "timesRedeemed": {
      -        "name": "The number of times the coupon has been redeemed.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amountOff": {
      +        "name": "The fixed amount to subtract from the total. Cannot be combined with `percentOff` for the same coupon.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "appliesToSetupFee": {
      +        "description": "Whether the coupon discount applies to the setup fee, if any.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "code": {
      +        "name": "The coupon code that the customer entered to receive the discount. E.g. `BLACKFRIDAY`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "currency": {
      +        "name": "The currency code for the coupon. Must match the subscription currency. Required if `amountOff` is set.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "deleted": {
      +        "name": "Whether the coupon is deleted.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "duration": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "once",
      +              "repeating",
      +              "forever"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "name": "The duration of the coupon discount. `once` means the discount applies to the first invoice only. `repeating` means the discount applies for a fixed number of billing periods, as specified by `durationInMonths`. `forever` means the discount applies to all invoices until the subscription is canceled."
      +      },
      +      "durationInMonths": {
      +        "name": "If `duration` is `repeating`, the number of billing periods that the discount applies for.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "label": {
      +        "name": "Label for the coupon, such as \"20% off\" or \"$10 off\". This is the label displayed in the dashboard. Not seen by customers.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "maxRedemptions": {
      +        "name": "The maximum number of times the coupon can be redeemed. A coupon can be redeemed by the same customer multiple times.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "pageIds": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "deprecated": true,
      +        "description": "Deprecated: what a coupon covers is now its `rules`; read them from the coupon (`couponId`). The pages the coupon was limited to when the subscription was bought.",
      +        "name": "The list of page IDs to which the coupon applies."
      +      },
      +      "percentOff": {
      +        "name": "The percentage to subtract from the total. Cannot be combined with `amountOff` for the same coupon.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "redeemBy": {
      +        "anyOf": [
      +          {
      +            "format": "date-time",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "name": "The date and time when the coupon expires."
      +      },
      +      "timesRedeemed": {
      +        "name": "The number of times the coupon has been redeemed.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedOutput schema / properties / data / properties / amount / description
      Previous value: -"Recurring charge amount per billing period, in the smallest currency unit: the recurring price plus any processing fee contribution the customer chose to add to each renewal. It does not reflect coupon discounts; subtract any `couponSnapshot` discount to determine the actual charge."New value: +"Recurring charge amount per billing period, in the smallest currency unit. Includes recurring fees and any processing fee contribution the customer chose to add to each renewal (`processingFeeContribution.renewalAmount`). It does not reflect coupon discounts; subtract any `couponSnapshot` discount to determine the actual charge."
    • changedOutput schema / properties / data / properties / amountUsd / description
      Previous value: -"USD-converted recurring amount for multi-currency accounts. Coupon discounts are applied in the subscription currency, so do not subtract `amountOff` from `amountUsd`."New value: +"`amount` converted to USD for multi-currency accounts, so it also includes recurring fees and the renewal processing fee contribution. Coupon discounts are applied in the subscription currency, so do not subtract `amountOff` from `amountUsd`."
  3. Changed1 schema field changed
    • changedOutput schema / properties / data / properties / amount / description
      Previous value: -"Recurring charge amount per billing period, in the smallest currency unit. This is the base recurring price and does not reflect coupon discounts; subtract any `couponSnapshot` discount to determine the actual charge."New value: +"Recurring charge amount per billing period, in the smallest currency unit: the recurring price plus any processing fee contribution the customer chose to add to each renewal. It does not reflect coupon discounts; subtract any `couponSnapshot` discount to determine the actual charge."
  4. Changed2 schema fields changed
    • changedOutput schema / properties / data / properties / fees / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "amount": {
      -          "description": "Fixed fee amount. Cannot be combined with `percentage` for the same fee.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "name": {
      -          "description": "Name or label for the fee. E.g. `processing fee`.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "percentage": {
      -          "description": "Percentage fee amount. Cannot be combined with `amount` for the same fee.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "stripeProductId": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amount": {
      +          "description": "Fee amount billed each period, in the smallest currency unit. For a fee with both a percentage and a fixed amount, the sum of `percentageAmount` and `fixedAmount`.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "fixedAmount": {
      +          "description": "The fixed part of `amount`, in the smallest currency unit, already multiplied by quantity or tickets when the fee multiplies. Only set on a fee with both a percentage and a fixed amount.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "description": "Name or label for the fee. E.g. `processing fee`.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "percentage": {
      +          "description": "Fee percentage, when the fee has one.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "percentageAmount": {
      +          "description": "The part of `amount` from the percentage, in the smallest currency unit. Only set on a fee with both a percentage and a fixed amount. Can be 0, e.g. when a 100% coupon leaves nothing for the percentage to apply to.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "stripeProductId": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / data / properties / setupFeeFees / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "amount": {
      -          "description": "Fixed fee amount. Cannot be combined with `percentage` for the same fee.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "name": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "percentage": {
      -          "description": "Percentage fee amount. Cannot be combined with `amount` for the same fee.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "stripeInvoiceItemId": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amount": {
      +          "description": "Fee amount charged on the setup fee, in the smallest currency unit.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "percentage": {
      +          "description": "Fee percentage applied to the setup fee.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "stripeInvoiceItemId": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, but the description adds the 404 'Subscription not found' behavior when the ID doesn't belong to the authenticated seller, plus the livemode test-vs-live data scoping. The read-only restatement is redundant with the annotation and the tool doesn't mention pagination or response size, so it stops short of a 5.

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?

Front-loaded with purpose, then guidance, then error behavior, then a short example block — easy to scan. Minor waste: 'This tool is read-only' restates the annotation and the hint to use list_subscriptions appears both in prose and in the parameter description.

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 2-parameter read tool with an output schema, the description covers the lookup pattern, the test/live mode switch, the failure mode, and the adjacent tools for discovery and cancellation. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are documented in the schema, including the ID pattern and the livemode default. The description only reinforces the list_subscriptions discovery path, adding little beyond what the schema already says, so the baseline 3 applies.

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?

Opens with a specific verb+resource+scope: 'Retrieve a single subscription by ID from your Checkout Page account.' This immediately distinguishes it from the sibling list_subscriptions and from get_subscription_payment or prepare_subscription_cancellation.

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?

Explicitly routes the agent: use list_subscriptions to discover an ID by email/name/product/order, and use prepare_subscription_cancellation for cancellation context. It also names the out-of-scope operations (cancellation, refunds) that must be done in the dashboard, which is a genuine when-not rule.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources