uae-einvoice-mcp
Server Quality Checklist
Latest release: v0.2.0
- Disambiguation4/5
Most tools target clearly distinct actions: TRN lookup, invoice validation, field-matrix checking, XML generation, and requirements lookup. The only potential confusion is between check_invoice_compliance and check_pint_ae_fields, but the descriptions explicitly differentiate structural checks from the full 51-field matrix.
Naming Consistency4/5Tool names follow a consistent lowercase snake_case verb_noun pattern: lookup_, check_, check_, generate_, get_. The only minor inconsistency is using both 'lookup' and 'get' for retrieval actions, but the overall pattern is predictable and readable.
Tool Count5/5Five tools is well-scoped for a UAE e-invoicing helper server. Each tool covers a distinct need without redundancy, and the count feels appropriate for the domain.
Completeness4/5The server covers TRN validation, compliance checking, field-matrix evaluation, XML generation, and regulatory requirements lookup, which forms a coherent workflow. Minor gaps exist, such as no live FTA register lookup or explicit support for more advanced invoice operations, but the core e-invoicing lifecycle is reasonably complete.
Average 4.2/5 across 5 of 5 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.
If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.
MCP servers without a LICENSE cannot be installed.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It communicates that this is a validation/check operation (non-mutating by implication) and discloses what it returns: errors, warnings, a score, and derived Peppol IDs. It does not detail error format or any operational constraints, but the core behavior is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences, with the primary purpose and output front-loaded, followed by a single routing hint toward check_pint_ae_fields. No filler or repetition; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, the description does not need to list fields, and it does not. It covers what the tool checks, what it returns, and how it relates to a sibling. Without an output schema it could have described the shape of errors/warnings in more detail, but the core information an agent needs to select and call it is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The top-level invoiceData parameter has no schema description, and the tool description does not explain how to structure or provide that object. However, the schema itself defines the nested fields thoroughly, and the description does add meaning by naming the relevant aspects (parties, tax IDs, totals, breakdown, lines). This is adequate but not strongly compensatory given the low schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it performs structural PINT AE/UAE e-invoicing checks and enumerates the checked areas (parties, tax IDs, totals arithmetic, tax breakdown, lines). It distinguishes itself from the sibling tool check_pint_ae_fields by noting that the sibling covers the full 51-field matrix, so the agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this tool is appropriate: structural e-invoicing checks with errors/warnings/score. It explicitly points to check_pint_ae_fields for the full 51-field matrix, which implies this tool is for a narrower structural check. It does not state explicit when-not conditions beyond that single alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It does reveal the non-destructive evaluation nature (returns statuses, completion %, gaps), which implies it does not modify the invoice. However, it does not state whether validation requires network access, whether it follows the full PINT AE business rules or only the field presence matrix, or what happens on invalid input beyond the statuses. Average transparency for an evaluator tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence front-loads the action, the target, and the output format. Every clause adds value: 'Evaluate invoice JSON', '51-field UAE e-invoice / PINT AE mandatory field matrix', and the return values. Nothing is wasted and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter with a nested schema and a clear output description, the tool definition gives enough for an agent to understand the input and the returned statuses. There is no output schema, so the description's mention of present/missing/invalid/not_applicable and completion % covers the return contract well. Missing details are the exact 51 fields and how to interpret 'not_applicable' (e.g., credit notes vs invoices), but these are not necessary for a basic call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The sole parameter invoiceData is clearly described as 'invoice JSON' and the description's mention of the 51-field matrix and per-field statuses implies the nested structure. The schema itself already provides the nested fields, so the description adds the meaning of the parameter as the input subject of evaluation. Some deeper semantics—such as whether the tool accepts partial invoices or expects the full invoice object—are not spelled out, so slightly below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb ('Evaluate'), a specific resource ('invoice JSON'), and a precise scope ('51-field UAE e-invoice / PINT AE mandatory field matrix'). It also distinguishes the output (per-field status, completion %, gaps), so an agent can understand exactly what this validation tool does and how it differs from generic compliance checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool evaluates but does not explicitly say when to use it versus sibling tools such as check_invoice_compliance or generate_pint_ae_xml. However, the phrase 'mandatory field matrix' plus the explicit output of missing/invalid/not_applicable status makes it clear this is a field-level pre-validation step before XML generation. It lacks explicit exclusions but provides enough context for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by disclosing that it runs the 51-field checklist first and that strict=true refuses to emit XML when mandatory fields are incomplete. A small gap is that it does not mention what the output format or return value looks like, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence names the tool's purpose, format, and input; the second surfaces the critical checklist and strict behavior. Every word earns its place and the most important behavioral information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a large nested schema, no output schema, and no annotations, the description provides essential context about the generation gate and strict option. Minor gaps: it doesn't clarify what 'stub' means regarding output completeness, nor describe the return shape on success or failure. However, for a generation tool, the essential call-time context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents most parameters, including descriptions for typeCode, issueDate, currencyCode, documentType, customizationId, and billingReference. The description adds meaning for the strict parameter, tying it to the checklist behavior. With schema description coverage at 50%, the description partially compensates but does not elaborate on the large invoiceData object beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generate'), a precise resource ('UBL 2.1 PINT AE-shaped Invoice/CreditNote XML stub'), and the input ('invoice JSON'). It also clearly differentiates the tool from siblings by mentioning the 51-field checklist and strict mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when the agent has invoice JSON and needs a PINT AE XML stub. It clearly conveys the strict-mode behavior, but it does not explicitly name sibling alternatives like check_pint_ae_fields or check_invoice_compliance as pre-flight or alternative steps, nor does it say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the key conditional behavior ('Optional annual revenue (AED) auto-selects large vs SME') and previews output content, but does not mention data sources, recency, error conditions, or that the operation is read-only. It is adequate but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core purpose, the segment options, the technical baseline, and the conditional parameter behavior with no fluff. The main action and resource are front-loaded, making the tool easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional parameters and no output schema, the description covers purpose, parameters, and output categories adequately. It does not detail the exact shape of 'timeline' or 'next actions', but the absence of an output schema is partially compensated by the explicit enumeration of return content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful cross-parameter semantics by explaining how annualRevenueAed influences segment selection when businessType is all or omitted, which the schema alone does not fully convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and identifies a precise resource: the UAE e-invoicing mandate timeline, technical baseline, and next actions. It clearly distinguishes from sibling tools like check_invoice_compliance or generate_pint_ae_xml, which focus on compliance checking and XML generation rather than mandate requirements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use case clear by stating exactly what information is returned and for which business segments. While it does not explicitly name alternatives or exclusions, the distinct purpose is enough for an agent to select it over the sibling tools in most contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral trait by explicitly stating the tool does not call the live FTA register, and it enumerates exactly what validation is performed. It does not mention return value or error behavior, but this is a read-only validation tool with no apparent side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The key validation scope is front-loaded, and the important limitation about not calling the live FTA register is placed second. Every sentence adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter validation tool withe no output schema and no annotations, the description provides enough to select and invoke it correctly: input type, validation checks, and the offline limitation. A brief note on return shape would be nice, but the absence is minor given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the parameter at 100% and documents that spaces/dashes are allowed. The description adds further meaning by clarifying accepted ID types (15-digit TRN or 10-digit TIN) and the validation logic applied to the value, including the derived Peppol participant ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Validate'), a precise resource ('UAE Tax Registration Number (15-digit TRN) or Tax Identification Number (10-digit TIN)'), and enumerates the checks performed: format, UAE prefix, Peppol AE:TIN check digit, and derived participant ID. It also clearly distinguishes itself from live FTA lookups and from the invoice/XML-focused sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this to validate TRN/TIN format and derived identifiers offline. It includes an explicit when-not signal ('Does not call the live FTA register'), though it does not name an alternative tool for live verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/mirzaabubakr/uae-einvoice-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server