Skip to main content
Glama

Server Quality Checklist

75%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool has a clearly distinct purpose covering different stages of ZATCA e-invoicing: QR generation, invoice creation, validation, CSR generation, signing, submission, compliance checking, and HTML rendering. No overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., generate_invoice, validate_invoice, decode_qr). No mixing of conventions.

    Tool Count5/5

    9 tools is well-scoped for the domain of ZATCA e-invoicing, covering all necessary operations without being excessive or insufficient.

    Completeness5/5

    The tool set covers the full lifecycle: CSR generation, invoice creation, validation, signing, submission, compliance checking, and rendering. Missing features like invoice retrieval are not critical for this purpose.

  • Average 4.3/5 across 9 of 9 tools scored. Lowest: 3.7/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 0 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under Apache 2.0.

  • 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.

  • This repository includes a glama.json configuration file.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to 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

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    No annotations are provided, so the description must carry the full behavioral burden. It discloses that an ECDSA key pair and CSR are created and returns JSON, but fails to mention important aspects like side effects (e.g., private key handling, storage, security implications), whether the operation is safe or destructive, or any required permissions. This lack of context leaves the agent uncertain about potential impacts.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is reasonably concise with a clear 'Args' section and a 'Returns' line. It front-loads the main purpose. However, the argument list is a bit lengthy and could be formatted as bullet points for better readability. Still, every sentence adds value.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity (8 parameters, output schema exists), the description covers the tool's purpose and return format adequately. It mentions 'next steps' which is helpful. However, it lacks behavioral context (security, side effects) and does not explain the relationship to other tools in the ZATCA workflow. The output schema exists, so return values are partially covered.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0%, so the description must explain each parameter. It provides a one-line purpose for each of the 8 parameters (e.g., 'common_name: Common name for the certificate'), adding meaning beyond the schema's type/default. However, it could be more precise (e.g., expected formats for serial_number or invoice_type). Overall, it compensates well for the missing schema descriptions.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool generates a ZATCA-compliant Certificate Signing Request, specifying the verb 'generate' and the resource 'CSR'. It is well-distinguished from sibling tools like generate_qr_code or generate_invoice, which handle different functions.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage in obtaining a compliance certificate from ZATCA, but does not explicitly state when to use this tool versus alternatives. No alternative tools are mentioned for CSR generation, and there is no guidance on prerequisites or 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?

    No annotations are provided, so the description carries full burden. It discloses the output structure (JSON with qr_base64 and decoded data) but omits details on error handling, validation failures, or performance characteristics.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise, with a clear introductory sentence, a structured parameter list, and a summary of the return value. Every sentence adds value, with no redundancy.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the presence of an output schema (confirmed by context signals), the description adequately covers purpose, parameters, and output. It is complete for a simple generation tool, though it could mention error scenarios or assumptions.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema description coverage is 0%, but the description provides detailed explanations for all 5 required parameters, including format hints (e.g., 15-digit vat_number, ISO 8601 timestamp) and examples, adding significant meaning beyond the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool generates a ZATCA-compliant TLV-encoded QR code. It specifies the output format (Base64), the standard (ZATCA TLV), and the use case (printed invoices), distinguishing it from siblings like decode_qr or generate_invoice.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage for generating QR codes on invoices but does not explicitly state when to use this tool versus alternatives like decode_qr or validate_invoice. No when-not-to-use guidance is provided.

    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 provided, so the description carries full burden. It says the tool performs a server-side validation and returns JSON results, but does not disclose rate limits, failure behavior, or authentication specifics beyond parameters.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is efficiently structured with a one-line summary, a usage sentence, and a clear Args/Returns list. Every sentence adds value without redundancy.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given 6 parameters, no annotations, and an output schema, the description provides parameter meanings, return type, and use case. It lacks error handling details but is sufficient for a check tool.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 0%, but the description's Args section explains all 6 parameters with brief descriptions, including the 'environment' parameter enumerating 'sandbox' or 'production', adding meaning beyond the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb 'check' and resource 'signed invoice against ZATCA compliance rules', and distinguishes from siblings like 'submit_invoice' and 'validate_invoice' by specifying it's a pre-submission compliance check.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description says 'useful for testing compliance without affecting production records', implying use before submission. It does not explicitly state when not to use or alternatives, but the context is clear.

    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, the description carries full burden. It discloses that the tool automatically calculates VAT, embeds QR code data, and returns an XML string. This provides good insight into behavior, though it omits details like error handling or performance characteristics.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is well-structured with a summary paragraph followed by an argument list. While lengthy, it is justified by the tool's complexity (17 parameters). The main purpose is front-loaded, but some redundant phrasing ('Creates a complete XML invoice') could be trimmed.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity, schema, and output schema, the description covers all parameters and the return type. It does not explain potential errors or edge cases, but for an AI agent generating invoices, the instructions are sufficient. The existence of an output schema mitigates the need for detailed output description.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 0%, so the description must compensate. It does so excellently by providing detailed explanations of all 17 parameters, including examples, types, and required conditions (e.g., 'buyer_vat' required for standard invoices). This adds significant meaning beyond the bare schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states it 'Generate a ZATCA-compliant UBL 2.1 XML e-invoice' and lists supported invoice types (Standard, Simplified, Credit Note, Debit Note). This specific verb+resource combination distinguishes it from sibling tools like generate_qr_code, validate_invoice, etc.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies it's for creating invoices but does not explicitly state when to use it versus alternatives (e.g., for signing or submitting, use other tools). No when-not or exclusion criteria are provided, leaving the agent to infer usage from context.

    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 fully explains the action (sending to ZATCA's Fatoora API) and key behaviors like mode selection and environment. It lacks details on side effects, authentication beyond parameters, or failure handling, but for a submission tool it is sufficiently transparent.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is well-structured with a clear purpose sentence followed by a bulleted Args list and Return statement. It is slightly verbose but every sentence adds value; could be a bit more concise without losing clarity.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the complexity (7 params, 5 required) and absence of structured output schema, the description covers all parameters, mode distinctions, environment, and return format. It provides sufficient context for an agent to invoke the tool correctly, though sibling relationships are not elaborated.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The description provides detailed explanations for all 7 parameters (e.g., signed_invoice_xml as 'Signed UBL 2.1 XML invoice string', invoice_hash as 'Base64-encoded SHA-256 hash'), compensating fully for the 0% schema coverage. Each parameter's purpose and format are clearly defined.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the verb 'Submit' and the resource 'signed invoice to ZATCA for reporting or clearance'. It distinguishes the tool from siblings like generate_invoice, validate_invoice, and sign_invoice by focusing on submission to ZATCA.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description explicitly specifies when to use 'reporting' mode for B2C and 'clearance' mode for B2B, providing clear context. However, it does not directly state when not to use this tool or offer alternatives among siblings, though the implied usage is clear.

    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 full behavioral disclosure. It accurately describes the read-only nature of validation and details the return structure (is_valid, errors, warnings, checks_run). However, it does not mention synchronous/asynchronous execution or potential timeouts for large payloads, which are minor omissions.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise and well-structured: a one-sentence summary followed by bullet points and fully documented arguments/returns. Every sentence adds value without redundancy.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the simple one-parameter input and the presence of an output schema (providing full return structure), the description covers all necessary aspects: what the tool does, what it validates, and exactly what it returns. No gaps are evident.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The description compensates for 0% schema coverage by fully describing the single parameter 'invoice_xml' with format (UBL 2.1 XML) and completeness expectation. This adds significant meaning beyond the schema's type-only definition.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool validates an invoice XML against ZATCA business rules, specifying the exact scope (comprehensive checks including required fields, VAT format, math accuracy, and UBL 2.1 structure). It uniquely identifies this tool among siblings, as no other sibling is dedicated to validation.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies usage for post-generation/signing validation but lacks explicit guidance on when to use this tool versus alternatives (e.g., 'check_compliance') or when not to use it. No context on prerequisites or exclusions is provided.

    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 provided, but description fully discloses behavior: extracts all encoded tag values and returns JSON. No side effects implied; adequate for a read-only decode operation.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Concise, front-loaded with purpose, uses clear labeled sections for args and returns. No unnecessary words.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Complete for a single-parameter decode tool with output schema; covers input format, output format, and usage context. No missing information.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters4/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Schema coverage is 0%, but description fully explains the parameter: 'Base64-encoded TLV string from a ZATCA QR code', adding meaning beyond the schema's type.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    Description clearly states 'Decode a ZATCA TLV-encoded QR code string' with verb and resource; distinguishes from sibling generate_qr_code by specifying decoding vs generating.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly says 'useful for verifying or inspecting existing QR codes from ZATCA-compliant invoices' providing context; could be improved by explicitly contrasting with validate_invoice but overall clear.

    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 explains the output is a styled HTML document with embedded QR code, but does not explicitly confirm no side effects or state changes. For a rendering tool, this is acceptable.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is concise (two sentences plus args/returns section), front-loaded with the main purpose, and well-structured with clear separation of input and output.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given a single parameter and the presence of an output schema, the description covers input, output, and usage context. It does not discuss error handling or limitations, but these are not critical for a simple render tool.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    With 0% schema description coverage, the description fully compensates by defining invoice_xml as 'Complete UBL 2.1 XML invoice string', adding meaning beyond the type alone.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description specifies the verb 'render' and resources 'ZATCA invoice XML' and 'professional HTML document', clearly distinguishing it from siblings like generate_invoice (which produces XML) and check_compliance (compliance check).

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description mentions input context: 'as generated by generate_invoice', implying a usage workflow. However, it does not explicitly state when not to use or list alternatives for similar tasks.

    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, the description fully describes the signing process, input/output, and QR code rebuilding; lacks details on error states or prerequisites.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    Concise headline, clear description, and structured argument/return sections; no wasted words.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Complex tool with output schema; description covers input, process, and output fields (signed_xml, invoice_hash, qr_base64, compliance status) adequately.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Despite 0% schema description coverage, the description adds detailed explanations for all three parameters (invoice XML, certificate, private key) beyond their names.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool signs a ZATCA invoice with XAdES-BES and explains the process, distinguishing it from siblings like generate_invoice and validate_invoice.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly states when to use (to sign an invoice) and the context of ZATCA invoices; while it doesn't specify when not to use, the sibling tool list provides implicit differentiation.

    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

zatca-mcp MCP server

Copy to your README.md:

Score Badge

zatca-mcp MCP server

Copy to your README.md:

Latest Blog Posts

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/DoubleH10/zatca-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server