Skip to main content
Glama

SuperFaktura MCP by usefulapi

Create an unsent invoice document

superfaktura_create_invoice
Destructive

WRITE: creates ONE document in SuperFaktura for the user to review: type draft (concept, default), estimate (quote), order or proforma. A final regular invoice cannot be created here. It is NOT sent (no e-mail, no post), NOT marked paid or sent, and has no payment link or discount. Give an existing client_id (its name is read first with one extra GET /clients/view/{id}, so the call uses 2 requests of the daily quota) OR a new client's name (+ optional ico/dic/ic_dph/address...). Items: name, unit price without VAT, VAT rate, quantity. Not idempotent: pass a checksum (max 32 chars) so a timed-out call can be recovered with superfaktura_get_response_by_checksum instead of retried. POST /invoices/create.

Input Schema

NameRequiredDescriptionDefault
dueNoDue date.
nameNoDocument title (default generated from the number).
typeNoDocument type: draft (default), estimate, order or proforma.
itemsYes1-100 items.
commentNoComment on the document.
createdNoIssue date (default today).
checksumNoYour own unique token (max 32 chars) to recover the reply if the call times out.
constantNoConstant symbol.
deliveryNoDelivery date.
order_noNoOrder number.
specificNoSpecific symbol.
variableNoVariable symbol (the document number when empty).
client_idNoExisting client id (superfaktura_list_clients). Give this OR client_name.
client_dicNoClient tax id (DIČ), with client_name.
client_icoNoClient company id (IČO), with client_name.
client_zipNoClient ZIP, with client_name.
client_cityNoClient city, with client_name.
client_nameNoName of a new/matching client (used when client_id is not given).
sequence_idNoNumbering sequence id (superfaktura_list_sequences).
client_emailNoClient e-mail, with client_name (stored only; nothing is sent).
client_ic_dphNoClient VAT id, with client_name.
client_addressNoClient street and number, with client_name.
header_commentNoComment above the items (shown on the document).
internal_commentNoInternal comment (not shown on the document).
invoice_currencyNo3-letter currency code, e.g. EUR, CZK.
client_country_idNoClient country id (superfaktura_list_countries), with client_name.

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?

Annotations only supply destructiveHint=true, so the description carries most of the burden and delivers: nothing is sent via e-mail or post, nothing is marked paid, and no payment link or discount is generated. It further discloses quota cost (client_id lookup consumes 2 of the daily requests), non-idempotency, and the checksum-based recovery path — exactly the operational traits an agent needs before calling a mutating endpoint.

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?

The 'WRITE:' prefix and the two negations (not sent, not paid) are front-loaded where an agent will see them first, and nearly every clause carries distinct information. It is a dense single paragraph with heavy parenthetical nesting, which costs some scanability.

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 26-parameter mutation with no output schema and only a destructiveHint annotation, the description covers the safety-critical behaviors (unsent, unpaid, non-idempotent, quota cost, recovery tool). It leaves the response content and the behavior when client_name matches an existing client slightly under-specified.

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

Parameters4/5

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

Schema description coverage is already 100%, so the baseline would be 3; the description earns a bump by explaining the client_id-vs-client_name decision rule, the item shape (name, unit price without VAT, VAT rate, quantity), and the recovery role of the checksum beyond its length limit. It does not explain the numbering/sequence or symbol fields, which the schema alone carries.

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 ('WRITE: creates ONE document in SuperFaktura') and immediately enumerates the exact document types it can produce (draft/estimate/order/proforma). It also draws a hard boundary ('A final regular invoice cannot be created here'), which lets an agent distinguish it from every other creative sibling without opening a 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?

Gives clear when-to-use context (unsent draft/estimate/order/proforma for user review) plus an explicit negative boundary against final invoices, and routes the agent to superfaktura_get_response_by_checksum for timeout recovery instead of retrying. It does not name a sibling for the excluded case (issuing a real invoice) or state prerequisites, so it stops just short of full when/when-not routing.

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.