mcp-einvoicing-ae 🇦🇪
v0.2.0 published 2026-08-28.
AEInvoice,AEParty,AETaxDataDocument, and thegenerate/validate/parseMCP tools are live on PyPI and the MCP registry.validate_invoice_aenow checks core's shared CEN EN16931 base Schematron rather than the self-compiled OpenPeppol-derived stylesheets v0.1.0 bundled without confirmed redistribution rights;validate_tdd_aecurrently reports "unavailable" — see Supported standards and Tools below.
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.
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, and v0.1.0 published the same week.
| 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 — no validation available (see below) |
Invoice validation (validate_invoice_ae) |
CEN EN16931 base only (v0.2.0, 2026-08-28) — the PINT AE jurisdiction overlay and TDD Schematron/XSD v0.1.0 bundled had no confirmed redistribution rights and were removed; see Supported standards |
profile_registry registration (PINT AE URNs) |
Done |
| MCP tools (generate / validate / parse) | Implemented (2026-08-27) — see Tools |
First release (v0.1.0) |
Published (2026-08-27) — PyPI and MCP registry |
Licensing fix release (v0.2.0) |
Published (2026-08-28) — see CHANGELOG.md |
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.
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-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 core's shared CEN EN16931 base Schematron (structural + arithmetic/totals rules only — not the PINT AE jurisdiction overlay). Requires the xslt2 extra. |
validate_tdd_ae |
Always returns an explicit "unavailable" result — no licensed validation artifact is currently available for the Peppol AE Tax Data Document (TDD). |
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). |
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.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.3.0.tar.gz.
File metadata
- Download URL: mcp_einvoicing_ae-0.3.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 |
70bb4e5d51a092fb38d5c592e0f20c50cba927f7d37d10280a501003ead3a8ef
|
|
| MD5 |
069b34987b907ccf77ee26429e34c8bb
|
|
| BLAKE2b-256 |
85072a80b05a4140c27b9071865fcd74134463495c99763575cb4ddb5200b6ea
|
Provenance
The following attestation bundles were made for mcp_einvoicing_ae-0.3.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.3.0.tar.gz -
Subject digest:
70bb4e5d51a092fb38d5c592e0f20c50cba927f7d37d10280a501003ead3a8ef - Sigstore transparency entry: 2643070362
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-einvoicing-ae@f0e44f5408d1bd7ae9da3267cf8798d84e4a878e -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/cmendezs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f0e44f5408d1bd7ae9da3267cf8798d84e4a878e -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_einvoicing_ae-0.3.0-py3-none-any.whl.
File metadata
- Download URL: mcp_einvoicing_ae-0.3.0-py3-none-any.whl
- Upload date:
- Size: 31.1 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 |
58bc477158c1d4d483231290cb286400ffef5955ac0b99a3a1a32ab20a5a1fd3
|
|
| MD5 |
1c234ec240ba8a933b04eb51e74d21c7
|
|
| BLAKE2b-256 |
9df528d8358c6e5befc15b412a017aad58a89dde8eaa3c011a4936e64e43fd47
|
Provenance
The following attestation bundles were made for mcp_einvoicing_ae-0.3.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.3.0-py3-none-any.whl -
Subject digest:
58bc477158c1d4d483231290cb286400ffef5955ac0b99a3a1a32ab20a5a1fd3 - Sigstore transparency entry: 2643070536
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-einvoicing-ae@f0e44f5408d1bd7ae9da3267cf8798d84e4a878e -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/cmendezs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f0e44f5408d1bd7ae9da3267cf8798d84e4a878e -
Trigger Event:
push
-
Statement type: