Receipt Audit
Server Details
Checks receipts and invoices for AI generation, edits and resubmission, with proof you can re-check.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
check_receipt, get_account, and report_feedback have clearly distinct purposes. However, create_api_key and create_claim_link both center on producing a claim_url for account take-over (create_api_key even returns one), which could cause an agent to pick the wrong one for a given situation, though the descriptions do differentiate initial setup from later purchase flows.
All five tools follow a clean verb_noun snake_case pattern: check_receipt, create_api_key, create_claim_link, get_account, report_feedback. No mixed conventions or vague verbs.
Five tools is well-scoped for a focused receipt-auditing service: one core audit call plus account management and feedback. Each tool earns its place without redundancy.
The core audit lifecycle (check a receipt, get account state, create key/claim link, report issues) is covered, and dedup is handled inside check_receipt. Minor gaps exist: no way to list or retrieve past checks/audit results and no delete of prior submissions, but these are workable around.
Available Tools
5 toolscheck_receiptCheck a receiptAInspect
Extracts the fields of a receipt or invoice (image or PDF, by https URL or base64), checks its arithmetic, tax rate and dates, scores signs that it was edited or AI-generated (with reasons), and reports whether the same receipt was submitted before. Costs 1 credit, refunded if the file can't be read.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | For MCP clients that can't send an Authorization header. Prefer the header. | |
| image_url | No | Public https URL of the receipt image or PDF. | |
| mime_type | No | Only needed with image_base64 when the type can't be sniffed. | |
| image_base64 | No | The file's bytes, base64-encoded (a data: URL prefix is fine). Max 8 MB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| checks | Yes | Deterministic checks: arithmetic, tax plausibility, dates, currency. |
| fields | Yes | |
| checkId | Yes | |
| duplicate | Yes | |
| authenticity | Yes | risk: 0 = looks genuine, 1 = almost certainly edited, generated or reused. Signals with reasons, not a verdict. |
| creditsRemaining | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses high-value behavior that the annotations do not: a 1-credit cost with a refund when the file is unreadable, and an implicit persistence/duplicate-detection side effect (consistent with readOnlyHint=false). It also tells the agent the result includes reasons for AI/edit scoring.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability is front-loaded in one dense but well-structured sentence, with cost/refund as a distinct second sentence. It is long, but nearly every clause maps to a real user-visible behavior, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema, return values need not be explained; the description instead covers the input modes, billing, refund condition, duplicate check, and detection scoring. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (api_key, image_url, mime_type, image_base64) is already documented and the baseline is 3. The description only restates the URL-vs-base64 duality and file types, adding no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-and-resource with enumerated sub-operations: extract fields, check arithmetic/tax/dates, score edit/AI-generation signals, and duplicate-submission lookup. An agent can distinguish this from every sibling (create_api_key, create_claim_link, get_account, report_feedback) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear triggering context (receipt/invoice verification) and acceptable inputs (image or PDF, https URL or base64), which frames when the tool applies. It does not name exclusions or alternative tools, but the sibling set is unrelated, so there is little genuine ambiguity to resolve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_api_keyCreate an API keyAInspect
Returns a new API key with 50 free checks, and a claim_url where a person can take over the account and add prepaid credits. One key serves every later call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| api_key | Yes | Send as Authorization: Bearer <api_key>. Shown once: store it. |
| credits | Yes | Free checks included. |
| docs_url | Yes | |
| claim_url | Yes | Where a person claims the account and adds credits. Valid 30 days. |
| pricing_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-idempotent, non-destructive write. The description adds real behavioral context beyond that: the returned key carries 50 free checks, a claim_url enables a human to take over the account, and the key is reusable for all subsequent calls. It omits what happens on repeat invocation despite idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the primary outcome (new API key) front-loaded and the follow-on mechanics (claim_url, reuse) after it. Every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value enumeration is not strictly required, yet the description still conveys the meaningful parts (free checks, claim_url). With no parameters and annotations covering the safety profile, the only real gap is the missing routing guidance against the sibling create_claim_link.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema imposes nothing the description must compensate for; baseline is 4. The description correctly focuses on outputs and lifecycle rather than inventing parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete outcome: it returns a new API key plus a claim_url for account takeover and prepaid credits. That is a specific verb+resource pairing an agent can act on. It does not, however, distinguish itself from the sibling create_claim_link, even though it mentions a claim_url that overlaps conceptually with that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One key serves every later call' implies the tool is a one-time bootstrap step, which is useful implicit guidance on frequency. There is no explicit statement of when to use this versus create_claim_link or get_account, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_claim_linkCreate a claim linkBInspect
Returns a new claim_url (valid 30 days) where a person can claim this account and buy credits.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | For MCP clients that can't send an Authorization header. Prefer the header. |
Output Schema
| Name | Required | Description |
|---|---|---|
| claim_url | Yes | Where a person claims this account and buys credits. Valid 30 days. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the description's job is smaller. It does add genuinely useful behavior: the link is time-boxed to 30 days and grants account-claiming/credit-purchasing power. It omits whether calling again invalidates prior links and what authorization is required, which matters for a security-sensitive link generator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the key facts (new URL, 30-day validity, purpose) are front-loaded. Nothing is wasted, though the brevity comes partly at the cost of the missing usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return shape needn't be explained, and the sole parameter is fully documented. Still missing for a link that grants account takeover: authorization requirements and the effect of repeated calls on existing links.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter and schema description coverage is 100%, so the schema already explains api_key and the Authorization-header preference. The description adds nothing about it, which is acceptable at this coverage level but earns no bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific effect (returns a new claim_url) with the concrete outcome: a person can claim this account and buy credits. An agent can tell what it produces without opening the schema, though it never contrasts itself with the sibling create_api_key or get_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives, no prerequisites (does the caller need an existing account/API key?), and no statement about whether it should be called once or repeatedly. The agent must infer all of that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet account and creditsBRead-onlyIdempotentInspect
Returns the remaining credits, whether a person has claimed the account, and how many checks it has run.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | For MCP clients that can't send an Authorization header. Prefer the header. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | unclaimed = no person has bought credits yet. |
| credits | Yes | |
| checks_run | Yes | |
| key_prefixes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the actual returned values (credits, claim state, check count), which is useful, but says nothing about authentication requirements or the api_key fallback behavior beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the primary return value (remaining credits) and packs three distinct outputs without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value structure is already documented, and annotations cover safety. The description is sufficient for an agent to call this correctly; the only minor gap is the absence of auth/permission context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 100% schema description coverage, the schema fully documents the optional api_key. The description adds no parameter-level semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('returns') plus the exact resource payload: remaining credits, claim status, and checks run. That field-level detail lets an agent distinguish it from siblings like check_receipt or create_claim_link, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer from the returned fields alone that this is the account-status lookup, which is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_feedbackReport feedbackAInspect
Report a missing capability, a wrong result or a bug in a sentence or two. A person reads every report. Free, no key needed (send yours to link the report to your account).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| api_key | No | For MCP clients that can't send an Authorization header. Prefer the header. | |
| message | Yes | What you were trying to do, what happened, what you needed. | |
| operation | No | The operation it's about, e.g. check_receipt. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| received | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive write. The description adds genuinely useful behavioral context beyond that: a human reads every report, no key is required, and an optional key links the report to the account. It doesn't cover reversibility or turnaround, but the auth and human-review disclosures are meaningful additions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded, followed by the trust and auth details. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be described, and annotations cover the write/destructive profile. The description supplies purpose, auth requirements, and human-review context, leaving only minor gaps like expected response timing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and each property already carries a description, so the baseline is 3. The description adds value by clarifying brevity expectations ('a sentence or two') and the optional api_key's role, supplementing the enum and operation params documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (report) plus the exact resource categories (missing capability, wrong result, bug), which map directly to the kind enum. An agent can tell instantly that this is a feedback-submission tool and distinguish it from siblings like check_receipt or get_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The enumerated scenarios (missing capability, wrong result, bug) give clear context for when to use it, and 'in a sentence or two' hints at expected effort. However, no explicit when-not guidance or named alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
check_receipt - First observed
create_api_key - First observed
create_claim_link - First observed
get_account - First observed
report_feedback
Related MCP Connectors
Independent schema and rule check of AI agent output before you pay. Signed attestation and receipt.
Invoice PDFs, scans and photos to Excel, with the math checked: fields, line items and totals.
Evidence-backed UBL, PDF, and image invoice checks before approval or payment.
Reads invoices and receipts from PDF to JSON and checks the math. $0.04/page via x402.
Related MCP Servers
- AlicenseAqualityBmaintenanceRead and check European e-invoices (Factur-X, ZUGFeRD, XRechnung, UBL, CII) from an AI assistant: contents in plain text plus an EN 16931 consistency check.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and finance teams to extract structured fields from messy invoices and audit them before payment, applying seven evidence-backed risk rules that catch total/tax mismatches, duplicate invoices, missing fields, future dates, and round amounts, then returning a 0–100 score with a payment link. Exposes four MCP tools over stdio and Streamable HTTP (spec 2025-11-25) plus a web UI, backed by an optional AWS Bedrock or OpenAI-compatible extraction brain that degrades gracefully to a zero-dependency offline engine.MIT
- AlicenseNot gradedqualityBmaintenanceValidates EU, UK, and AU VAT numbers against live sources and uses AI pattern analysis to detect invoice fraud.62 npmMIT

InvoiceXMLofficial
AlicenseNot gradedqualityCmaintenanceInvoiceXML brings e-invoice compliance to your AI agent. Create, validate, convert, render, and extract structured invoices across UBL (Peppol BIS Billing 3.0, used worldwide), CII, Factur-X, ZUGFeRD, and XRechnung, all checked against the EN 16931 standard and official Schematron rules. Ask your assistant to generate a compliant invoice, validate one for errors, or convert between formats, with n5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.