Search / uk.alexhub/einvoice-validator
e-Factura Validator (Romania)
R0· no sign-inValidate, fix and generate Romanian e-Factura; check SAF-T D406 (ANAF validator + consistency)
v1.9.0 · active · website · descriptor JSON · versions
Search / uk.alexhub/einvoice-validator
R0· no sign-inValidate, fix and generate Romanian e-Factura; check SAF-T D406 (ANAF validator + consistency)
v1.9.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"einvoice-validator": {
"type": "http",
"url": "https://einvoice.alexhub.uk/mcp"
}
}
}claude mcp add --transport http einvoice-validator https://einvoice.alexhub.uk/mcp[mcp_servers.einvoice-validator]
url = "https://einvoice.alexhub.uk/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"einvoice-validator": {
"type": "remote",
"url": "https://einvoice.alexhub.uk/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"einvoice-validator": {
"type": "http",
"url": "https://einvoice.alexhub.uk/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=einvoice-validator&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZWludm9pY2UuYWxleGh1Yi51ay9tY3AifQ%3D%3D"
}{
"servers": {
"einvoice-validator": {
"type": "http",
"url": "https://einvoice.alexhub.uk/mcp"
}
}
}{
"mcpServers": {
"einvoice-validator": {
"httpUrl": "https://einvoice.alexhub.uk/mcp"
}
}
}extensions:
"einvoice-validator":
enabled: true
name: "einvoice-validator"
type: streamable_http
uri: "https://einvoice.alexhub.uk/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations14 of 14 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 3,068 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes40 tool changes in 30 daysstability.rug_pull4 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagefix_invoicechangeddescriptionUse when a validation report lists 'autofix' rules, or ANAF rejected an invoice for codes, dates or totals, and you want the corrected XML instead of editing it yourself: fixes county/sector/country/currency/unit codes, date formats, VAT-id prefixes, decimals, totals and VAT recomputed from the lines. Lists every change (field, old, new) and re-validates the result. Paid: $0.05 USDC via x402, charged only if something was fixed. Review the changes before sending the invoice.
Use when a validation report lists 'autofix' rules, or ANAF or a Peppol access point rejected an invoice for codes, dates or totals, and you want the corrected XML instead of editing it yourself: fixes county/sector/country/currency/unit codes, date formats, VAT-id prefixes, Belgian enterprise numbers (0208), Peppol CustomizationID/ProfileID, empty elements, decimals, totals and VAT recomputed from the lines. Lists every change (field, old, new) and re-validates the result. Paid: $0.05 USDC via x402, charged only if something was fixed. Review the changes before sending the invoice.
company_financialsaddedUse when you need a Romanian company's size or financial health from its CUI (credit check before invoicing or selling on terms, lead qualification, due diligence): the annual statement filed with ANAF: CAEN code, turnover, revenue, expenses, net_result (profit positive, loss negative), employees, assets, debts, equity. Without year: the last closed year with a statement. Only companies file statements (not PFA). Free, shares the 100 lookups per day per IP of lookup_company.
validate_ibanchangeddescription, input schemameaning changedCheck an IBAN (length and check digits) and name the Romanian bank. Free.
Use before putting an IBAN on an invoice or paying to one: checks length and check digits and names the Romanian bank (or the State Treasury). Free.
ro_tax_deadlineschangeddescription, input schemaRomanian monthly filing deadlines (D112, D300, D100, D390, D394, D406) for a reporting month, moved to the next working day when they fall on a weekend or holiday. General rules; confirm special regimes with ANAF. Free.
Use to know when Romanian returns are due: monthly filing deadlines (D112, D300, D100, D390, D394, D406) for a reporting month, moved to the next working day when they fall on a weekend or holiday. General rules; confirm special regimes with ANAF. Free.
ro_business_daychangeddescription, input schemaIs a date a Romanian working day, which is the next one, and (optionally) the date N working days later. Free.
Use to compute a due date in Romanian working days (e.g. the 5 working days to upload an e-Factura): is a date a working day, which is the next one, and the date N working days later. Free.
ro_holidayschangeddescription, input schemaRomanian public (legal) holidays for a year, incl. Orthodox Easter and Rusalii. Free.
Use when planning payment or filing dates in Romania: public (legal) holidays for a year, incl. Orthodox Easter and Rusalii. Free.
fx_ratechangeddescription, input schemaOfficial BNR (National Bank of Romania) exchange rate: RON per 1 unit of the currency, for a date (default today; weekends/holidays return the last publication). Omit currency for all rates. Free.
Use for an invoice in a foreign currency (e-Factura needs the VAT in RON) or any RON conversion: official BNR (National Bank of Romania) rate, RON per 1 unit of the currency, for a date (default today; weekends/holidays return the last publication). Omit currency for all rates. Free.
validate_saftchangeddescription, input schemaCheck a Romanian SAF-T file (D406) before filing it with ANAF: runs ANAF's official validator (DUKIntegrator) for the reporting period and the consistency checks it does not do offline (balanced entries, GL totals, opening + movements = closing per account, trial balance, partner balances, invoice totals, VAT = base x rate, VAT codes valid for the period, CUI/IBAN check digits, chart of accounts). Every finding has a fix in Romanian and English and the correct value where computable. Paid: $0.50 USDC via x402 (network eip155:8453), charged only if a D406 was checked; without a payment it returns the payment requirements.
Use before filing a Romanian SAF-T (D406) with ANAF, for the full report: runs ANAF's official validator (DUKIntegrator) for the reporting period and the consistency checks it does not do offline (balanced entries, GL totals, opening + movements = closing per account, trial balance, partner balances, invoice totals, VAT = base x rate, VAT codes valid for the period, CUI/IBAN check digits, chart of accounts). Every finding has a fix in Romanian and English and the correct value where computable. Paid: $0.50 USDC via x402 (network eip155:8453), charged only if a D406 was checked; without a payment it returns the payment requirements.
validate_saft_freechangeddescription, input schemaSame check as validate_saft, free: 1 file(s) per day per client IP, report limited to the first 10 findings (the total count is given).
Use before filing a Romanian SAF-T (D406) with ANAF, or when ANAF's DUKIntegrator reported errors: same check as validate_saft, free: 1 file(s) per day per client IP, report limited to the first 10 findings (the total count is given).
explain_rulechangeddescription, input schemameaning changedExplain one business rule by its id (e.g. BR-CO-15, BR-RO-110, PEPPOL-EN16931-R001): official text, plain-English fix and where the field lives in UBL. Free.
Use when ANAF SPV, a Peppol access point or a validation report names a rule (e.g. BR-CO-15, BR-RO-110, PEPPOL-EN16931-R001) and you need to know what it means and how to fix it: official text in English and Romanian, plain-English fix and where the field lives in UBL. Free.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-95% +updated-2d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://einvoice.alexhub.uk/mcp streamable-http | none | yes | 95% | 650 ms | 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25 | 2026-11-07 |
company_financialsread-only | Use when you need a Romanian company's size or financial health from its CUI (credit check before invoicing or selling on terms, lead qualification, due diligence): the annual statement filed with ANAF: CAEN code, turnover, revenue, expenses, net_result (profit positive, loss negative), employees, assets, debts, equity. Without year: the last closed year with a statement. Only companies file statements (not PFA). Free, shares the 100 lookups per day per IP of lookup_company. |
explain_ruleread-only | Use when ANAF SPV, a Peppol access point or a validation report names a rule (e.g. BR-CO-15, BR-RO-110, PEPPOL-EN16931-R001) and you need to know what it means and how to fix it: official text in English and Romanian, plain-English fix and where the field lives in UBL. Free. |
fix_invoiceread-only | Use when a validation report lists 'autofix' rules, or ANAF or a Peppol access point rejected an invoice for codes, dates or totals, and you want the corrected XML instead of editing it yourself: fixes county/sector/country/currency/unit codes, date formats, VAT-id prefixes, Belgian enterprise numbers (0208), Peppol CustomizationID/ProfileID, empty elements, decimals, totals and VAT recomputed from the lines. Lists every change (field, old, new) and re-validates the result. Paid: $0.05 USDC via x402, charged only if something was fixed. Review the changes before sending the invoice. |
fx_rateread-only | Use for an invoice in a foreign currency (e-Factura needs the VAT in RON) or any RON conversion: official BNR (National Bank of Romania) rate, RON per 1 unit of the currency, for a date (default today; weekends/holidays return the last publication). Omit currency for all rates. Free. |
generate_invoiceread-only | Use when you have invoice data but no XML and need a Romanian e-Factura ANAF accepts: builds UBL 2.1 CIUS-RO XML from simple data (number, dates, seller and buyer CUI, lines with name, quantity, unit, price without VAT and VAT rate e.g. 21 or 11, optional IBAN). Company names, addresses, county codes, Bucharest sectors and VAT status come from ANAF; totals and VAT are computed; the XML is validated before it is returned. Paid: $0.05 USDC via x402, charged only when a valid invoice is returned. Other currencies: add 'currency': 'EUR' (BNR rate used unless you pass exchange_rate). Example invoice: {"number": "FCT-0001", "issue_date": "2026-10-24", "due_date": "2026-11-23", "seller": {"cui": "RO12345678"}, "buyer": {"cui": "87654321"}, "payment": {"iban": "RO49AAAA1B31007593840000"}, "lines": [{"name": "Servicii consultanta", "quantity": 10, "unit": "ore", "price": 150, "vat_rate": 21}]} |
lookup_companyread-only | Use when building or checking an invoice for a Romanian company and you only have its CUI, or to check a partner before invoicing: ANAF data already in e-Factura form: legal name, VAT id (RO… only for VAT payers), trade register number, address with county as ISO code (RO-CJ) and Bucharest city as SECTOR1..6, plus flags: inactive, VAT on collection, e-Factura registry. Free, 100 lookups per day per IP. |
ro_business_dayread-only | Use to compute a due date in Romanian working days (e.g. the 5 working days to upload an e-Factura): is a date a working day, which is the next one, and the date N working days later. Free. |
ro_holidaysread-only | Use when planning payment or filing dates in Romania: public (legal) holidays for a year, incl. Orthodox Easter and Rusalii. Free. |
ro_tax_deadlinesread-only | Use to know when Romanian returns are due: monthly filing deadlines (D112, D300, D100, D390, D394, D406) for a reporting month, moved to the next working day when they fall on a weekend or holiday. General rules; confirm special regimes with ANAF. Free. |
validate_ibanread-only | Use before putting an IBAN on an invoice or paying to one: checks length and check digits and names the Romanian bank (or the State Treasury). Free. |
validate_invoiceread-only | Use before uploading an e-Factura to ANAF SPV or sending a Peppol invoice, once the free quota of validate_invoice_free is used up (same report). Every rule violation with a plain-English fix, the UBL path of the field and, for amount errors, the correct value. Paid: $0.01 USDC per call via x402 (network eip155:8453, payment in the request _meta); without a payment it returns the payment requirements. Only real invoices are charged. If the report has 'autofix', fix_invoice can repair those errors. |
validate_invoice_freeread-only | Use before uploading an e-Factura to ANAF SPV, after generating invoice XML, or when ANAF rejected an invoice: validates a UBL 2.1 Invoice/CreditNote (Romanian CIUS-RO 1.0.9, Peppol BIS 3.0, EN 16931) and returns every error with the fix in words, the UBL path of the field and, for amounts, the correct value. Start here: free, no wallet, account or key, 3 calls per day per client IP. Fix the XML from the report and call again. When the quota is used up, switch to validate_invoice. |
validate_saftread-only | Use before filing a Romanian SAF-T (D406) with ANAF, for the full report: runs ANAF's official validator (DUKIntegrator) for the reporting period and the consistency checks it does not do offline (balanced entries, GL totals, opening + movements = closing per account, trial balance, partner balances, invoice totals, VAT = base x rate, VAT codes valid for the period, CUI/IBAN check digits, chart of accounts). Every finding has a fix in Romanian and English and the correct value where computable. Paid: $0.50 USDC via x402 (network eip155:8453), charged only if a D406 was checked; without a payment it returns the payment requirements. |
validate_saft_freeread-only | Use before filing a Romanian SAF-T (D406) with ANAF, or when ANAF's DUKIntegrator reported errors: same check as validate_saft, free: 1 file(s) per day per client IP, report limited to the first 10 findings (the total count is given). |
Schemas: list_tools.
{
"name": "uk.alexhub/einvoice-validator",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"uk.alexhub": {
"rules": [
"CIUS-RO 1.0.9",
"EN 16931",
"Peppol BIS Billing 3.0",
"SAF-T RO schema 2.4.9 (D406)"
],
"tools": [
"generate_invoice (paid, x402 $0.05: complete e-Factura from JSON, parties from ANAF by CUI)",
"validate_invoice (paid, x402 $0.01)",
"fix_invoice (paid, x402 $0.05)",
"lookup_company (free: ANAF company data by CUI)",
"company_financials (free: annual statement from ANAF - turnover, profit, employees, assets, debts)",
"validate_invoice_free (3/day per IP)",
"explain_rule (free)",
"fx_rate (free: official BNR exchange rates)",
"ro_holidays / ro_business_day / ro_tax_deadlines (free: Romanian fiscal calendar)",
"validate_iban (free)",
"validate_saft (paid, x402 $0.50: Romanian SAF-T D406 – official ANAF validator + balances, totals, VAT, IDs)",
"validate_saft_free (1 file/day per IP, first 10 findings)"
],
"payment": "x402, no account or API key"
}
}
},
"icons": [
{
"src": "https://einvoice.alexhub.uk/icon-512.png",
"sizes": [
"512x512"
],
"mimeType": "image/png"
}
],
"title": "e-Factura Validator (Romania)",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://einvoice.alexhub.uk/mcp",
"type": "streamable-http"
}
],
"version": "1.9.0",
"websiteUrl": "https://einvoice.alexhub.uk",
"description": "Validate, fix and generate Romanian e-Factura; check SAF-T D406 (ANAF validator + consistency)"
}