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.

  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.