Skip to main content
Glama

createInvoice

Create a one-off payment invoice; the payer opens result.mini_app_invoice_url. See the invoices doc.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fiatNoFiat code (fiat mode).
assetNoAsset code (crypto mode).
amountNoDecimal string in MAJOR units, e.g. "5" = 5 USDT. Never a float. Omit for an open-amount invoice.
payloadNoOpaque data echoed back in the webhook (≤4096).
swap_toNoAuto-convert the received amount to this asset.
expires_inNoInvoice TTL in seconds.
descriptionNoShown to the payer (≤1024).
paid_btn_urlNoURL for the paid button.
currency_typeNocrypto (default) | fiat.
paid_btn_nameNoviewItem | openChannel | openBot | callback.
allow_commentsNoDefault true.
hidden_messageNoRevealed to the payer ONLY after payment (≤2048).
accepted_assetsNoFiat mode: comma-separated assets the payer may pay in.
allow_anonymousNoDefault true.
rate_lock_secondsNoFiat mode: freeze crypto quotes for this long.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already signal this is neither read-only nor destructive, so the description does not need to restate mutation. It adds useful behavioral context beyond annotations: the invoice is one-off and the payer must open the returned mini_app_invoice_url. It does not mention webhooks or expiry, but the provided behavior is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely compact and front-loads the action, then immediately gives the practical outcome the caller needs to know. The doc reference is a single short tail. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 15 optional parameters and no output schema, the description only explains the creation action and the returned URL, then defers to documentation. It does not summarize the fiat/crypto modes, open-amount behavior, or which parameter combinations matter most. An agent could call it correctly but may under-specify an invoice without consulting the referenced docs.

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?

The schema covers 100% of the 15 parameters with individual descriptions, so the description need not repeat them. The tool description itself does not add param-level guidance, which is acceptable given the schema's complete coverage, but it also does nothing extra.

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 action and resource: "Create a one-off payment invoice". It also names the key output field, result.mini_app_invoice_url, which defines the tool's purpose. The "one-off" qualifier helps distinguish it from subscription-plan creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "one-off" wording implies a single-payment use case versus subscriptions, and the doc pointer offers an avenue for more detail. However, no alternative tool is named and no explicit when-to-use or when-not-to-use guidance is given, leaving the distinction from siblings like createCheck and createSubscriptionPlan implicit.

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.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool maps to a distinct resource or action: invoices, subscription plans, subscriptions, checks, transfers, balance, rates, and auth flows. The two-step connect/connect_status pair is clearly separated into initiate and poll, and similar actions like archiveSubscriptionPlan versus cancelSubscription are explicitly differentiated.

Naming Consistency4/5

The vast majority of tools follow a camelCase verb_noun pattern such as createInvoice, getSubscriptions, and refundInvoice. The exceptions are connect_status and get_docs, which use snake_case, creating a minor but noticeable inconsistency.

Tool Count4/5

At 21 tools, the server is on the heavier side but the breadth of a merchant payment API justifies it: auth, invoices, subscriptions, transfers/checks, balances, exchange rates, stats, webhooks, and docs all need coverage. No tools feel redundant, though a few list-only endpoints could arguably be consolidated.

Completeness3/5

Core invoice and subscription lifecycles are well covered: create, list, delete, archive, cancel, and refund. However, there is no visible createTransfer or createCheck tool even though the API includes transfers/checks docs and deleteCheck/getTransfers, leaving a notable dead end for initiating transfers.

Resources