Skip to main content
Glama

Ekwo OS — open source accounting: ledger, invoices and VAT on your own Supabase or Postgres

Check an electronic invoice

einvoicing_validate
Read-only

Writes the electronic invoice of a posted sale invoice or credit note, in the profile its company's country pack declares, and lists every rule of the format it breaks — as the format names them, word for word. Records nothing and sends nothing. A broken rule is fixed in the books (the customer's electronic address, a due date, a reference), never in the file. A profile no brick writes is refused as format_without_brick.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "document_id": "<document_id>"
    },
    "name": "einvoicing_validate"
  }
}

Input Schema

NameRequiredDescriptionDefault
document_idYesThe posted sale invoice or credit note. list_documents finds it.
include_fileNoHand the file back too. Left out, the answer is what is wrong with it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / document_id / description
      Added value: +"The posted sale invoice or credit note. list_documents finds it."
    • addedInput schema / properties / document_id / format
      Added value: +"uuid"
    • addedInput schema / properties / document_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • addedInput schema / properties / include_file / description
      Added value: +"Hand the file back too. Left out, the answer is what is wrong with it."
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=false; the description reinforces this with 'Records nothing and sends nothing' and adds the failure mode 'format_without_brick' for profiles no brick writes. It also explains that the fix belongs in the books (electronic address, due date, reference), which is behavioral context not present in the annotations. Minor tension from the verb 'Writes', but it is immediately clarified rather than contradicted.

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?

Four tight sentences, with the core behavior front-loaded and the non-mutating guarantee right after it. Some phrasing is ornate ('as the format names them, word for word'), but each sentence contributes distinct information.

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?

With no output schema, the description still conveys the return shape (the list of violated rules, named verbatim by the format, or the file itself when include_file is set) plus the error case. Combined with readOnlyHint annotations and full schema coverage, an agent has what it needs to call this correctly; only the when-vs-issue routing is left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so both document_id and include_file are already documented, including the pointer to list_documents and the 'hand the file back too' behavior. The description adds profile/country-pack context but nothing about parameter syntax or the include_file toggle. Baseline 3 applies when the schema carries parameter meaning.

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

Purpose4/5

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

States a concrete verb pair and resource: it renders the electronic invoice for a posted sale invoice or credit note and lists broken format rules. The opening verb 'Writes' initially reads like a mutation and only the later 'Records nothing and sends nothing' disambiguates it, so the purpose is clear but not immediately. Sibling differentiation from einvoicing_issue/clearance/fiscalise is implied rather than named.

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?

Usage is implied ('posted sale invoice or credit note', nothing recorded or sent) rather than stated as a when-to-use rule against einvoicing_issue or einvoicing_clearance. The remediation guidance ('A broken rule is fixed in the books ... never in the file') is genuinely useful direction on what to do after a failure. No explicit preconditions or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.