mcp-einvoicing-ae
mcp-einvoicing-ae ๐ฆ๐ช
Introduction
mcp-einvoicing-ae is an MCP (Model Context Protocol) server
that exposes tools for United Arab Emirates electronic invoicing. It is part of the
mcp-einvoicing-* family of country-specific servers, all built on
mcp-einvoicing-core, which provides the
shared validation engine, EN 16931 abstractions, and Peppol network utilities.
Generated PINT AE invoices are structurally conformant: cbc:UUID, cbc:ProfileExecutionID,
per-line cac:ItemPriceExtension, and trade_license_number are all emitted, and round-trip
back through parse_invoice_ae. The 5.00% standard VAT rate is enforced by a model validator,
and a Peppol participant-lookup tool is exposed. validate_invoice_ae checks core's shared CEN
EN16931 base Schematron only, not the PINT AE jurisdiction overlay; validate_tdd_ae currently
reports "unavailable" โ see Supported standards and
Tools below.
The UAE Peppol Authority's PINT AE (billing) specialization is at Status: Final, version
1.0.4 (2026-06-02); the Peppol AE Tax Data Document (TDD) is at Status: Final, version 1.0.3
(2026-05-25). Full citations: specs/README.md and the monorepo's
context-library/countries/ae.md.
Related MCP server: mcp-fattura-elettronica-it
Supported standards
PINT AE (billing) โ UBL 2.1,
CustomizationID: urn:peppol:pint:billing-1@ae-1,ProfileID: urn:peppol:bis:billing. Version 1.0.4 (2026-06-02).PINT AE (self-billing) โ
CustomizationID: urn:peppol:pint:selfbilling-1@ae-1,ProfileID: urn:peppol:bis:selfbilling.Peppol AE TDD (Tax Data Document) โ the 5th-corner reporting document sent to the FTA; its own XML namespace (
urn:peppol:schema:taxdata:1.0), not a UBL invoice. Version 1.0.3 (2026-05-25).
The UAE programme is a decentralized Peppol 5-corner model routed through Accredited Service
Providers, adding a tax-authority reporting leg (the TDD above) beyond the 4-corner exchange used
elsewhere in this family. The invoice-tree pathway is confirmed EN16931Invoice (PINT AE is a
UBL 2.1 CIUS of EN 16931-1:2017) โ no JSON binding was found in the supplied specifications.
AEInvoice serializes via mcp_einvoicing_ae.wire_formats.AEUBLSerializer, which layers the
AE-specific elements (cbc:ProfileExecutionID, PartyLegalEntity/CompanyID with
schemeAgencyID="TL" for trade_license_number) on top of core's EN16931UBLSerializer โ the
latter now emits cbc:UUID (from document_uuid) and per-line cac:ItemPriceExtension natively
(mcp-einvoicing-core v1.25.0), since profile/business_process already hold the real Peppol
URNs. AEParty.vat_id carries the 15-digit TRN, format-validated via
TaxIdentifier.validate_ae_trn() (core v1.22.0); the Peppol participant ID (TIN) is auto-derived
as its first 10 digits. AETaxDataDocument models the TDD's mandatory fields but is not a UBL
invoice and is not built on AEInvoice. parse_invoice_ae re-extracts the AE-specific elements
from the raw XML and re-validates the result as AEInvoice, so parsing re-applies the same TRN
and tax-rate checks a fresh construction gets โ see Tools for what's covered and what
isn't. The TDD transport channel (same AS4 channel as the invoice, or a separate one) remains an
open documentation question, not a code gap. Full detail: specs/README.md.
Validation scope, as of v0.2.0: validate_invoice_ae checks the CEN EN16931 base Schematron
only (structural + arithmetic/totals rules, shared with mcp-einvoicing-be/mcp-ksef-pl) โ not
the PINT AE jurisdiction overlay (ibr-*-ae rules). BR-CO-09 (VAT identifier must carry an ISO
3166-1 alpha-2 prefix) is expected to fire on every genuine AE invoice, since UAE TRNs carry no
country prefix; this is disclosed in every result, not a defect in your data. validate_tdd_ae
currently has no validation available at all. v0.1.0 bundled five self-compiled files derived
from OpenPeppol's PINT AE and TDD Schematron/XSD sources with no confirmed redistribution
rights โ removed in v0.2.0. See CHANGELOG.md and this monorepo's
context-library/decisions/peppol-schematron-artifact.md.
Installation
Requirements
Python โฅ 3.11
mcp-einvoicing-core(installed automatically as a dependency)
Using uvx (recommended)
uvx mcp-einvoicing-aeUsing uv
uv add mcp-einvoicing-aeFrom source
git clone https://github.com/cmendezs/mcp-einvoicing-ae.git
cd mcp-einvoicing-ae
uv sync --all-extrasConfiguration
Add the server to your MCP client configuration:
{
"mcpServers": {
"einvoicing-ae": {
"command": "uvx",
"args": ["mcp-einvoicing-ae"]
}
}
}Environment variables
Variable | Required | Default | Description |
| No |
| Logging level: |
Country-specific variables (transport endpoints, credentials, environment switches) are added
once the specification documents them. See .env.example.
Tools
Tool | Description |
| Generate a PINT AE UBL 2.1 invoice XML (billing or self-billing) from structured data via |
| Validate a PINT AE UBL 2.1 invoice against core's shared CEN EN16931 base Schematron (structural + arithmetic/totals rules only โ not the PINT AE jurisdiction overlay). Requires the |
| Always returns an explicit "unavailable" result โ no licensed validation artifact is currently available for the Peppol AE Tax Data Document (TDD). |
| Parse a PINT AE UBL 2.1 invoice XML into a structured dict. Re-extracts |
Peppol participant lookup (core's register_peppol_tools plugin, TIN-based id adapter โ scheme
0235, first 10 digits of the TRN):
Tool | Description |
| Check whether a business is registered on the Peppol network; returns registration status and supported document types |
| Fetch the AS4 endpoint for a participant's document type |
| DNS-only (SML) diagnostic, independent of SMP reachability |
| Transmit a UBL/CII invoice via AS4 |
generate_invoice_ae/validate_invoice_ae/parse_invoice_ae require mcp-einvoicing-ae[xslt2]
(bundles saxonche) for the base Schematron validator to load; without it, validate_invoice_ae
returns an explicit "unavailable" result rather than a silent pass.
The tool reference in docs/TOOLS.md is generated from the running server:
uv run python scripts/gen_tool_reference.pyContributing
See CONTRIBUTING.md for development setup, the test and lint commands, and the pull request checklist. Security issues follow the private disclosure process in SECURITY.md.
Other e-invoicing MCP servers
Country | Server |
๐ Global | |
๐ง๐ช Belgium | |
๐ง๐ท Brazil | |
๐ซ๐ท France | |
๐ฉ๐ช Germany | |
๐ฎ๐น Italy | |
๐ต๐ฑ Poland | |
๐ธ๐ฌ Singapore | |
๐ช๐ธ Spain | |
๐ฆ๐ช United Arab Emirates |
License
This project is licensed under the Apache 2.0 license โ see LICENSE for details.
Maintenance
Related MCP Servers
- AlicenseAqualityAmaintenanceModel Context Protocol (MCP) server for French Electronic Invoicing (NF XP Z12-013). Provide tools to validate, generate, and explore API specifications for PDP/OD interoperability.34Apache 2.0
- AlicenseAqualityAmaintenanceModel Context Protocol (MCP) server for Italian Electronic Invoicing (FatturaPA / SDI). Provide tools to validate, generate, and explore API specifications for Sistema di Interscambio (SDI) interoperability.431Apache 2.0
- AlicenseAqualityAmaintenanceModel Context Protocol (MCP) server for Belgian Electronic Invoicing (Peppol BIS 3.0 / PINT-BE / Mercurius). Provides tools to validate, generate, and transform UBL 2.1 e-invoices, and look up BCE/KBO enterprise data and Peppol participants.50Apache 2.0
- AlicenseAqualityBmaintenanceModel Context Protocol (MCP) server for Polish Electronic Invoicing (KSeF / FA(2)). Provides tools to validate, generate, and explore API specifications for KSeF interoperability.102Apache 2.0
Related MCP Connectors
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
MCP Spec Compliance MCP โ audits any MCP server.json against the official Model Context Protocol
MCP server for verifying EUDI/Talao wallet data via OIDC4VP (pull) for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cmendezs/mcp-einvoicing-ae'
If you have feedback or need assistance with the MCP directory API, please join our Discord server