Skip to main content
Glama

Receipt Maker

make_receipt

Make a receipt file from a template, with your own items, and get a 24-hour download link. Call list_templates for a slug first. Set accept_terms to true. items is required (1 to 200): name, qty and unit_price as decimal strings like "4.50", never numbers; subtotal, tax and total are worked out for you. Every other field you leave out (store name and address, date, currency, tax, payment, discounts, extra_lines, messages, barcode) uses the template's sample value, so pass an empty array to clear discounts, extra_lines or messages. format is png (default), jpeg or pdf. An optional logo goes on top: PNG, JPEG or SVG up to 2 MB (a PNG or JPEG at most 2 megapixels, for example 1600×1250; resize a bigger one first), as file_id (from create_upload), url or data_base64; it replaces the template's logo, and header.logo "none" removes the template's logo. Returns url, expires_at, the delivered image size in pixels (for a PDF, the page at 1x), the totals as formatted strings, and notes for anything that was left out or cut. Free within a daily quota counted in documents (see start.md). Make receipts only for lawful purposes, such as replacing a lost receipt, bookkeeping, testing or design mockups. Using a receipt to deceive anyone, including for refunds, expense claims or proof of purchase, is prohibited.

Input Schema

NameRequiredDescriptionDefault
taxNoEither a rate in percent or a fixed amount, with a label; replaces the template's tax
tipNo
logoNoA logo for the top of the receipt: exactly one of file_id, url or data_base64. PNG, JPEG or SVG, up to 2 MB (a PNG or JPEG also at most 2 megapixels, for example 1600×1250); the file's own bytes decide the type, not its name.
itemsYesWhat was bought: name, qty and unit_price (decimal strings; a negative price is a refund line), with optional sku and note
paperNo
formatNoFile type of the receiptpng
headerNoSeller name, address lines, alignment and logo choice; fields you leave out keep the template's
barcodeNo
paymentNoHow it was paid; replaces the template's payment
currencyNoSymbol, decimals (0, 2 or 3) and number format; fields you leave out keep the template's
datetimeNo
messagesNo
sectionsNo
templateYesTemplate slug from list_templates
discountsNo
date_formatNo
extra_linesNo
time_formatNo
accept_termsYesMust be true: you agree to the acceptable-use policy in this tool's description

Output Schema

NameRequiredDescriptionDefault
urlYes
notesYes
formatYes
totalsYes
width_pxYes
height_pxYes
expires_atYes

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?

Annotations only declare the mutation/safety profile; the description adds the real behavioral context: a 24-hour expiring link, output format defaults, template sample values used for any omitted field, empty arrays as the way to clear discounts/extra_lines/messages, logo replacement semantics, and the daily document quota. The returned fields and the 'notes for anything left out or cut' behavior are disclosed as well.

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 core action, prerequisites and defaults are front-loaded in the first three sentences, and nearly every clause carries information. It is a single dense block that re-states some item fields already in the schema and would scan better with structure, but there is little pure filler.

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?

For a 19-parameter nested generation tool this is close to complete: prerequisites, defaults, inheritance rules, logo constraints, output summary, quota and legal policy are all covered, and the output schema can carry return shapes. Only the unexplained layout-type parameters (sections, paper) leave a minor hole.

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?

Compensates strongly for the 47% schema coverage: items requires 1-200 entries with decimal-string prices ('4.50', never numbers), subtotal/tax/total are computed, and omitted fields inherit template samples. Gaps remain — paper, sections (which looks like layout/visibility control), tip, datetime, date_format and time_format are never explained in either the schema or the description.

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 artifact: make a receipt file from a template, rendered to png/jpeg/pdf with a 24-hour download link. It is clearly distinct from the listed siblings (list_templates supplies slugs, create_upload supplies logo file_ids) without the agent needing to open any schema.

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?

Explicit ordering guidance: 'Call list_templates for a slug first', 'Set accept_terms to true', and 'resize a bigger one first' for oversized logos. It also names acceptable and prohibited use cases (lost receipt, bookkeeping, testing vs. refunds, expense claims, proof of purchase), so the agent knows when to decline.

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