Skip to main content
Glama
Storno CLI

Storno CLI

Official
by stornoro

invoices_issue

Idempotent

Issues a draft invoice by validating data, assigning a series number, generating UBL 2.1 XML/PDF, and changing status to issued so it can be submitted to ANAF e-Factura.

Instructions

Issue a draft invoice. Validates the data, assigns a series number, generates UBL 2.1 XML, generates PDF (Pro plan), and changes status from "draft" to "issued". Once issued, the invoice cannot be edited. Use invoices_submit to send to ANAF e-Factura.

Input Schema

NameRequiredDescriptionDefault
uuidYesInvoice UUID to issue
companyIdNoCompany UUID override (uses active company if not set)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.17

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false, but the description goes well beyond them: it discloses the full side-effect chain (validation, series numbering, XML generation, PDF gated behind the Pro plan) and the irreversibility of the state change. The Pro-plan gating and "cannot be edited" are exactly the kind of runtime context annotations cannot express. The irreversibility note is in tension with destructiveHint=false only superficially — nothing is destroyed — so this is not a contradiction.

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?

Three tight sentences, front-loaded with the action and its consequences, then the irreversibility warning, then the sibling routing. No filler, and each sentence carries a distinct piece of decision-relevant 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 should indicate what an agent gets back and what failure looks like; it covers the success path and the Pro-plan caveat but is silent on validation failure behavior and on the returned object. For a two-parameter mutation with full annotation coverage, this is nearly complete but leaves the error path unaddressed.

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 parameters (uuid, companyId) are already documented, and the description adds no syntax or format guidance beyond them. The baseline 3 applies; the only extra semantic signal is the implicit precondition that the referenced invoice must be in draft, and the companyId override/active-company behavior is left entirely to 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 definition states a specific verb and resource ("Issue a draft invoice") and enumerates the concrete effects — validation, series number assignment, UBL 2.1 XML, PDF on Pro plan, draft→issued state change. It explicitly names the sibling it is not (invoices_submit for ANAF e-Factura), so an agent can separate it from invoices_validate, invoices_pdf, and invoices_submit without opening any schema.

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?

It gives a clear precondition ("a draft invoice") and routes the follow-up action to invoices_submit, naming the condition that selects it. The warning that an issued invoice cannot be edited functions as an implicit "do not use if you still need to modify it," but there is no explicit when-not list or mention of what happens on a non-draft input.

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

Deploy Server

Other Tools