invoicein
Server Details
Any EU e-invoice (XRechnung, ZUGFeRD/Factur-X, Peppol, FatturaPA, KSeF) → EN 16931 JSON + fix hints
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- peculiar-systems/invoicein-examples
- GitHub Stars
- 0
- Server Listing
- InvoiceIn
Available Tools
5 toolsinvoice_to_csvExport invoice as CSVBRead-onlyIdempotentInspect
Flat CSV of the invoice: one row per line item, or one row per document.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Local file path instead of file_base64; only honoured when the server runs over stdio on the same machine. | |
| level | No | 'lines' = one row per line item (document fields repeated), 'documents' = one row per invoice | lines |
| file_base64 | No | The invoice file, base64-encoded: XML (UBL, CII, XRechnung, Peppol, FatturaPA, KSeF FA(3)) or a ZUGFeRD/Factur-X hybrid PDF. Up to 25 MB decoded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds the useful behavioral detail that output is a flat CSV with either one row per line item or one row per document. However, it does not disclose input handling, failure modes, or anything beyond the output shape.
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 description is a single tight sentence that front-loads the output format ('Flat CSV') and then succinctly states the two possible row granularities. There is no verbosity or redundant detail.
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?
The schema and annotations cover a great deal: parameter types, formats, size limits, and safety. However, the description does not make explicit that one of file_base64 or path must be provided, even though the schema marks both as optional. This is an implicit precondition an agent could easily miss when calling the tool with no arguments.
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%, and the level parameter already explains the 'lines' and 'documents' modes. The description's phrase 'one row per line item, or one row per document' merely paraphrases the schema's own parameter documentation rather than adding new meaning. The file_base64 and path parameters are also already well described 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 clearly identifies the resource (invoice) and output format (flat CSV), and distinguishes the two row granularities. It lacks an explicit action verb like 'export' or 'convert', and it does not explicitly differentiate from siblings such as invoice_to_html or invoice_to_datev, though the CSV format makes the distinction fairly obvious.
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 guidance on when to use this tool versus alternatives like read_invoice, validate_invoice, invoice_to_html, or invoice_to_datev. The use case is only implied by the tool name and the word 'CSV'; no explicit conditions, exclusions, or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_to_datevExport invoice as DATEV BuchungsstapelARead-onlyIdempotentInspect
DATEV Buchungsstapel (EXTF 700) text for the incoming invoice: one booking row per VAT-rate group, automatic expense accounts by SKR. Verify account mapping with the tax advisor before import.
| Name | Required | Description | Default |
|---|---|---|---|
| skr | No | German chart of accounts: '03' (SKR03) or '04' (SKR04) | 03 |
| path | No | Local file path instead of file_base64; only honoured when the server runs over stdio on the same machine. | |
| file_base64 | No | The invoice file, base64-encoded: XML (UBL, CII, XRechnung, Peppol, FatturaPA, KSeF FA(3)) or a ZUGFeRD/Factur-X hybrid PDF. Up to 25 MB decoded. | |
| creditor_account | No | Creditor (Gegenkonto) number to post the invoice against, e.g. 70000 | 70000 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable behavioral context: output rows are grouped per VAT-rate group, expense accounts are selected automatically based on SKR, and the user should verify account mappings before import. There is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The output format is front-loaded, the key transformation rule is stated, and the verification caveat is a practical addition that earns its place.
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, full parameter-schema coverage, and annotations covering safety, the description provides enough context to understand the tool's behavior and constraints. The only notable gap is explicit sibling differentiation, but it does not prevent correct invocation.
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 input schema already documents all four parameters with 100% coverage, so the baseline is 3. The description adds slight semantic value by explaining that SKR drives automatic expense-account mapping, but it does not meaningfully elaborate on path, file_base64, or creditor_account 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 title and description state a specific action (exporting an invoice), a precise target format (DATEV Buchungsstapel EXTF 700), and the transformation behavior (one booking row per VAT-rate group, automatic expense accounts by SKR). This clearly distinguishes it from sibling tools like invoice_to_csv and invoice_to_html.
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 description implies the use case — producing DATEV accounting text for an incoming invoice — and includes a tax-advisor verification caveat, but it never explicitly states when to prefer this tool over invoice_to_csv or invoice_to_html, nor when not to use it. The routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invoice_to_htmlRender invoice as HTMLARead-onlyIdempotentInspect
Human-readable HTML rendering of the invoice (self-contained, printable), same layout for every syntax; labels in the requested language.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language of the fix hints and rendering labels: en, de, pl, it or fr. | en |
| path | No | Local file path instead of file_base64; only honoured when the server runs over stdio on the same machine. | |
| file_base64 | No | The invoice file, base64-encoded: XML (UBL, CII, XRechnung, Peppol, FatturaPA, KSeF FA(3)) or a ZUGFeRD/Factur-X hybrid PDF. Up to 25 MB decoded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable behavioral context beyond those annotations: output is self-contained, printable, consistent in layout across syntaxes, and localized via language labels. No contradictions with annotations are present.
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 description is a single, well-structured sentence that front-loads the core purpose and packs in the most relevant behavioral details without waste. Every clause earns its place.
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?
Given the presence of a complete input schema, an output schema, and safety annotations, the description covers the key behavioral aspects an agent needs: output type, self-contained nature, printability, layout consistency, and localization. It could slightly expand on when to prefer this over sibling tools, but nothing critical is missing for correct invocation.
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%, and the schema already explains lang, path, and file_base64 in detail. The description adds little parameter-specific meaning beyond reinforcing that language affects rendering labels, which the schema already states. Baseline 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 ('renders') and resource ('invoice') with a clear output form: human-readable, self-contained, printable HTML. This clearly distinguishes it from siblings like invoice_to_csv, invoice_to_datev, read_invoice, and validate_invoice, which produce different output types or serve different objectives.
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 description implies when to use this tool: when a human-readable, self-contained HTML representation of an invoice is needed, regardless of source syntax. It does not explicitly name alternatives or state when not to use it, but the render-to-HTML framing provides clear contextual guidance compared to the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_invoiceRead invoiceARead-onlyIdempotentInspect
Parse any European e-invoice into canonical EN 16931 JSON and validate it against the official rule sets. Returns the detected format, the invoice as one JSON shape regardless of syntax, and a validation report whose failed rules carry plain-language fix hints.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language of the fix hints and rendering labels: en, de, pl, it or fr. | en |
| path | No | Local file path instead of file_base64; only honoured when the server runs over stdio on the same machine. | |
| file_base64 | No | The invoice file, base64-encoded: XML (UBL, CII, XRechnung, Peppol, FatturaPA, KSeF FA(3)) or a ZUGFeRD/Factur-X hybrid PDF. Up to 25 MB decoded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | Present when ok is false: code, message, hint |
| source | No | |
| invoice | No | Canonical EN 16931 JSON: document, seller, buyer, lines, tax_breakdown, totals, payment, attachments, extensions |
| timings_ms | No | |
| validation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds valuable behavioral detail beyond the annotations: it returns the detected format, normalizes output across syntaxes, and includes fix hints with failed validation rules. This is meaningful context for an agent invoking the tool.
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 sentences with no filler. The first sentence states the core purpose and validation behavior; the second expands on the return shape and report quality. All information is front-loaded and earns its place.
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?
The description is complete for this tool's complexity: it covers scope, output normalization, validation, and report content. The output schema handles return-structure details, and the annotations cover safety semantics. No critical operational gap remains for an agent to call it correctly.
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 the baseline is 3 even though the description adds no parameter-specific detail. The schema already documents lang, path, and file_base64, including allowed languages, local-path restrictions, and the 25 MB limit.
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 ('Parse') and resource ('any European e-invoice') and clearly defines the output: canonical EN 16931 JSON plus a validation report. This distinguishes read_invoice from its sibling validate_invoice, since it both parses and validates rather than only validating.
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 description implies usage: use this tool when an invoice file needs to be parsed into canonical JSON and validated against official rule sets. However, it does not explicitly mention when to prefer validate_invoice or the conversion siblings, so the routing guidance is only 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.
validate_invoiceValidate invoiceARead-onlyIdempotentInspect
Validation only: which rule sets were applied (XSD, EN 16931, XRechnung, Peppol, arithmetic), the errors and warnings with fix hints, and the invoice header. Cheaper to read than read_invoice when you only need a verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language of the fix hints and rendering labels: en, de, pl, it or fr. | en |
| path | No | Local file path instead of file_base64; only honoured when the server runs over stdio on the same machine. | |
| file_base64 | No | The invoice file, base64-encoded: XML (UBL, CII, XRechnung, Peppol, FatturaPA, KSeF FA(3)) or a ZUGFeRD/Factur-X hybrid PDF. Up to 25 MB decoded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| source | No | |
| document | No | Invoice header: id, issue_date, currency, due_date … |
| validation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds context beyond those: it emphasizes that this is validation only, surfaces that it is cheaper than read_invoice, and tells the agent what classes of results to expect. No contradiction with annotations.
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 focused sentences with no filler. The first sentence front-loads the tool's purpose and output scope, and the second sentence provides a crisp decision rule against a sibling. Every clause earns its place.
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 a full output schema, complete parameter documentation, and safety annotations, the description covers the remaining selection context: what this tool returns, its validation-only scope, and when it is preferable to read_invoice. Nothing essential is missing for an agent to choose and call it correctly.
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 the schema fully documents lang, path, and file_base64. The description does not add parameter-level detail, but it also doesn't need to; the baseline 3 applies because the schema carries the burden.
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 action ('Validation only') and resource ('invoice'), then enumerates the concrete outputs: applied rule sets, errors/warnings with fix hints, and invoice header. It clearly distinguishes itself from read_invoice by framing itself as a cheaper validation-first alternative.
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 description explicitly names the sibling tool read_invoice and gives the condition for choosing validate_invoice: when you 'only need a verdict.' This is direct when-to-use guidance and makes the trade-off clear.
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. Dates show when Glama detected each change.
5 tool updates
- First observed
invoice_to_csv - First observed
invoice_to_datev - First observed
invoice_to_html - First observed
read_invoice - First observed
validate_invoice
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Validate, generate & convert EU e-invoices (UBL, CII, XRechnung, Factur-X) — EN 16931 pre-validated.
Validiert E-Rechnungen (ZUGFeRD/Factur-X, XRechnung) gegen EN 16931 mit Korrekturvorschlägen.
EN 16931: validate invoice data or a UBL/CII file, emit UBL or CII XML. XRechnung, Peppol. Not PDF.
Create, validate, convert & extract compliant e-invoices (UBL, Factur-X, ZUGFeRD, XRechnung)
Related MCP Servers
- AlicenseAqualityCmaintenanceValidates electronic invoices (XRechnung, ZUGFeRD, Factur-X, Peppol BIS, etc.) against authority-pinned rules and explains failures.221MIT
- AlicenseNot gradedqualityCmaintenanceEU e-invoice validation, as a developer API. Check whether an electronic invoice conforms to EN 16931 — the European standard behind France, Germany, Belgium, Poland and the 2030 ViDA mandate — with a single REST call. Structured JSON errors mapped to the official BR-* business rules. No enterprise sales call required.MIT
- AlicenseAqualityBmaintenanceValidates EU electronic invoices (Peppol, XRechnung, FatturaPA, etc.) and explains validation error codes, enabling AI coding agents to check invoice validity and get fixes before rejection.353MIT
- FlicenseNot gradedqualityDmaintenanceEU e-invoicing — UBL/CII conversion to XRechnung and FatturaPA-
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
The three conversion tools are clearly separated by output format, and read_invoice/validate_invoice are distinguished by full parsing versus cheap validation-only. There is slight overlap because read_invoice also validates, but the descriptions make the intended usage clear.
The conversion tools follow a consistent invoice_to_<format> pattern, while read_invoice and validate_invoice follow a verb_invoice pattern. All names are lowercase snake_case and predictable, though not every tool follows the same verb_noun style.
Five tools is a well-scoped set for an e-invoice processing server: two parsing/validation entry points and three concrete output conversions. Each tool serves a meaningful purpose without unnecessary redundancy or bloat.
The server covers the main incoming-invoice workflow: parse and validate any European e-invoice, then export to common formats like CSV, DATEV, and HTML. A minor gap is the lack of an explicit conversion back to another e-invoice syntax, but that seems outside the server's apparent purpose.