Skip to main content
Glama
Storno CLI

Storno CLI

Official
by stornoro

invoices_restore

Idempotent

Restore an accidentally cancelled invoice to draft status so it can be edited and reissued; fails if it was submitted to ANAF, has credit notes, or recorded payments.

Instructions

Restore a cancelled invoice back to "draft" status. Only for accidental cancellations. Cannot restore if the invoice was submitted to ANAF, has credit notes, or has recorded payments. The invoice can then be edited and reissued.

Input Schema

NameRequiredDescriptionDefault
uuidYesInvoice UUID to restore from cancelled status
companyIdNoCompany UUID override (uses active company if not set)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.17

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=false and idempotentHint=true, so the safety profile is covered; the description adds substantive context those annotations cannot: three concrete preconditions that block the call and the post-condition that the invoice becomes editable and reissuable. It does not mention permissions/authorization needs, but otherwise enriches the behavioral picture.

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?

Four short sentences, front-loaded with the action and target state, followed by the guard conditions. No filler and nothing out of order.

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?

For a state-transition mutation with no output schema, the description covers the preconditions and the resulting state well enough to call correctly. It could mention the failure response shape or whether the original invoice number is preserved, but the essentials are present.

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 in the schema. The description adds no parameter-level detail, so the baseline 3 applies.

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?

States a specific verb and resource ('Restore a cancelled invoice') plus the resulting state ('back to "draft" status'), which distinguishes it from siblings like invoices_cancel and invoices_delete. The state transition is unambiguous.

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?

'Only for accidental cancellations' sets a clear intent condition, and the exclusion list (ANAF-submitted, credit notes, payments) tells the agent when the call will fail. It stops short of naming alternative tools (e.g. invoices_cancel or reissuing via invoices_create) for the non-accidental case.

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