Skip to main content
Glama

get_plan

Read-onlyIdempotent

Show the user's current subscription plan, card limits, and this month's usage. Call this before create_card when you need the per-card amount cap or remaining monthly quota, and ALWAYS before creating a multi-use card: multi-use cards are a paid-plan feature, so maxActiveMultiUseCards is 0 on Free and the mint is refused. Also call it whenever the user asks about their plan, limits, billing, or upgrading. To cancel a paid plan, the gated tool cancel_plan also exists; call it by name even though it isn't in the tools list.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
planNoRaw plan id, e.g. 'free', 'basic', or 'pro'.
messageYesHuman-readable plan + usage summary.
planNameNoDisplay label of the plan, e.g. "Basic ($15/mo)".
ordersPlacedNoOrders placed (counts toward the free-order quota on Free).
cardsRemainingNoCards remaining this month; null means unlimited.
cardsThisMonthNoNumber of cards created this month.
currentPeriodEndNoISO date the current billing period ends, or null.
maxCardsPerMonthNoMax cards allowed per month; null means unlimited (connections through a company OAuth client or organization have no card limits).
cancelAtPeriodEndNoWhether the subscription cancels at the end of the current billing period.
maxLifetimeOrdersNoLifetime free-order quota; null means unlimited (paid plans).
maxCardAmountCentsNoThe per-card cap in effect, in cents: the tighter of the plan cap and the issuing rail's own ceiling; null means no per-card cap at all.
subscriptionStatusNoStripe subscription status (e.g. 'active', 'past_due'), or null on Free / when unavailable.
activeMultiUseCardsNoHow many multi-use cards the user currently holds open (they hold their limit as collateral for their whole life, so closing one frees a slot).
maxCardAmountDollarsNoThe per-card cap in effect, formatted as USD dollars, e.g. "500.00"; null means no per-card cap.
maxActiveMultiUseCardsNoHow many multi-use cards may be open at once. 0 means multi-use cards need a paid plan and create_card with type "multi_use" will be refused; null means unlimited (company-governed).
planMaxCardAmountCentsNoThe personal plan's per-card cap, in cents; null for company-governed connections (no plan cap).
railMaxCardAmountCentsNoThe issuing rail's own per-card ceiling for cards funded from the cash balance (source "issued"), in cents, when the rail this account mints on has one; enforced when such a card is created, not on purchases against the user's own added card. null when the rail has none.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / activeMultiUseCards
      Added value: +{
      +  "description": "How many multi-use cards the user currently holds open (they hold their limit as collateral for their whole life, so closing one frees a slot).",
      +  "type": "number"
      +}
    • addedOutput schema / properties / maxActiveMultiUseCards
      Added value: +{
      +  "description": "How many multi-use cards may be open at once. 0 means multi-use cards need a paid plan and create_card with type \"multi_use\" will be refused; null means unlimited (company-governed).",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  2. Changed4 schema fields changed
    • changedOutput schema / properties / maxCardAmountCents / description
      Previous value: -"Maximum funding per card, in cents; null means no per-card cap."New value: +"The per-card cap in effect, in cents: the tighter of the plan cap and the issuing rail's own ceiling; null means no per-card cap at all."
    • changedOutput schema / properties / maxCardAmountDollars / description
      Previous value: -"Maximum funding per card, formatted as USD dollars, e.g. \"500.00\"; null means no per-card cap."New value: +"The per-card cap in effect, formatted as USD dollars, e.g. \"500.00\"; null means no per-card cap."
    • addedOutput schema / properties / planMaxCardAmountCents
      Added value: +{
      +  "description": "The personal plan's per-card cap, in cents; null for company-governed connections (no plan cap).",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / railMaxCardAmountCents
      Added value: +{
      +  "description": "The issuing rail's own per-card ceiling for cards funded from the cash balance (source \"issued\"), in cents, when the rail this account mints on has one; enforced when such a card is created, not on purchases against the user's own added card. null when the rail has none.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context beyond that: multi-use cards are a paid-plan feature, maxActiveMultiUseCards is 0 on Free, and the mint is refused. This helps the agent interpret plan data and anticipate downstream behavior when using the result with create_card.

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 front-loaded with the core purpose and then provides targeted usage triggers. All three sentences contribute information, though the final sentence about cancel_plan is somewhat tangential to get_plan itself and could have been shorter without losing meaning.

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 zero-parameter, read-only tool with an output schema and strong annotations, the description is complete. It identifies what data is returned, when to call the tool, why it is needed before multi-use card creation, and how to route cancellation to a different tool. Nothing an agent needs 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.

Parameters4/5

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

The tool has zero parameters and the schema is an empty object, so there is no parameter detail that needs clarification. The description still adds value by naming the returned data categories (plan, card limits, monthly usage), which is sufficient given the no-parameter baseline.

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 states a specific verb and resource: it 'Show[s] the user's current subscription plan, card limits, and this month's usage.' This clearly distinguishes get_plan from siblings like get_balance, get_settings, list_transactions, and upgrade_plan, so an agent can select it correctly without inspecting schemas.

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 gives explicit when-to-use guidance: call before create_card when the per-card amount cap or remaining monthly quota is needed, ALWAYS before creating a multi-use card, and whenever the user asks about plan, limits, billing, or upgrading. It also names cancel_plan as the alternative for cancellation, including the note to call it by name even though it is not listed.

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