Skip to main content
Glama

Finekot API

invoice_3way_match

Matches a supplier invoice against the purchase order and the goods received note, line by line (SKU, then fuzzy description): price above PO, invoiced more than ordered or received, lines not received, invoice lines not on the PO, PO reference and currency, plus amount at risk. Each document as JSON or URL (PDF/scan/photo, extracted for you); receipt optional for a 2-way match; tolerances in percent. A finding, not a payment decision. Documents are not stored. Cost €0.12 per match, charged to the API key in Authorization: Bearer. Parameters — po: purchase order as JSON {po_number, currency, items[{sku, description, qty, unit_price}]}; po_url: PO document url (alternative); invoice: invoice as JSON {invoice_number, po_number, currency, items[...]}; invoice_url: invoice url (alternative); receipt: goods received note as JSON {receipt_number, po_number, items[{sku, description, qty_received}]}; receipt_url: goods received note url (optional); price_tolerance_pct: allowed price overrun, % (default 0); qty_tolerance_pct: allowed quantity overrun, % (default 0).

Input Schema

NameRequiredDescriptionDefault
poNo
po_urlNo
invoiceNo
receiptNo
invoice_urlNo
receipt_urlNo
qty_tolerance_pctNo
price_tolerance_pctNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does well: it states no documents are stored, gives the exact cost (€0.12 per match billed to the Authorization bearer key), and frames the output as 'a finding, not a payment decision' so the agent understands the limits of the result. It also discloses the fuzzy description-based matching behavior. It does not cover failure modes or rate limits, so 4 rather than 5.

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?

It is dense and front-loads the value proposition before the parameter block, and every clause carries information. The middle sections are long run-on semicolon chains, which costs some readability, but almost nothing is redundant.

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 complex 8-parameter matching tool, the definition covers cost, data-retention policy, acceptable input formats, the optional-receipt path, tolerance defaults, and per-parameter payload structure, and an output schema exists so return values need not be described. An agent could invoke this correctly from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: all eight parameters are documented with their JSON shapes ({po_number, currency, items[{sku, description, qty, unit_price}]}, receipt items with qty_received, etc.), the url alternatives are marked as alternatives, receipt is marked optional, and both tolerance parameters are explained in percent with defaults of 0.

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 opens with a specific verb and resource: matches a supplier invoice against both the purchase order and the goods received note, line by line on SKU then fuzzy description. It then enumerates the exact findings produced (price over PO, over-invoicing vs ordered/received, missing lines, off-PO lines, PO reference/currency, amount at risk), which distinguishes it clearly from siblings like invoice_parse, purchase_order_extract, and e_invoice.

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?

It gives concrete usage context: each document can be supplied as JSON or as a URL (PDF/scan/photo) that is extracted for you, and it states that the receipt is optional, making it a 2-way match when omitted. What is missing is explicit routing guidance naming alternatives (e.g. when to use invoice_parse first instead), so it stops short of a 5.

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