mcp-einvoicing-ae 🇦🇪
Models, validators, and MCP tools implemented; package not yet published. The PINT AE / TDD publication-status gate resolved on 2026-08-26;
AEInvoice,AEParty,AETaxDataDocument, the bundled Schematron/XSD validators, and thegenerate/validate/parseMCP tools all landed 2026-08-27. A tagged release is still pending — see Current status.
Introduction
mcp-einvoicing-ae is an MCP (Model Context Protocol) server
that will expose 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.
Current status
Normative specifications and FTA guidelines were supplied on 2026-08-26, resolving the
publication-status gate and the invoice-tree pathway. The core-gap check (2026-08-27) added
TaxIdentifier.validate_ae_trn() to mcp-einvoicing-core v1.22.0 and confirmed the profile-URN
and TDD-transport questions were not core gaps at all. Model, validator, and MCP tool code all
landed the same day.
| Area | Status |
|---|---|
| Repository, CI, governance docs | Done |
Package skeleton (src/ layout, server entry point) |
Done |
| PINT AE publication status | Confirmed (2026-08-26) |
Normative specifications under specs/ |
Supplied (2026-08-26) |
| Invoice-tree pathway | Confirmed — EN16931Invoice |
| Supported standards and profile URNs | Known — see below |
Core-gap check (mcp-einvoicing-core) |
Done — TaxIdentifier.validate_ae_trn(), core v1.22.0 |
AEInvoice / AEParty (billing + self-billing) |
Implemented (2026-08-27) |
AETaxDataDocument (Peppol AE TDD model) |
Implemented — schema-level (XSD) validation blocked on the missing base OASIS UBL schema; Schematron validation unaffected |
| Bundled Schematron validators (PINT AE + TDD) | Implemented — 4 stylesheets, XSLT 2.0 (saxonche/[xslt2] extra) |
profile_registry registration (PINT AE URNs) |
Done |
| MCP tools (generate / validate / parse) | Implemented (2026-08-27) — see Tools |
First release (v0.1.0) |
Blocked — pending version bump, lockfile regen, and tag/publish (Phase E) |
The publication gate — resolved 2026-08-26
At the prior verification of the OpenPeppol jurisdiction PINT documentation index (2026-06-29), the published jurisdiction profiles were the EU, Singapore, Australia and New Zealand, Japan, and Malaysia; the UAE was absent. Documents supplied on 2026-08-26 resolve this: the UAE Peppol Authority's own release notes record PINT AE (billing) at "Status: Final", version 1.0.4, released 2026-06-02, and the Peppol AE Tax Data Document (TDD — the 5th-corner reporting document) at "Status: Final", version 1.0.3, released 2026-05-25. The FTA's own June 2026 guideline states directly that the PINT-AE billing specifications "are published on its website."
One caveat remains open: this is the specialization publisher's own release-status label, not an
independently observed OpenPeppol governance-registry page — strong evidence, not full
certainty. Full detail and citations: specs/README.md and the monorepo's
context-library/countries/ae.md.
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 reuses mcp_einvoicing_core.wire_formats.EN16931UBLSerializer/EN16931UBLParser
directly rather than a bespoke serializer, since profile/business_process 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. MCP tools reuse this stack directly — 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.
Installation
Requirements
- Python ≥ 3.11
mcp-einvoicing-core(installed automatically as a dependency)
Using uvx (recommended, once published)
uvx mcp-einvoicing-ae
Using uv
uv add mcp-einvoicing-ae
From source
git clone https://github.com/cmendezs/mcp-einvoicing-ae.git
cd mcp-einvoicing-ae
uv sync --all-extras
Configuration
Add the server to your MCP client configuration:
{
"mcpServers": {
"einvoicing-ae": {
"command": "uvx",
"args": ["mcp-einvoicing-ae"]
}
}
}
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
LOG_LEVEL |
No | INFO |
Logging level: DEBUG, INFO, WARNING, or ERROR |
Country-specific variables (transport endpoints, credentials, environment switches) are added
once the specification documents them. See .env.example.
Tools
| Tool | Description |
|---|---|
generate_invoice_ae |
Generate a PINT AE UBL 2.1 invoice XML (billing or self-billing) from structured data. Only the EN 16931 core field set is emitted — AEParty.trade_license_number has no mapping in core's generic UBL serializer yet and is dropped from the output. |
validate_invoice_ae |
Validate a PINT AE UBL 2.1 invoice against the bundled Schematron rules (UBL structural rules + ibr-*-ae jurisdiction rules). Requires the xslt2 extra. |
validate_tdd_ae |
Validate a Peppol AE Tax Data Document (TDD) against its bundled Schematron rules. Schematron-level only — schema (XSD) validation is unavailable pending the base OASIS UBL schema; every result flags this explicitly. Requires the xslt2 extra. |
parse_invoice_ae |
Parse a PINT AE UBL 2.1 invoice XML into a structured dict (EN 16931 core field set only — AE-specific extensions such as trade_license_number are not extracted). |
All four tools require mcp-einvoicing-ae[xslt2] (bundles saxonche) for the Schematron
validators to load; without it, validate_invoice_ae/validate_tdd_ae return 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.py
Contributing
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 | mcp-einvoicing-core |
| 🇧🇪 Belgium | mcp-einvoicing-be |
| 🇧🇷 Brazil | mcp-nfe-br |
| 🇫🇷 France | mcp-facture-electronique-fr |
| 🇩🇪 Germany | mcp-einvoicing-de |
| 🇮🇹 Italy | mcp-fattura-elettronica-it |
| 🇵🇱 Poland | mcp-ksef-pl |
| 🇸🇬 Singapore | mcp-invoicenow-sg |
| 🇪🇸 Spain | mcp-facturacion-electronica-es |
| 🇦🇪 United Arab Emirates | mcp-einvoicing-ae |
License
This project is licensed under the Apache 2.0 license — see LICENSE for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_einvoicing_ae-0.1.0.tar.gz.
File metadata
- Download URL: mcp_einvoicing_ae-0.1.0.tar.gz
- Upload date:
- Size: 6.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2e82d9ddd1f7e5fa14aa74bbca69a4a8b63d2ee4cba57db50aa1a9cb4f441c6
|
|
| MD5 |
ef74ed0ed90b3b5f9b73fbce79f8ab45
|
|
| BLAKE2b-256 |
e0e81988dc6475493e8ea54b013890c0a469b8f3d2f05c59fa7760dbc2c5bd71
|
Provenance
The following attestation bundles were made for mcp_einvoicing_ae-0.1.0.tar.gz:
Publisher:
publish.yml on cmendezs/mcp-einvoicing-ae
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_einvoicing_ae-0.1.0.tar.gz -
Subject digest:
b2e82d9ddd1f7e5fa14aa74bbca69a4a8b63d2ee4cba57db50aa1a9cb4f441c6 - Sigstore transparency entry: 2617764011
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-einvoicing-ae@f418f25a6c3eeee289dc86598369109bdd54687f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cmendezs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f418f25a6c3eeee289dc86598369109bdd54687f -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_einvoicing_ae-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mcp_einvoicing_ae-0.1.0-py3-none-any.whl
- Upload date:
- Size: 103.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
362eb2af611c9f27a124b382cdc80c08e3b687d3f40ed22d72b99aba26f14d49
|
|
| MD5 |
a9c8d0e071196d0c70ba72bcc6674da5
|
|
| BLAKE2b-256 |
398e0f92347fb38938a12d244382385e4c9d7824ab2e4aed5f68d94e9a4d2627
|
Provenance
The following attestation bundles were made for mcp_einvoicing_ae-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on cmendezs/mcp-einvoicing-ae
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_einvoicing_ae-0.1.0-py3-none-any.whl -
Subject digest:
362eb2af611c9f27a124b382cdc80c08e3b687d3f40ed22d72b99aba26f14d49 - Sigstore transparency entry: 2617764024
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-einvoicing-ae@f418f25a6c3eeee289dc86598369109bdd54687f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cmendezs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f418f25a6c3eeee289dc86598369109bdd54687f -
Trigger Event:
push
-
Statement type: