Skip to main content
Glama

list_subscriptions

Read-only

Retrieve a paginated list of subscriptions processed through your Checkout Page account. Pass livemode: false to read test-mode records.

For questions about a customer's full purchase history query the other transaction tools.

Example uses:

  • "Show me recent subscriptions" — use no filters or narrow with createdAfter

  • "Find the subscription for order ORD-9182" — filter by orderId

  • "Show me subscriptions for checkout page X" — filter by pageId

  • "Find subscriptions for jane@example.com" — use search (contains match on email)

  • "Find subscriptions for Jane Smith" — use search: "Jane Smith" (matches customerName)

  • "Show me Galactic Coffee subscriptions" — use search: "Galactic Coffee" (matches productTitle)

  • "How many active subscriptions do I have?" — filter by status: "active", read total. Note: also query status: "past_due" separately — past_due subscriptions are still active but at risk (see status guidance below).

  • "Show me canceled subscriptions" — filter by status: "canceled"

  • "What's my MRR?" — Tell the merchant they can see their MRR in the Checkout Page dashboard.

  • "Show me abandoned subscription checkouts" — use abandonmentStatus: "abandoned"

Money amounts: All monetary amounts are returned in the smallest currency unit (for example, 10661 USD = $106.61, 299 EUR = €2.99, 500 JPY = ¥500). Divide by 100 before displaying amounts to merchants or customers, noting that some currencies such as JPY do not use decimal minor units.

Example customer support uses:

  • Customer asking if their subscription is active — search by email or orderId lookup. Check status: if active, the subscription is healthy. If past_due, the subscription is still active but the payment method is failing — tell the customer to update their payment method through the customer portal. If canceled, report when it was canceled (canceledAt).

  • Customer asking when their next payment is — check currentPeriodEnd for the next billing date, amount for the charge amount, interval and intervalCount for the billing frequency (e.g. interval: "year", intervalCount: 1 = annual billing). Note: if the subscription has a coupon, the actual charge may be less than amount — check couponSnapshot for discount details.

  • Customer saying their payment keeps failing — search by email. Check status for past_due or failed. Check the paymentError field for a specific error message. Note: the troubleshooting depends on context — if this is the first payment to activate the subscription, the customer may need to retry with a different payment method. If it's a recurring payment failing, the customer should update their payment method through the customer portal. If the customer has multiple subscriptions, only some may be failing — distinguish them clearly.

  • Customer wanting to cancel — orderId or email lookup, confirm what's on file (status, billing details, current period end). Subscription cancellation can be done by the merchant in the Checkout Page dashboard or by the customer through the customer portal.

  • Customer claiming they cancelled but are still being charged - check status and canceledAt. If status: "canceled" and canceledAt is set, the subscription was indeed canceled on that date. The currentPeriodEnd may still be in the future (the customer paid for the period). For the individual charges, use list_subscription_payments(subscriptionId: ...).

  • Customer asking for a refund on their subscription — confirm the subscription details (status, amount, how long active). If a refund has already been issued, report lastRefundAt (date), lastRefundReason (reason code), and lastRefundReasonNote (merchant notes). Refunds can be processed by the merchant in the Checkout Page dashboard.

  • Customer asking what plan they're on — check productTitle (human-readable product name, e.g. "Galactic Coffee Subscription"), amount, interval, and intervalCount. If the subscription has a coupon, also report the discount. Present the plan name with amount and billing frequency (e.g. "Galactic Coffee Subscription — $100/month").

  • Customer asking about their trial — check trialStart, trialEnd, and status. If status is trialing or scheduled and trialEnd is in the future, the trial is still active (trialing = free trial; scheduled = setup fee paid, billing starts later). If trialEnd is in the past, the trial has ended (billing should have started at startDate).

  • Customer asking about their total payments - this tool reports the current recurring charge (amount), billing frequency (interval + intervalCount), and how long the subscription has been active (from createdAt). For what was actually charged each cycle, use list_subscription_payments(subscriptionId: ...) and add up the payments.

  • Customer asking about a discount on their subscription — check couponSnapshot for the coupon code, label, and discount amount (amountOff or percentOff). Check couponSnapshot.duration to see how long the discount lasts (forever, repeating with durationInMonths, or once). Setup fee discounts are visible in setupFeeDiscountAmount.

  • Customer saying the name on their subscription is wrong — check customerName, billing.name (from the payment card), shipping.name, and the fields array for customer_name (from the checkout form). These often don't match. The merchant can update the name in the Checkout Page dashboard; the customer can update it through the portal.

