Skip to main content
Glama

Make a checkout link

create_checkout_link

Make a Dodo Payments checkout link for a plan, for the person to open and pay in their browser (owner only, admin scope). Never ask for or handle card data: give the person the link. With an active plan, this changes the plan instead (Dodo bills the difference, or nothing during the free trial; an account with a discount keeps it on another plan at 10k, 100k or 200k, and a larger tier ends it). Ask the user which plan (starter or growth), tier (monthly events) and interval (month or year) first; get_billing lists the prices. Needs confirm: true; without it the tool only describes the plan and price.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "plan": "<plan>",
      "tier": "<tier>"
    },
    "name": "create_checkout_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
planYesstarter (1 site, 1 person) or growth (30 sites, 30 people).
tierYesMonthly events: 10k, 100k, 200k, 500k, 1m, 2m, 5m or 10m.
confirmNoSet to true to really do it. Without it, the tool only describes what it would do.
intervalNomonth or year (a year costs 10 months).month
idempotency_keyNoA fresh UUID for this create. Send the same value when you retry the same call: the first result comes back and nothing is created twice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: owner-only/admin scope authorization, a dry-run gate via confirm, and non-obvious side effects when an active plan exists (Dodo bills the difference, free-trial behavior, discount retention rules at specific tiers). The main gap is that it never says what the call returns (presumably a URL) or how long the link stays valid.

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 the action and the auth scope, and every sentence carries operational weight (card-data prohibition, plan-change semantics, confirm gate, required inputs). It is dense and parenthesis-heavy, with the discount/tier rule crammed into one clause, but nothing is padding.

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 five-parameter mutation with no output schema, the description covers auth, dry-run behavior, mutation side effects and required user inputs. The remaining hole is the return value — with no output schema, an agent still has to guess whether a URL comes back or the link is emailed.

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 each parameter already carries its own description, so the schema does the heavy lifting. The description adds procedural meaning (which values to collect from the user, and that get_billing supplies prices) but no format or edge-case detail beyond the schema, 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?

States a specific verb and resource ("Make a Dodo Payments checkout link for a plan") and explains the end goal (person opens it and pays in the browser). It also distinguishes the active-plan case (it becomes a plan change) and points at get_billing for pricing, so the agent can separate it from the read-only billing siblings.

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 preconditions: ask the user for plan, tier and interval first, and use get_billing for prices. It also states the confirm:true requirement and the consequence of omitting it (describe-only), plus the hard exclusion of never handling card data. When-to-use and alternatives are both covered.

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