Skip to main content
Glama

till_create_invoice

Create a Web2-style INVOICE (number, line items, due date, bill-to) on the SAME non-custodial registry: paid by the same EIP-681 intent, verified by the same chain discipline, recorded in the same provable till roll. Returns the invoice + a human-readable bill (EN/FR) + the payment URI.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesmerchant 0x address (their own wallet — non-custodial)
langNo"en" (default) or "fr"
railNooptional — how this invoice SETTLES. Absent or "base" = USDC on Base, which BIII reads and can therefore attest. Name any other rail ("card", "sepa", "cash", "mastercard-agent-pay") and till_check_invoice returns not_observable instead of calling the customer unpaid: an invoice settled by card or in cash will never appear on Base, so the absence of an on-chain transfer says nothing about them. Pass the SAME rail to till_check_invoice.
billToNo
numberNo
dueDateMsNo
lineItemsYes[{description, amountUsd} or {description, qty, unitUsd}]
merchantNameNo

Schema Changelog

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

  1. Changed1 schema field changed
    • addedInput schema / properties / rail
      Added value: +{
      +  "description": "optional — how this invoice SETTLES. Absent or \"base\" = USDC on Base, which BIII reads and can therefore attest. Name any other rail (\"card\", \"sepa\", \"cash\", \"mastercard-agent-pay\") and till_check_invoice returns not_observable instead of calling the customer unpaid: an invoice settled by card or in cash will never appear on Base, so the absence of an on-chain transfer says nothing about them. Pass the SAME rail to till_check_invoice.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosure. It reveals that the tool records on a non-custodial registry, uses EIP-681 payment intents, and returns an invoice, human-readable bill, and payment URI. However, it does not mention permissions, idempotency, or potential error conditions.

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 a single, front-loaded sentence that conveys the core function immediately. It uses slightly repetitive phrasing ('SAME', 'same', 'same') but remains compact and free of filler content.

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?

Since there is no output schema, the description appropriately notes the return values (invoice, bill, payment URI). It provides conceptual context about the registry and chain discipline, but lacks error handling guidance, prerequisites, and a clear explanation of all parameters, making it incomplete for a tool with 8 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

The schema coverage is 50%, and the description adds minimal value beyond naming fields already visible in the schema. It references 'number, line items, due date, bill-to' but does not explain lang, rail, merchantName, or parameter formats, leaving half the parameters without additional context.

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 clearly states the tool's purpose with a specific verb ('Create') and resource ('Web2-style INVOICE'), and enumerates invoice attributes (number, line items, due date, bill-to). It distinguishes from siblings like till_create_charge by emphasizing the invoice-specific output and non-custodial registry context.

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 description implies usage for invoicing but does not explicitly state when to use this tool instead of alternatives such as till_create_charge. No exclusion criteria or alternative tool references are provided, leaving the selection decision partially inferred.

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

B3.1/5.0
Disambiguation3/5

Many tools have distinct, well-named purposes (vet_agent vs vet_merchant), but there is notable overlap between till_trust and till_vet_merchant (both provide trust verdicts), and till_launch_funder vs till_funder_history are closely related. The descriptions are detailed enough to differentiate, but an agent could still misselect between a few pairs.

Naming Consistency3/5

All tools share the till_ prefix, but the pattern is mixed: some use verb_noun (check_invoice, create_charge, watch_wallet) while others are noun phrases (key_exposure, open_approvals, rug_powers) or bare nouns (floor, trust, roll). This is readable but not predictable, so an agent cannot reliably guess a tool name from a verb.

Tool Count2/5

At 29 tools, this server exceeds the 25+ threshold that signals an overgrown toolkit. Even with a broad domain, many tools are one-off niche scanners (till_b20_authentic, till_floor, till_meter) that inflate the surface and could be consolidated or externalized.

Completeness4/5

The toolkit covers the payment lifecycle comprehensively: create charges/invoices, check payments, verify delivery, generate receipts, rolls, and accounting exports. It also spans identity, trust, security scanning, and theft tracing. Minor gaps exist (no update/cancel for charges, no token-general vetting), but the non-custodial, read-only design makes these acceptable.