Skip to main content
Glama
stornoro

Storno CLI

by stornoro

recurring_invoices_update

Update an existing recurring invoice template by modifying any optional field, with line items replaced entirely when specified.

Instructions

Update an existing recurring invoice template. All fields are optional but at least one must be provided. When updating lines, the entire lines array replaces existing lines.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uuidYesUUID of the recurring invoice template to update
linesNoArray of line items (replaces all existing lines)
notesNoInternal notes
clientIdNoUUID of the client
currencyNoISO 4217 currency code
seriesIdNoUUID of the document series
stopDateNoISO 8601 date to stop generation (null to remove)
companyIdNoCompany UUID (overrides configured default)
frequencyNoHow often to generate invoices
referenceNoHuman-readable reference
dueDateDaysNoDays after issue date for due date
dueDateTypeNoHow due date is calculated. days = N days after issue. fixed_day = fixed day of month.
documentTypeNoDocument type to generate
frequencyDayNoDay of month for generation (1-31)
paymentTermsNoPayment terms text
autoEmailTimeNoTime to send email (HH:mm)
frequencyMonthNoMonth for yearly generation (1-12)
penaltyEnabledNoEnable late payment penalties
dueDateFixedDayNoFixed day of month for due date (1-31)
invoiceTypeCodeNoTax regime / invoice type code
autoEmailEnabledNoAuto-send email on invoice generation
nextIssuanceDateNoISO 8601 date for next invoice generation (YYYY-MM-DD)
penaltyGraceDaysNoGrace period in days before penalties apply
autoEmailDayOffsetNoDays offset for email sending
penaltyPercentPerDayNoDaily penalty percentage
Behavior2/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 of behavioral disclosure. The description does disclose the key replace-semantics for lines (helpful), but it doesn't mention auth requirements, whether this is a partial vs full update for non-lines fields, idempotency, or validation behaviors that would apply when invalid field combinations are submitted. For a mutation tool with 25 parameters, this is a thin disclosure.

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 extremely concise at two sentences, front-loading the core purpose first, then the most critical usage constraint (partial update + lines replacement). Zero wasted words; every sentence earns its place. Excellent structure for a 25-parameter tool where the schema handles the field details.

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

Completeness3/5

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

Given 25 parameters, no output schema, no annotations, and high schema coverage, the description covers the key update semantics (optional fields, at-least-one, lines replacement). However, it doesn't mention validation constraints between related fields (e.g., referenceCurrency requiring bnr_rate and RON currency), which are documented only deep in the schema's nested lines description. For such a complex update tool, additional guidance on cross-field dependencies would improve completeness.

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 the schema fully documents all 25 parameters. The description adds marginal value by noting the fields are optional with at-least-one requirement and that lines replace existing lines. This matches the high-coverage baseline of 3, as the schema carries the heavy lifting and the description adds only modest augmenting information.

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?

The description clearly states the tool updates an existing recurring invoice template with a specific verb+resource. It distinguishes from siblings (recurring_invoices_create, recurring_invoices_delete, recurring_invoices_toggle) by focusing on updating a template. However, it doesn't explicitly name alternatives like recurring_invoices_bulk_* tools for batch operations.

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 states that all fields are optional but at least one must be provided, which is an important usage constraint. It also clarifies partial-update semantics for the lines array (entire array replacement). This provides clear usage context but doesn't explicitly discuss when to prefer this over recurring_invoices_delete+create or the bulk variants.

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

Install Server

Other Tools

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/stornoro/storno-cli'

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