Skip to main content
Glama
Hermoso

Hermoso

Official

Buy credits

buy_credits

Top up account credits with a credit pack: list available packs, quote the exact charge, then confirm to charge a saved card or receive a Stripe checkout link.

Instructions

Out of credits? Top up with a credit PACK. Call with no argument to list the available packs (id · credits · price). If the account has a saved card and you have billing-admin rights, calling with pack quotes the exact charge and calling again with confirm:true AND the quote's quote_token charges the saved card instantly (same one-click top-up as the app — no redirect). If there's no saved card yet, you get a Stripe checkout URL to hand your human for the FIRST purchase; their card saves for one-click after that. Packs only; subscriptions are managed by a person in Billing. IF YOU ARE AN AGENT HOLDING YOUR OWN PAYMENT CREDENTIAL, there is a third path that needs no human at all: POST /api/billing/machine-payment with a packId answers HTTP 402 carrying an MPP challenge, and grants the pack once you authorise and retry with the credential — the same packs, the same prices, the same credits. GET /api/billing/config carries a machinePayments block listing the packs with their per-credit rates and saying whether that lane is enabled on this server. Most agents do NOT have their own credential yet, so the checkout link above remains the normal path. To stop running out entirely, turn on auto-reload with set_auto_reload (admin) — low balances then top themselves up from the saved card automatically.

Input Schema

NameRequiredDescriptionDefault
packNothe pack id to buy (e.g. pack-2k) — omit to list the available packs first
confirmNoset true to actually charge the saved card for `pack` (required for the one-click charge; ignored on the checkout-link path)
quote_tokenNothe quoteToken returned by the quote step — REQUIRED (with confirm:true) to charge; it binds the exact pack + price you quoted (10-minute validity) and makes a retried confirm idempotent

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.1.161
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": false,
      -  "properties": {
      -    "amountUsd": {
      -      "description": "USD amount of the checkout link",
      -      "type": "number"
      -    },
      -    "credits": {
      -      "description": "credits added by a completed top-up (or bought by the checkout link)",
      -      "type": "number"
      -    },
      -    "ok": {
      -      "description": "true when a one-click top-up charge succeeded",
      -      "type": "boolean"
      -    },
      -    "packId": {
      -      "description": "the pack id the checkout link buys",
      -      "type": "string"
      -    },
      -    "packs": {
      -      "description": "available credit packs ({id, credits, priceUsd}) when listing",
      -      "items": {},
      -      "type": "array"
      -    },
      -    "quote": {
      -      "description": "the one-click charge quote ({packId, credits, priceUsd, card}) awaiting confirm:true"
      -    },
      -    "url": {
      -      "description": "Stripe checkout URL for a first purchase (no saved card yet)",
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changedv0.1.15
    • addedInput schema / properties / quote_token
      Added value: +{
      +  "description": "the quoteToken returned by the quote step — REQUIRED (with confirm:true) to charge; it binds the exact pack + price you quoted (10-minute validity) and makes a retried confirm idempotent",
      +  "type": "string"
      +}
  3. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses that the charge is instant with no redirect, that the card is persisted for one-click after the first purchase, that quote_token has a 10-minute validity window, and that money is actually moved. The note that a same-token retry is idempotent is a refinement of idempotentHint:false rather than a contradiction — fresh quotes can still double-charge.

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 logically ordered through the three paths, but the long all-caps paragraph about POSTing to /api/billing/machine-payment describes a raw HTTP lane this tool cannot invoke, so it is largely unusable noise inside a tool description. The core flow could be stated in half the words.

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?

With no output schema, the description compensates by describing what comes back on each path — the pack list (id · credits · price), the quoted charge amount, or a checkout URL. Combined with the annotations and the fully described schema, an agent has everything needed to call correctly.

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 individual fields are already documented; the description earns extra credit by explaining the two-step sequencing (quote → confirm with the binding token) that the flat schema cannot express. It does not, however, add format or validation detail beyond the schema.

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 — topping up credit packs — and explicitly bounds the scope ('Packs only; subscriptions are managed by a person in Billing'), which separates it from upgrade_plan and set_auto_reload. An agent knows exactly what this tool transacts and what it does not.

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 a complete decision tree: no argument lists packs, `pack` alone quotes, `pack` + confirm + quote_token charges, and a missing saved card falls back to a Stripe checkout URL. It also names the prerequisites (saved card, billing-admin rights) and points to set_auto_reload as the preventive alternative.

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

Deploy Server

Other Tools