Skip to main content
Glama

Vyfakturuj MCP by usefulapi

Create an invoice (issues a real numbered document)

vyfakturuj_create_invoice
Destructive

WRITE. Creates a document in Vyfakturuj. Vyfakturuj has NO draft state: the document is issued at once and takes the next number of its number series (delete or cancel it in Vyfakturuj if wrong). Does NOT send an e-mail to the customer, does NOT mark it paid and moves no money; automatic reminders and paid notices are switched off for it (disable_automated_mails). Name the customer with id_customer (an address-book contact, from vyfakturuj_list_contacts) or with the customer_* fields. Items need text and unit_price. Optional id_number_series / id_payment_method come from vyfakturuj_list_number_series / vyfakturuj_list_payment_methods; the account defaults apply otherwise. Prices are net unless calculate_vat is 2 (gross). POST /invoice/.

Input Schema

NameRequiredDescriptionDefault
VSNoVariable symbol (default: derived from the number).
typeNoDocument type: 1 faktura (default), 2 zalohova faktura, 4 proforma faktura, 8 vyzva k platbe, 512 objednavka.
itemsYesDocument items (1-200).
currencyNoCurrency, ISO 4217 (default: the account's).
days_dueNoDays until due (splatnost).
languageNoLanguage of the document.
customer_ICNoCustomer ICO (company id).
id_customerNoAddress-book contact id (from vyfakturuj_list_contacts); fills the customer block.
customer_DICNoCustomer DIC (VAT id).
customer_zipNoCustomer postal code (PSC).
date_createdNoIssue date yyyy-mm-dd (default today).
order_numberNoOrder id / reference.
calculate_vatNo1 items are net (VAT added), 2 items are gross, 3 special VAT regime, 4 domestic reverse charge, 5 not a VAT payer, 6 foreign reverse charge.
customer_cityNoCustomer city.
customer_nameNoCustomer company name (when no id_customer).
note_internalNoInternal note (not on the document).
customer_streetNoCustomer street.
id_number_seriesNoNumber series id (from vyfakturuj_list_number_series); must match the document type.
customer_lastnameNoCustomer last name.
id_payment_methodNoPayment method id (from vyfakturuj_list_payment_methods).
text_before_itemsNoText before the items.
customer_firstnameNoCustomer first name.
date_taxable_supplyNoDate of taxable supply (DUZP) yyyy-mm-dd.
text_invoice_footerNoText in the footer.
customer_country_codeNoISO 3166 country code, e.g. CZ, SK, DE.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

The destructiveHint annotation signals a mutation, but the description goes far beyond it: no draft state, immediate issuance, consumption of the next number in the series, and a remediation path ('delete or cancel it in Vyfakturuj if wrong'). It further discloses that reminders and paid notices are disabled, which is non-obvious behavioral context an agent could not infer from the annotation.

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?

Front-loaded with the critical 'WRITE' and no-draft warning, then organized into behavior, customer, items, and defaults. Dense with parenthetical cross-references but virtually no waste; slightly heavy for a single description block.

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 25-parameter mutation tool with no output schema, the description covers consequences, prerequisites, and sibling dependencies thoroughly. The one residual gap is that it never says what is returned (e.g., the new document id), which matters more given there is no output schema, but the behavioral coverage is otherwise strong.

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 coverage is 100%, so the baseline is 3, but the description adds integrative meaning the schema does not: the either/or choice between id_customer and the customer_* fields, the minimum viable item shape (text + unit_price), and the net-vs-gross rule tied to calculate_vat. It does not explain every field, but the added cross-field guidance is real value.

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 ('Creates a document in Vyfakturuj') and clearly distinguishes itself from read-side siblings like vyfakturuj_get_invoice and vyfakturuj_list_invoices by starting with 'WRITE.' The title and description together make the operation unmistakable.

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?

Explicitly routes the agent to sibling lookups ('id_customer ... from vyfakturuj_list_contacts', 'id_number_series / id_payment_method come from vyfakturuj_list_number_series / vyfakturuj_list_payment_methods') and states when defaults apply otherwise. It also fences off adjacent concerns by stating what the tool does NOT do (no e-mail, no payment marking, no money movement).

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.