Skip to main content
Glama

Finekot API

e_invoice

op=validate: EU e-invoice in UBL 2.1 or UN/CEFACT CII XML, or a ZUGFeRD/Factur-X PDF with the embedded XML. Detects syntax and profile (XRechnung, Peppol BIS, Factur-X/ZUGFeRD, EN 16931) and checks it against the official EN 16931 schematron rules plus KoSIT XRechnung rules for XRechnung profiles; returns every violation with rule id, severity, message and XPath location. Verdict is technical validity only, not a legal or tax assessment; XSD and PDF/A-3 are not checked. op=create: invoice JSON → XRechnung 3.0 or EN 16931 XML in UBL or CII with VAT totals computed, validated by the same rules; output=pdf returns a Factur-X / ZUGFeRD EN 16931 (COMFORT) PDF with a rendered invoice and the CII XML embedded, checked by the Factur-X XSD and by validate; billed ×2. Cost €0.02 per document, charged to the API key in Authorization: Bearer. Parameters — op: validate | create (default validate); url: invoice url (XML or PDF), op=validate; xml: invoice XML as a string (alternative to url/file); rules: auto | en16931 | xrechnung — auto picks XRechnung rules from the profile id (op=validate); output: xml | pdf (op=create, default xml) — pdf = Factur-X EN 16931 hybrid PDF, needs syntax=cii, profile=en16931 (defaults); syntax: ubl | cii (op=create, default ubl; cii for output=pdf); profile: xrechnung | en16931 (op=create, default xrechnung; en16931 for output=pdf); invoice: op=create: {number, issue_date, due_date?, currency, buyer_reference (Leitweg-ID, required by XRechnung), delivery_date? | period{start,end}?, note?, order_reference?, seller{name, vat_id|tax_number, address{street, city, postcode, country}, contact{name, phone, email}, electronic_address{scheme,id}?}, buyer{name, address{...}, electronic_address|contact.email}, payment{means_code=58, iban, bic?, terms?}, lines[{name, quantity, unit=C62, price, vat_rate, vat_category=S, description?, item_id?, exemption_reason?}], prepaid?}.

Input Schema

NameRequiredDescriptionDefault
opNo
urlNo
xmlNo
rulesNo
outputNo
syntaxNo
invoiceNo
profileNo

Output Schema

NameRequiredDescriptionDefault
resultYes

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?

With no annotations, the description carries the full burden and does so: it discloses the return shape ('every violation with rule id, severity, message and XPath location'), the exact scope limits ('technical validity only, not a legal or tax assessment; XSD and PDF/A-3 are not checked'), authentication ('Authorization: Bearer'), and cost ('€0.02 per document', 'billed ×2' for PDF). These are precisely the behavioral facts an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information density is high with little true filler, and the two operating modes are front-loaded. However, it is delivered as one monolithic run-on block with parameter documentation crammed into a trailing 'Parameters —' clause, making it harder to scan than a segmented description would be.

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?

Complete for a dual-mode tool: input formats, profile selection, validation scope limitations, output variants, cost, and auth are all covered, and an output schema exists so return values need no further explanation. Nothing an agent needs to call this correctly is absent.

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?

Schema coverage is 0%, so the description must compensate, and it documents all eight parameters with allowed values and defaults in prose, including the full nested invoice object structure (seller, buyer, payment, lines). A minor deduction: it describes 'invoice' as a field-by-field object while the schema types it as a string, and it references a 'file' alternative that is not a parameter, leaving slight ambiguity about the wire format.

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+resource for each mode: 'op=validate: EU e-invoice in UBL 2.1 or UN/CEFACT CII XML' and 'op=create: invoice JSON → XRechnung 3.0 or EN 16931 XML'. The supported syntaxes and profiles are named concretely, which distinguishes it from siblings like invoice_parse and invoice_3way_match without 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 Guidelines4/5

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

Gives clear operating context through explicit mode defaults (op default validate, output default xml, syntax default ubl) and conditional rules such as 'auto picks XRechnung rules from the profile id' and 'pdf ... needs syntax=cii, profile=en16931'. It does not explicitly name a sibling alternative or state when-not to use this tool, which keeps it below 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