Receipt Maker

Make a receipt from a template and download it as PDF, PNG or JPEG.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
97%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,574Tokens (tool definitions)
~4.5 KBTypical response size
Significant attention impact (2.79% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "receipt-maker": {
      "url": "https://byondr.co/receipt-maker/mcp"
    }
  }
}

Remote endpoints

https://byondr.co/receipt-maker/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_templates(category, kind, query)

List the receipt templates make_receipt can use, each with its slug, name, category and kind (brand or generic). Filter by category, kind or a query on the name or slug. Call this first to get a slug. Free. 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

{
  "type": "object",
  "properties": {
    "category": {
      "description": "Only templates in this category",
      "type": "string",
      "enum": [
        "retail",
        "food",
        "travel",
        "services",
        "finance",
        "health",
        "other"
      ]
    },
    "kind": {
      "description": "brand or generic templates only",
      "type": "string",
      "enum": [
        "brand",
        "generic"
      ]
    },
    "query": {
      "description": "Words to look for in the template name or slug",
      "type": "string",
      "maxLength": 60
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "templates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "name",
          "category",
          "kind"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "templates"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴make_receipt(template, accept_terms, format, logo, items, ...)

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

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Template slug from list_templates"
    },
    "accept_terms": {
      "type": "boolean",
      "const": true,
      "description": "Must be true: you agree to the acceptable-use policy in this tool's description"
    },
    "format": {
      "default": "png",
      "description": "File type of the receipt",
      "type": "string",
      "enum": [
        "png",
        "pdf",
        "jpeg"
      ]
    },
    "logo": {
      "type": "object",
      "properties": {
        "file_id": {
          "description": "A file_id from create_upload (after the PUT)",
          "type": "string"
        },
        "url": {
          "description": "Or a public https URL of the logo",
          "type": "string",
          "format": "uri"
        },
        "data_base64": {
          "description": "Or base64 bytes of the logo, up to 2 MB decoded",
          "type": "string"
        }
      },
      "description": "A 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."
    },
    "items": {
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "qty": {
            "type": "string"
          },
          "unit_price": {
            "type": "string"
          },
          "sku": {
            "type": "string",
            "maxLength": 40
          },
          "note": {
            "type": "string",
            "maxLength": 120
          }
        },
        "required": [
          "name",
          "qty",
          "unit_price"
        ]
      },
      "description": "What was bought: name, qty and unit_price (decimal strings; a negative price is a refund line), with optional sku and note"
    },
    "header": {
      "description": "Seller name, address lines, alignment and logo choice; fields you leave out keep the template's",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 120
        },
        "lines": {
          "maxItems": 6,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          }
        },
        "align": {
          "type": "string",
          "enum": [
            "left",
            "center",
            "right"
          ]
        },
        "logo": {
          "type": "string",
          "enum": [
            "none",
            "template"
          ],
          "description": "none removes the template's built-in logo; template keeps it"
        }
      }
    },
    "currency": {
      "description": "Symbol, decimals (0, 2 or 3) and number format; fields you leave out keep the template's",
      "type": "object",
      "properties": {
        "symbol": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5
        },
        "decimals": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 2
            },
            {
              "type": "number",
              "const": 3
            }
          ]
        },
        "position": {
          "type": "string",
          "enum": [
            "before",
            "after"
          ]
        },
        "thousands": {
          "type": "string",
          "enum": [
            ",",
            ".",
            " ",
            ""
          ]
        },
        "decimal": {
          "type": "string",
          "enum": [
            ".",
            ","
          ]
        }
      }
    },
    "tax": {
      "description": "Either a rate in percent or a fixed amount, with a label; replaces the template's tax",
      "type": "object",
      "properties": {
        "rate": {
          "type": "string"
        },
        "amount": {
          "type": "string"
        },
        "label": {
          "type": "string",
          "maxLength": 120
        }
      }
    },
    "payment": {
      "description": "How it was paid; replaces the template's payment",
      "type": "object",
      "properties": {
        "method": {
          "type": "string",
          "enum": [
            "cash",
            "card",
            "other"
          ]
        },
        "label": {
          "type": "string",
          "maxLength": 60
        },
        "card_brand": {
          "type": "string",
          "maxLength": 30
        },
        "card_last4": {
          "type": "string",
          "pattern": "^\\d{4}$"
        },
        "tendered": {
          "type": "string"
        },
        "auth_code": {
          "type": "string",
          "maxLength": 40
        },
        "transaction_id": {
          "type": "string",
          "maxLength": 60
        }
      },
      "required": [
        "method"
      ]
    },
    "datetime": {
      "type": "string"
    },
    "date_format": {
      "type": "string",
      "enum": [
        "MM/DD/YYYY",
        "DD/MM/YYYY",
        "YYYY-MM-DD",
        "DD.MM.YYYY"
      ]
    },
    "time_format": {
      "type": "string",
      "enum": [
        "12h",
        "24h"
      ]
    },
    "discounts": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 120
          },
          "amount": {
            "type": "string"
          }
        },
        "required": [
          "label",
          "amount"
        ]
      }
    },
    "tip": {
      "type": "string"
    },
    "barcode": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "code128",
            "ean13",
            "upca",
            "qr"
          ]
        },
        "value": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500
        }
      },
      "required": [
        "type",
        "value"
      ]
    },
    "messages": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      }
    },
    "extra_lines": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 60
          },
          "value": {
            "type": "string",
            "maxLength": 120
          }
        },
        "required": [
          "label",
          "value"
        ]
      }
    },
    "sections": {
      "maxItems": 28,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "header",
          "meta",
          "items",
          "totals",
          "payment",
          "barcode",
          "messages"
        ]
      }
    },
    "paper": {
      "type": "string",
      "enum": [
        "thermal",
        "white",
        "yellow"
      ]
    }
  },
  "required": [
    "template",
    "accept_terms",
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "pdf",
        "jpeg"
      ]
    },
    "width_px": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "height_px": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "totals": {
      "type": "object",
      "properties": {
        "subtotal": {
          "type": "string"
        },
        "discount": {
          "type": "string"
        },
        "tax": {
          "type": "string"
        },
        "tip": {
          "type": "string"
        },
        "total": {
          "type": "string"
        },
        "change": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "subtotal",
        "discount",
        "tax",
        "tip",
        "total",
        "change"
      ],
      "additionalProperties": false
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "url",
    "expires_at",
    "format",
    "width_px",
    "height_px",
    "totals",
    "notes"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢make_barcode(type, value, format)

Make a barcode image on white, with quiet zones and the readable text under a 1-D code, and get a 24-hour download link. type is code128 (printable ASCII, up to 48 characters), ean13 (12 digits, or 13 with a check digit that must match), upca (11 digits, or 12 with a check digit that must match) or qr (up to 300 characters). format is png (default) or svg. Returns url, expires_at and text, what a reader will decode (including the check digit). 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

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "code128",
        "ean13",
        "upca",
        "qr"
      ],
      "description": "Barcode type"
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "What to encode"
    },
    "format": {
      "default": "png",
      "description": "File type of the barcode",
      "type": "string",
      "enum": [
        "png",
        "svg"
      ]
    }
  },
  "required": [
    "type",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "text": {
      "type": "string"
    }
  },
  "required": [
    "url",
    "expires_at",
    "text"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢calculate_sales_tax(amount, rate, mode, currency)

Work out sales tax exactly, in whole minor units. mode "add": amount is the price before tax. mode "extract": amount already includes the tax, and the net price and the tax inside it are returned. rate is a percentage like "8.25". Money is a decimal string. Returns net, tax and gross as decimal strings rounded to the currency's decimals (default 2). Free. 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

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "string",
      "pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
      "description": "The price, as a decimal string like 100.00"
    },
    "rate": {
      "type": "string",
      "pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
      "description": "Tax rate in percent, like \"8.25\""
    },
    "mode": {
      "type": "string",
      "enum": [
        "add",
        "extract"
      ],
      "description": "add: amount is before tax. extract: amount includes tax"
    },
    "currency": {
      "description": "Only decimals matters here (0, 2 or 3); default 2 decimals",
      "type": "object",
      "properties": {
        "symbol": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5
        },
        "decimals": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 2
            },
            {
              "type": "number",
              "const": 3
            }
          ]
        },
        "position": {
          "type": "string",
          "enum": [
            "before",
            "after"
          ]
        },
        "thousands": {
          "type": "string",
          "enum": [
            ",",
            ".",
            " ",
            ""
          ]
        },
        "decimal": {
          "type": "string",
          "enum": [
            ".",
            ","
          ]
        }
      },
      "required": [
        "symbol",
        "decimals",
        "position",
        "thousands",
        "decimal"
      ]
    }
  },
  "required": [
    "amount",
    "rate",
    "mode"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "net": {
      "type": "string"
    },
    "tax": {
      "type": "string"
    },
    "gross": {
      "type": "string"
    }
  },
  "required": [
    "net",
    "tax",
    "gross"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢calculate_tip(bill, percent, people, round)

Work out a tip and split a bill between people, in whole cents. round "none" rounds the tip to the cent; "up-total" rounds the total up to the next whole unit; "up-each" rounds each person's share up to the next whole unit and the total becomes shares times people. Returns tip, total and per_person as decimal strings. Free. 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

{
  "type": "object",
  "properties": {
    "bill": {
      "type": "string",
      "pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
      "description": "The bill before the tip, as a decimal string like 87.40"
    },
    "percent": {
      "type": "string",
      "pattern": "^\\d{1,12}(\\.\\d{1,4})?$",
      "description": "Tip in percent, like \"18\""
    },
    "people": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "How many people share the bill"
    },
    "round": {
      "type": "string",
      "enum": [
        "none",
        "up-total",
        "up-each"
      ],
      "description": "none: to the cent. up-total: round the total up. up-each: round each share up"
    }
  },
  "required": [
    "bill",
    "percent",
    "people",
    "round"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "tip": {
      "type": "string"
    },
    "total": {
      "type": "string"
    },
    "per_person": {
      "type": "string"
    }
  },
  "required": [
    "tip",
    "total",
    "per_person"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡create_upload(bytes, filename)

Get a one-hour signed upload URL for a logo file (PNG, JPEG or SVG, up to 2 MB; a PNG or JPEG at most 2 megapixels) that sits on disk. PUT the raw bytes to upload_url with a Content-Length header, then pass file_id as make_receipt's logo.file_id. Free. 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

{
  "type": "object",
  "properties": {
    "bytes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2097152,
      "description": "Exact size of the file you will upload, in bytes (at most 2 MB)"
    },
    "filename": {
      "description": "Original file name",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "bytes"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "file_id": {
      "type": "string"
    },
    "upload_url": {
      "type": "string"
    },
    "method": {
      "type": "string",
      "const": "PUT"
    },
    "expires_at": {
      "type": "string"
    },
    "max_bytes": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "file_id",
    "upload_url",
    "method",
    "expires_at",
    "max_bytes"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools