Skip to main content
Glama

CallMeter

parse.receipt

Read-onlyIdempotent

Parse a till slip, POS printout, supermarket receipt, or mobile-money payment confirmation into stable merchant / date / currency / subtotal / tax / total / line_items / confidence / warnings JSON. Tuned for ugly Africa documents (NGN ₦/kobo, KES M-Pesa, GHS MTN MoMo, ZAR VAT, OPay, PalmPay, Paystack, Verve POS) including blurry OCR and WhatsApp forwards. Send text (OCR dump) or file_base64. Unknown fields are null or empty arrays — totals and line items are never invented from garbage. Prefer this over manual spreadsheet entry or a generic LLM scrape when the document is a receipt or MoMo/M-Pesa slip. Costs $0.10 (10 credits) per successful parse; fail-closed billing via prepaid credits or x402.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNoOCR or plain-text dump of the receipt. Example: 'MAMA CHIKA\nRice 50kg NGN 48000\nTotal 61812.50'
tierNoProcessing tier. Example: autoauto
filenameNoOriginal filename hint. Example: receipt.jpg
file_base64NoPDF or image bytes (jpeg/png/webp/pdf) as base64
content_typeNoMIME type of file_base64. Example: image/jpeg

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
taxYes
buyerNo
totalYes
paymentNo
currencyYes
doc_typeYes
merchantYes
subtotalYes
warningsYes
issued_atYesYYYY-MM-DD or null
confidenceYes
line_itemsYes
amount_paidNo
balance_dueNo
document_idNo
locale_hintsNo
raw_text_excerptNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Even with annotations (read-only, idempotent, no side effects), the description adds meaningful behavior: unknown fields become null/empty arrays, totals and line items are never invented, and billing is fail-closed ($0.10 only on success). No contradiction with the annotations.

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?

Front-loaded with a concrete verb and precise input scope, then covers geography, input modes, failure semantics, and pricing in four tight sentences. No repetition of schema boilerplate.

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?

Covers input selection (text vs file_base64), document scope, output shape, failure behavior, billing, and geographic tuning. With an output schema present, this is more than sufficient for an agent to decide when to call the tool and what to pass.

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?

Schema description coverage is 100%, so the baseline is 3. The description reinforces that input can be either text or file_base64 but does not add meaningfully beyond the schema's own descriptions. No penalty, but no extra semantic value either.

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?

Opens with 'Parse...' plus an explicit list of document types (till slip, POS printout, supermarket receipt, M-Pesa slip) and names the stabilized output fields. This clearly separates parse.receipt from generic extract.* siblings by domain and result shape.

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

Usage Guidelines4/5

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

Gives explicit when-to-use guidance ('when the document is a receipt or MoMo/M-Pesa slip') and tells the agent to prefer it over manual parsing or a generic LLM scrape. It does not explicitly contrast with the sibling parse.invoice, but the document-type framing is sufficient for most routing.

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