Skip to main content
Glama

Pennylane: Finalize a customer invoice

pennylane_finalize_customer_invoice

Pennylane: Turn a draft invoice into a final one with an invoice number. Finalizes a draft invoice and returns its invoice number. Once finalized, the invoice can no longer be edited. The call fails with an error when the entry lines are not balanced, and it does not send the invoice to the customer; use send_customer_invoice for that. Finalizing issues a legal document, so it asks for your OK. By default you confirm each call; you can switch that off for this tool. Reaches other people: confirm with the user before each call. Needs the user's Cotlet API key with access to this app.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
invoice_idYesInvoice ID from list_customer_invoices or create_customer_invoice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true). It discloses irreversibility ('can no longer be edited'), a specific error condition (unbalanced entry lines), that it produces a legal document, that it requires an API key, and the per-call confirmation requirement - all traits the structured fields do not carry.

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

Conciseness3/5

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

Content is front-loaded and the routing guidance comes early, but the opening restates itself ('Turn a draft invoice into a final one' then 'Finalizes a draft invoice and returns its invoice number'), and the confirmation/API-key sentences are somewhat generic platform boilerplate.

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?

With no output schema, the description still covers the return value (invoice number), the failure mode, irreversibility, the sibling alternative, auth needs, and the confirmation requirement - everything an agent needs to invoke it safely and correctly.

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 already documents invoice_id and its provenance (list_customer_invoices/create_customer_invoice). The description adds only that the target must be a draft, which is marginal beyond the schema. 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 ('Turn a draft invoice into a final one with an invoice number') and explicitly distinguishes itself from the two adjacent siblings: it says it does NOT send, and routes to send_customer_invoice. An agent can separate this from create_customer_invoice and send_customer_invoice 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 Guidelines5/5

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

Names the alternative (send_customer_invoice) and the condition that selects it, plus the precondition that entry lines must be balanced. It also flags the required user confirmation before calling, so when-to-call and when-not-to-call are both covered.

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.

Resources