Skip to main content
Glama

Start a checkout for paid apps

create_checkout
Idempotent

Price a cart and open a checkout for the owner to pay in their browser. Returns checkout_url (on this registry; the owner signs in as this account, reads the license, ticks the box and pays on Stripe's page: never pay or tick for them), the total, what's already owned (not charged twice), companion prices and included apps, and the one-line license to relay. Call get_checkout until status is "paid", then get_download. A site license is for one website (site_domain required); license_kind "unlimited" covers every site the owner owns or runs themselves (not client sites). interval: only "once" is sold (pay once, 12 months of updates); subscriptions are not offered yet. Safe to repeat: the same cart while open returns the same checkout. Optional coupon: a code the owner gave you; the answer then shows the discount and the new total (total_before_code, coupon, total). A free code returns status "confirm" and the checkout_url: the order shows at $0, but the owner must still open it, read the license and tick the box (never tick for them); the license is granted there. Then get_checkout turns "paid": call get_download. A tester pass works only for the account it names, for site licenses for one site, or up to N sites they choose (past that it is refused: tell the owner to ask whoever gave the pass for more). Wrong codes get a plain error (expired, used up, not for these apps, already used); don't guess codes. Needs the checkout:create permission.

Input Schema

NameRequiredDescriptionDefault
siteNoShort form of site_domain.
itemsYesApp ids to buy, e.g. ["links","popups"], or objects {app_id, license, interval} to choose per app.
couponNoONE discount code the owner gave you, like TEST-7KQ2-MX9P (any case). One code per order. Only pass one the owner supplied; never guess codes.
couponsNoNot a field: it is refused so a code is never silently ignored. Use "coupon" with a single code.
intervalNo"once" (the default and the only one sold): pay once. Subscriptions ("month", "year") are not offered yet.
site_domainNoThe site the license is for, as a bare domain like example.com (`site` is accepted as a short form). Required for site licenses.
license_kindNo"site" (default): one website. "unlimited": every site the owner owns or runs themselves, now and later. "reseller": client sites, only where get_app lists a reseller price.

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?

Beyond the annotations (which already flag idempotent, non-destructive, non-read-only), it discloses the key behavioral trait: the owner must open the URL and tick the box themselves and the agent must never pay or tick for them. It also names the required checkout:create permission, explains that a repeated open cart returns the same checkout, and covers the free-code "confirm" state and its $0-but-still-must-open behavior.

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 purpose is front-loaded and every paragraph carries operational content, but the single dense block packs parenthetical asides and repeats the interval rule that the schema already documents. Slightly tighter separation of the coupon and tester-pass edge cases would improve scannability.

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?

There is no output schema, yet the description enumerates the returns (checkout_url, total, what's already owned and not charged twice, companion prices and included apps, the license line to relay) and describes the state transitions an agent must poll for. For a mutating, seven-parameter purchase tool this is complete enough to call correctly without further discovery.

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%, so the baseline is 3, but the description adds real meaning: interval "once" means pay once with 12 months of updates and subscriptions are not sold, unlimited vs reseller scope is spelled out, and coupon is limited to one owner-supplied code with the coupons field explicitly refused rather than silently ignored. It does not add anything about site vs site_domain beyond what the schema already says.

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?

"Price a cart and open a checkout for the owner to pay in their browser" gives a specific verb and resource plus the human-in-the-loop boundary. It explicitly routes to siblings get_checkout and get_download, so an agent can distinguish it from every other tool in the list.

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?

It states the follow-up sequence (poll get_checkout until status is "paid", then get_download) and when each license kind applies: site = one website with site_domain required, unlimited = every site the owner owns or runs but not client sites, reseller = only where get_app lists a reseller price. It also says what to do on refusal (past N sites, tell the owner to ask for more) and not to guess codes.

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