InvoiceIn
Server Details
Reads and validates any European e-invoice a business receives — XRechnung, UBL, CII, ZUGFeRD/Factur-X PDF, Peppol BIS 3, FatturaPA, KSeF FA(3) — into canonical EN 16931 JSON with plain-language fix hints in EN/DE/PL/IT/FR, plus PDF, CSV and DATEV export. Nothing is stored; works without a key on a small daily quota.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
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?
The annotations already convey safety (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description does not need to repeat that. It adds a behavioral note that the CSV is 'flat' and that granularity can be per line item or per document, but this largely restates the level parameter's semantics rather than revealing new behavioral traits.
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, compact sentence that front-loads the core output type ('Flat CSV of the invoice') and then immediately clarifies the two row modes. There is no filler or redundant repetition of schema details.
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 full input schema, an output schema, and read-only/idempotent annotations, the description is largely complete for a straightforward conversion call. It does not need to explain return values or safety. The only notable gap is the lack of anything pointing to when to choose CSV over sibling tools, but that is covered by the usage-guidelines dimension.
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 already defines path, level, and file_base64, including formats and constraints. The description's line-item vs document phrasing mirrors the level parameter without adding new parameter-level meaning, so the baseline of 3 applies.
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 together make clear that this tool exports an invoice as a CSV, with explicit row-granularity options ('one row per line item' vs 'one row per document'). It clearly identifies the output format and distinguishes it from sibling HTML/Datev converters, though it does not explicitly name the siblings or use a strong verb in the description itself.
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 gives no guidance on when to use this tool vs the sibling tools invoice_to_html, invoice_to_datev, read_invoice, or validate_invoice. There are no exclusions, prerequisites, or alternative-selection hints; an agent must infer usage solely from the tool name and title.
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?
The description adds behavioral detail beyond the annotations: output is EXTF 700 text, booking rows are grouped by VAT-rate group, and expense accounts are automatically derived using SKR. The caveat to verify account mapping with the tax advisor is also useful operational context. No contradiction with the read-only and idempotent hints.
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 front-loads the output format and key behavioral detail, and the second adds the necessary tax-advisor caution. It is appropriately sized for the tool's complexity.
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 rich schema, output schema, and annotations, the description covers what the tool produces and the important import caveat. It does not explicitly say that one of file_base64 or path must be supplied, but the schema already documents those alternatives and constraints.
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 schema already documents all four parameters with 100% coverage, including formats, defaults, and constraints. The description adds that SKR drives automatic expense-account selection, but it does not provide significant new parameter-level meaning 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: Export invoice as DATEV Buchungsstapel (EXTF 700) text. It also explains what is produced, 'one booking row per VAT-rate group', which 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 intended context is clear: this is for converting an incoming invoice into DATEV import format, with a warning to verify account mapping with a tax advisor before import. It does not explicitly name alternatives or state when not to use it, but the DATEV-specific language makes the use case unambiguous.
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 cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral detail beyond that: output is self-contained, printable, has the same layout for every syntax, and uses labels in the requested language. This enriches the agent's understanding of how the tool behaves.
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 front-loaded sentence with no filler. Every clause carries meaningful information: HTML rendering, human-readable, self-contained, printable, consistent layout, and language support.
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 simple read-only rendering tool with full schema coverage, annotations, and an output schema, the description covers the essential purpose and output traits. It could be slightly more complete by explicitly addressing when to choose 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%, so the schema fully documents lang, path, and file_base64. The description adds only a light connection between 'labels in the requested language' and the lang parameter, without adding semantics beyond what the schema already provides.
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: 'HTML rendering of the invoice'. It clearly distinguishes the tool from siblings by emphasizing HTML, self-containment, printability, consistent layout, and language labels — properties that set it apart from CSV, DATEV, reading, and validation tools.
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 usage context is implied by 'Human-readable HTML rendering' and 'printable', which suggests when this tool is appropriate. However, the description does not explicitly state when to prefer it over invoice_to_csv, invoice_to_datev, read_invoice, or validate_invoice, nor does it name alternatives.
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 readOnlyHint=true and idempotentHint=true, and the description adds useful behavioral detail: it returns a detected format, a canonical unified JSON shape, and a validation report with plain-language fix hints. This goes beyond the annotations without contradicting them.
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 two sentences, front-loaded with the core purpose, and each sentence carries meaningful information: what it parses, what it validates, and what it returns. There is no filler or redundant restating of the tool name.
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 read-only parsing tool with full schema coverage and an output schema, the description is largely complete. It covers purpose, output shape, and validation behavior; the main shortfall is not clarifying how this relates to the validate_invoice sibling or when the conversion siblings are the better choice.
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 adds high-level context about European e-invoice parsing but does not add parameter-level semantics beyond what the schema already provides, so the baseline 3 applies.
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 any European e-invoice into canonical EN 16931 JSON') and clearly identifies the resource and output. It also mentions validation, but it does not explicitly distinguish itself from the sibling validate_invoice, which could also validate invoices.
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 gives no guidance on when to choose this tool over alternatives like validate_invoice or the invoice_to_* converters. The mention of returning JSON implicitly suggests different output formats are handled elsewhere, but there is no explicit when/when-not guidance.
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, idempotent, and non-destructive behavior. The description adds meaningful beyond-annotation context: validation returns only rule sets and diagnostics (not full data), and it is cheaper to read than read_invoice. 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 sentences with no filler. 'Validation only' is front-loaded, the output expectations are compactly listed, and the sibling comparison is a single clause. Every part 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 output schema exists, all parameters are self-documented, and annotations cover safety/idempotence, the description is complete for a validation tool. It states the purpose, outputs, and the key alternative without missing critical invocation 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?
Schema description coverage is 100%, with each of the three optional parameters already documented in detail (lang pattern, path limitation, file_base64 formats and 25 MB cap). The description adds no parameter-specific semantics, so the baseline of 3 applies.
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 uses a specific verb and resource ('validate invoice') and immediately scopes the tool with 'Validation only'. It enumerates the exact output categories: applied rule sets, errors/warnings with fix hints, and invoice header, which clearly distinguishes it from siblings like read_invoice.
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 read_invoice as the main alternative and gives a clear selection criterion: 'when you only need a verdict' and 'Cheaper to read'. It stops short of stating the full when-not case, but the guidance is specific and actionable.
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 Servers
- AlicenseNot gradedqualityDmaintenanceEnables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT- AlicenseNot gradedqualityCmaintenanceEnables AI chat clients to perform market research and competitive intelligence by gathering company overviews, competitor lists, product portfolios, pricing snapshots, and recent news via live Tavily search.MIT
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.11961MIT
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 the parse versus validation distinction is mostly clear. The main overlap is between read_invoice and validate_invoice since both produce validation reports, though the descriptions clarify that read_invoice returns the full canonical invoice while validate_invoice is a cheaper validation-only operation.
The conversion tools follow a consistent invoice_to_<format> pattern, while read_invoice and validate_invoice use a verb_invoice pattern. This is readable and predictable, but slightly inconsistent because the conversions do not follow the same verb-first style.
Five tools is well-scoped for an invoice processing server: parsing, validation, and three common output conversions. Each tool has a distinct role, and the count does not feel padded or thin.
The server covers the core invoice workflow: read, validate, and convert to useful outputs. Minor gaps exist, such as no explicit listing of supported source formats or batch/multiple invoice handling, but these are not critical for the apparent purpose.