Read and create Vyfakturuj invoices and contacts: search, number series, payment methods, tags.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE. Adds a contact to the address book (it is not a customer message: nothing is sent). Give at least a name (the address-book label) or company or last name. Returns the new contact with its id. POST /contact/.
ICO (company id).
DIC (VAT id).
Phone.
Web.
Postal code (PSC).
City.
Address-book name (how it is listed).
Your note about the contact.
Street.
Company name.
E-mail where invoices and reminders go.
Default days until due for this contact.
Last name.
First name.
ISO 3166 country code, e.g. CZ, SK, DE.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE. Adds a contact to the address book (it is not a customer message: nothing is sent). Give at least a name (the address-book label) or company or last name. Returns the new contact with its id. POST /contact/.
| Argument | Type | Description |
|---|---|---|
| IC | string | ICO (company id). |
| DIC | string | DIC (VAT id). |
| tel | string | Phone. |
| web | string | Web. |
| zip | string | Postal code (PSC). |
| city | string | City. |
| name | string | Address-book name (how it is listed). |
| note | string | Your note about the contact. |
| street | string | Street. |
| company | string | Company name. |
| mail_to | string | E-mail where invoices and reminders go. |
| days_due | integer | Default days until due for this contact. |
| lastname | string | Last name. |
| firstname | string | First name. |
| country_code | string | ISO 3166 country code, e.g. CZ, SK, DE. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"IC": {
"type": "string",
"maxLength": 20,
"description": "ICO (company id)."
},
"DIC": {
"type": "string",
"maxLength": 20,
"description": "DIC (VAT id)."
},
"tel": {
"type": "string",
"maxLength": 30,
"description": "Phone."
},
"web": {
"type": "string",
"maxLength": 100,
"description": "Web."
},
"zip": {
"type": "string",
"maxLength": 10,
"description": "Postal code (PSC)."
},
"city": {
"type": "string",
"maxLength": 50,
"description": "City."
},
"name": {
"type": "string",
"maxLength": 100,
"description": "Address-book name (how it is listed)."
},
"note": {
"type": "string",
"maxLength": 100,
"description": "Your note about the contact."
},
"street": {
"type": "string",
"maxLength": 50,
"description": "Street."
},
"company": {
"type": "string",
"maxLength": 100,
"description": "Company name."
},
"mail_to": {
"type": "string",
"pattern": "^[^\\s@,;]+@[^\\s@,;]+$",
"maxLength": 100,
"description": "E-mail where invoices and reminders go."
},
"days_due": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "Default days until due for this contact."
},
"lastname": {
"type": "string",
"maxLength": 100,
"description": "Last name."
},
"firstname": {
"type": "string",
"maxLength": 100,
"description": "First name."
},
"country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166 country code, e.g. CZ, SK, DE."
}
}
}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/.
| Argument | Type | Description |
|---|---|---|
| VS | integer | Variable symbol (default: derived from the number). |
| type | any | Document type: 1 faktura (default), 2 zalohova faktura, 4 proforma faktura, 8 vyzva k platbe, 512 objednavka. |
| items* | array | Document items (1-200). |
| currency | string | Currency, ISO 4217 (default: the account's). |
| days_due | integer | Days until due (splatnost). |
| language | string | Language of the document. |
One address-book contact with every field (billing and delivery address, ICO/DIC, e-mails, default texts and days_due). GET /contact/{id}/.
| Argument | Type | Description |
|---|---|---|
| id* | any | The contact id (from vyfakturuj_list_contacts). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "The contact id (from vyfakturuj_list_contacts)."
}
}
}One document with all fields: supplier and customer blocks, items (text, quantity, unit_price, vat_rate, totals), dates, VS, bank details, total, flags and flags_decoded, payment method, public page, PDF and online-payment URLs. GET /invoice/{id}/.
| Argument | Type | Description |
|---|---|---|
| id* | any | The invoice id (from vyfakturuj_list_invoices). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "The invoice id (from vyfakturuj_list_invoices)."
}
}
}One template / recurring invoice (sablona, pravidelna faktura) by id: its items, customer, schedule and settings. The API has no list endpoint for templates, so the id comes from the user (the number in the template's URL in Vyfakturuj). GET /template/{id}/.
| Argument | Type | Description |
|---|---|---|
| id* | any | The template id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "The template id."
}
}
}Search the address book (adresar): id, name, company, ICO (IC), DIC, address, e-mail (mail_to), phone, default days_due. Filter by free text q, ICO, DIC, name, e-mail or phone. Paged with rows_limit/rows_offset. GET /contact/.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search. |
| IC | string | Exact ICO (company id). |
| DIC | string | Exact DIC (VAT id). |
| tel | string | Phone number. |
| name | string | Address-book name. |
| sort | string | Sort: column~asc or column~desc, several joined by | (for example date_created~desc|number~asc). |
| mail_to | string | E-mail address of the contact. |
| rows_limit | integer | Rows to return, 1-100 (default 25). |
| rows_offset | integer | Rows to skip (default 0). Use next_offset from the previous reply. |
Search documents (faktury, zalohove faktury, proformy, objednavky ...); pass sort=date_created~desc for the newest first. Each row has id, number, type, dates, customer, VS, currency, total, flags and flags_decoded (paid, sent_to_customer, cancelled, ...) and the public/PDF URLs; use vyfakturuj_get_invoice for the whole document with items. Filter by free text q, customer id, document type, number, variable symbol (VS), currency or creation date range. Paged with rows_limit/rows_offset. GET /invoice/.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search over the invoices. |
| VS | string | Variable symbol (variabilni symbol). |
| sort | string | Sort: column~asc or column~desc, several joined by | (for example date_created~desc|number~asc). |
| type | any | Document type: 1 faktura, 2 zalohova faktura, 4 proforma, 8 vyzva k platbe, 16 danovy doklad, 32 opravny danovy doklad, 64 prijmovy doklad, 128 opravny doklad, 512 objednavka. |
| number | string | Exact document number. |
| currency | string | Currency, ISO 4217, e.g. CZK, EUR. |
| rows_limit | integer | Rows to return, 1-100 (default 25). |
The numbering series (ciselne rady) of the account: id_number_series, the document type it is for, name and the number pattern. Use the id in vyfakturuj_create_invoice. GET /settings/number-series/.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The payment methods of the account (id_payment_method, name, type: 1 bank transfer, 2 cash, 4 cash on delivery, 8 card, ...). Use the id in vyfakturuj_create_invoice. GET /settings/payment-method/.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The tags (stitky) of the account: id_tag, name and colour. Invoices carry an id_tag. GET /settings/tags/.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}| customer_IC |
| string |
| Customer ICO (company id). |
| id_customer | any | Address-book contact id (from vyfakturuj_list_contacts); fills the customer block. |
| customer_DIC | string | Customer DIC (VAT id). |
| customer_zip | string | Customer postal code (PSC). |
| date_created | string | Issue date yyyy-mm-dd (default today). |
| order_number | string | Order id / reference. |
| calculate_vat | any | 1 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_city | string | Customer city. |
| customer_name | string | Customer company name (when no id_customer). |
| note_internal | string | Internal note (not on the document). |
| customer_street | string | Customer street. |
| id_number_series | any | Number series id (from vyfakturuj_list_number_series); must match the document type. |
| customer_lastname | string | Customer last name. |
| id_payment_method | any | Payment method id (from vyfakturuj_list_payment_methods). |
| text_before_items | string | Text before the items. |
| customer_firstname | string | Customer first name. |
| date_taxable_supply | string | Date of taxable supply (DUZP) yyyy-mm-dd. |
| text_invoice_footer | string | Text in the footer. |
| customer_country_code | string | ISO 3166 country code, e.g. CZ, SK, DE. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"items"
],
"properties": {
"VS": {
"type": "integer",
"maximum": 9999999999,
"minimum": 0,
"description": "Variable symbol (default: derived from the number)."
},
"type": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 4
},
{
"type": "number",
"const": 8
},
{
"type": "number",
"const": 512
}
],
"description": "Document type: 1 faktura (default), 2 zalohova faktura, 4 proforma faktura, 8 vyzva k platbe, 512 objednavka."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"unit_price"
],
"properties": {
"text": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Item text (max 255 characters)."
},
"unit": {
"type": "string",
"maxLength": 10,
"description": "Unit, e.g. ks, kg, hod (max 10 characters)."
},
"quantity": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Quantity (default 1)."
},
"vat_rate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "VAT rate in percent, e.g. 21, 12 or 0."
},
"unit_price": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Price per unit, in the invoice currency. Net or gross depending on calculate_vat."
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "Document items (1-200)."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Currency, ISO 4217 (default: the account's)."
},
"days_due": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "Days until due (splatnost)."
},
"language": {
"enum": [
"cs",
"sk",
"en",
"de",
"it",
"pl"
],
"type": "string",
"description": "Language of the document."
},
"customer_IC": {
"type": "string",
"maxLength": 20,
"description": "Customer ICO (company id)."
},
"id_customer": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "Address-book contact id (from vyfakturuj_list_contacts); fills the customer block."
},
"customer_DIC": {
"type": "string",
"maxLength": 20,
"description": "Customer DIC (VAT id)."
},
"customer_zip": {
"type": "string",
"maxLength": 10,
"description": "Customer postal code (PSC)."
},
"date_created": {
"type": "string",
"description": "Issue date yyyy-mm-dd (default today)."
},
"order_number": {
"type": "string",
"maxLength": 255,
"description": "Order id / reference."
},
"calculate_vat": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 3
},
{
"type": "number",
"const": 4
},
{
"type": "number",
"const": 5
},
{
"type": "number",
"const": 6
}
],
"description": "1 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_city": {
"type": "string",
"maxLength": 50,
"description": "Customer city."
},
"customer_name": {
"type": "string",
"maxLength": 100,
"description": "Customer company name (when no id_customer)."
},
"note_internal": {
"type": "string",
"maxLength": 2000,
"description": "Internal note (not on the document)."
},
"customer_street": {
"type": "string",
"maxLength": 50,
"description": "Customer street."
},
"id_number_series": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "Number series id (from vyfakturuj_list_number_series); must match the document type."
},
"customer_lastname": {
"type": "string",
"maxLength": 100,
"description": "Customer last name."
},
"id_payment_method": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "Payment method id (from vyfakturuj_list_payment_methods)."
},
"text_before_items": {
"type": "string",
"maxLength": 255,
"description": "Text before the items."
},
"customer_firstname": {
"type": "string",
"maxLength": 100,
"description": "Customer first name."
},
"date_taxable_supply": {
"type": "string",
"description": "Date of taxable supply (DUZP) yyyy-mm-dd."
},
"text_invoice_footer": {
"type": "string",
"maxLength": 255,
"description": "Text in the footer."
},
"customer_country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166 country code, e.g. CZ, SK, DE."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 255,
"description": "Free-text search."
},
"IC": {
"type": "string",
"maxLength": 20,
"description": "Exact ICO (company id)."
},
"DIC": {
"type": "string",
"maxLength": 20,
"description": "Exact DIC (VAT id)."
},
"tel": {
"type": "string",
"maxLength": 30,
"description": "Phone number."
},
"name": {
"type": "string",
"maxLength": 100,
"description": "Address-book name."
},
"sort": {
"type": "string",
"pattern": "^[A-Za-z_]{1,40}~(asc|desc)(\\|[A-Za-z_]{1,40}~(asc|desc))*$",
"description": "Sort: column~asc or column~desc, several joined by | (for example date_created~desc|number~asc)."
},
"mail_to": {
"type": "string",
"maxLength": 100,
"description": "E-mail address of the contact."
},
"rows_limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Rows to return, 1-100 (default 25)."
},
"rows_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0). Use next_offset from the previous reply."
}
}
}| id_customer | any | Only invoices of this address-book contact (from vyfakturuj_list_contacts). |
| rows_offset | integer | Rows to skip (default 0). Use next_offset from the previous reply. |
| date_created_to | string | Created on or before this date (yyyy-mm-dd). |
| date_created_from | string | Created on or after this date (yyyy-mm-dd). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 255,
"description": "Free-text search over the invoices."
},
"VS": {
"type": "string",
"pattern": "^[0-9]{1,10}$",
"description": "Variable symbol (variabilni symbol)."
},
"sort": {
"type": "string",
"pattern": "^[A-Za-z_]{1,40}~(asc|desc)(\\|[A-Za-z_]{1,40}~(asc|desc))*$",
"description": "Sort: column~asc or column~desc, several joined by | (for example date_created~desc|number~asc)."
},
"type": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 4
},
{
"type": "number",
"const": 8
},
{
"type": "number",
"const": 16
},
{
"type": "number",
"const": 32
},
{
"type": "number",
"const": 64
},
{
"type": "number",
"const": 128
},
{
"type": "number",
"const": 512
}
],
"description": "Document type: 1 faktura, 2 zalohova faktura, 4 proforma, 8 vyzva k platbe, 16 danovy doklad, 32 opravny danovy doklad, 64 prijmovy doklad, 128 opravny doklad, 512 objednavka."
},
"number": {
"type": "string",
"maxLength": 50,
"description": "Exact document number."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Currency, ISO 4217, e.g. CZK, EUR."
},
"rows_limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Rows to return, 1-100 (default 25)."
},
"id_customer": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"pattern": "^[1-9][0-9]{0,14}$"
}
],
"description": "Only invoices of this address-book contact (from vyfakturuj_list_contacts)."
},
"rows_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip (default 0). Use next_offset from the previous reply."
},
"date_created_to": {
"type": "string",
"description": "Created on or before this date (yyyy-mm-dd)."
},
"date_created_from": {
"type": "string",
"description": "Created on or after this date (yyyy-mm-dd)."
}
}
}