Data limitations for common support questions:

  • Charge/payment history: For per-payment history of a subscription (when each charge happened, amount per cycle, refund details), use list_subscription_payments(subscriptionId: ...).

  • Refund details: lastRefundAt, lastRefundReason, lastRefundReasonNote available but only reflect the most recent refund. Per-refund history requires the dashboard.

  • Historical refund limitation: for records created before 2026-04-09T08:47:59.000Z, full subscription refund transaction history may be incomplete. A subscription can still show refund-related fields or a refunded state while older refund history is incomplete or missing. When reviewing older subscription records, only quote exact refund timing or refund details when the record explicitly includes them.

  • Email delivery: No email delivery data available through this tool. Email delivery can be verified and emails can be resent from the Checkout Page dashboard.

  • Access/entitlement: No content access or login status data.

  • Payment method updates: The merchant can update in the dashboard; the customer can update through the portal.

  • Cancellation metadata: canceledAt present on canceled records. canceledBy and reason are optional.

Date filters: Always use UTC timestamps with the Z suffix (e.g. 2026-03-01T00:00:00Z). Never use local timezone offsets — dates are stored and compared in UTC.

Limit and large response handling:

Use the right limit for the task:

  • Single-record lookups (order lookup, customer search): use limit: 10 or less.

Tips for common questions:

  • For count questions, use the status filter and read total. Remember: past_due subscriptions are still active — include them in "active" counts.

  • For single-customer lookups, use search with email or orderId.

  • A customer may have multiple subscription records (e.g. a failed attempt followed by a successful signup). Always check all returned records, not just the first one.

Subscriptions are returned sorted newest-first. Use cursor-based pagination (starting_after / ending_before) to page through large result sets. starting_after and ending_before cannot be used simultaneously. Max limit is 100, default is 10.

Cross-tool routing:

Records do NOT overlap between tools — a transaction only appears in one tool. Payments, bookings, and subscriptions are separate record sets. No risk of double-counting when combining results.

Order lookup: If "look up order 12345" returns 0 results here, try list_payments(orderId: "12345") and list_bookings(orderId: "12345").

Full customer history: For "show me everything this customer has bought," query list_payments and list_bookings tools with the same customerId or search email and combine results.

Customer profile: For profile data (company, phone, billing email, tax ID), use list_customers or get_customer — subscription records have customerName, customerId, customerEmail, billing.name, and shipping.name but not the full profile fields.

This tool is read-only. You cannot cancel subscriptions, process refunds, update payment methods, change billing details, pause/resume billing, or switch plans. For these actions, explain what's currently on file. The merchant can manage subscriptions in the Checkout Page dashboard by navigating to the subscription record. The customer can manage their subscription through the customer portal.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records per page (integer, max 100, default 10).
pageIdNoFilter subscriptions by page ID.
searchNoSearch by customerEmail, customerName, productTitle, or orderId. Contains match.
statusNoFilter by subscription lifecycle status. Valid values: draft, draft_expired, incomplete, incomplete_expired, trialing, paused, scheduled, active, past_due, canceled, unpaid, failed, completed.
orderIdNoFilter by exact order ID.
livemodeNoSet to false to read test-mode records (created while a page was in test mode). Defaults to live records.
customerIdNoFilter subscriptions by customer ID.
createdAfterNoFilter by lower bound of createdAt.
createdBeforeNoFilter by upper bound of createdAt.
ending_beforeNoCursor-based pagination. Pass a record `id` to return results before it. Cannot be used with `starting_after`.
starting_afterNoCursor-based pagination. Pass a record `id` to return results after it. Cannot be used with `ending_before`.
abandonmentStatusNoFilter by `abandoned` or `recovered` subscriptions.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
totalYesTotal number of records matching the query across all pages.
has_moreYesWhether more records exist beyond the current page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/destructiveHint/openWorldHint, and the description goes well beyond them: an explicit 'This tool is read-only' statement enumerating what cannot be done (cancel, refund, update payment method, pause/resume, switch plans), plus data-availability limits (no email delivery data, no access/entitlement data, incomplete pre-2026-04-09 refund history, only most-recent refund fields).

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?

Front-loaded and sectioned, which helps, but it is enormously long for a tool description and repetitive — the 'use list_subscription_payments for per-charge history' and 'update via dashboard or customer portal' points recur four or more times, and much reads like a support playbook rather than tool selection guidance.

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 an output schema exists, return-value documentation is not strictly required, yet the description still explains the fields agents must interpret (status, currentPeriodEnd, couponSnapshot, paymentError, trial fields) and closes the loop on routing, pagination, and date formats. Nothing needed to invoke it correctly is missing.

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 already 100%, yet the description adds real semantics: search is a contains match over customerEmail/customerName/productTitle/orderId, past_due counts as active for 'active' counts, UTC-only timestamps with Z suffix, cursor pagination rules (starting_after/ending_before mutually exclusive, max 100/default 10), and limit guidance for single-record lookups.

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 paginated list of subscriptions processed through your Checkout Page account.' It immediately distinguishes itself from siblings by naming the other transaction tools and the cross-tool routing section clarifies that subscriptions, payments, and bookings are disjoint record sets.

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?

Gives explicit when-to-use examples ('Find the subscription for order ORD-9182' → orderId), when to prefer search vs. exact filters, and when to route elsewhere (list_subscription_payments, list_payments, list_bookings, list_customers/get_customer). It even states when the tool cannot answer (MRR in dashboard, refunds in dashboard).

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