ABRA Flexi MCP by usefulapi
MCP server for ABRA Flexi — accounting, contacts, stock and draft-checked invoice creation.
Should I use this
Quality & Safety
Findings (2)
- LOWin abraflexi_list_received_invoices
- LOWin abraflexi_create_issued_invoice
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"abra-flexi": {
"url": "https://abra-flexi.usefulapi.io/mcp"
}
}
}Remote endpoints
https://abra-flexi.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (19)
🟢abraflexi_get_company
Show the ABRA Flexi company the login points to (name, company id, state). Use it to check the connection.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_evidences(search)
List the evidences (tables) of the company with their Czech path and name, for example faktura-vydana = issued invoices, adresar = address book, cenik = price list. Use a path from here as 'evidence' in abraflexi_list_records / abraflexi_get_record (only business evidences are readable there).
Input Schema
{
"type": "object",
"properties": {
"search": {
"description": "Only evidences whose path or name contains this text (case-insensitive).",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_issued_invoices(status, customer_code, from, to, due_before, ...)
List issued invoices (sales invoices to customers), newest first by default, filtered by payment status, customer/supplier code, dates or text. Money fields: sumCelkem = total, zbyvaUhradit = still to pay (in the company currency), the *Men fields are in the document currency. Returns total, next_start for paging. Pass 'fields' for other properties.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "all (default), unpaid (open balance, not cancelled), overdue (unpaid and past its due date) or paid (nothing left to pay).",
"type": "string",
"enum": [
"all",
"unpaid",
"overdue",
"paid"
]
},
"customer_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only invoices of this address-book entry: its code (kod) from abraflexi_list_contacts."
},
"from": {
"description": "Issued on or after this day (yyyy-mm-dd).",
"type": "string"
},
"to": {
"description": "Issued on or before this day (yyyy-mm-dd).",
"type": "string"
},
"due_before": {
"description": "Due date before this day (yyyy-mm-dd).",
"type": "string"
},
"search": {
"description": "Text searched in the invoice number, variable symbol, customer name and description (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_get_issued_invoice(id)
Get one issued invoice with all its fields and its line items. Pass the numeric id (from the list) or an identifier such as code:<number>.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^(?:[1-9]\\d{0,15}|(?:code|ext|ean|plu|key|vatid|in|iban):[^\\u0000-\\u001f\\u007f]{1,150})$",
"description": "Record id: the numeric ABRA Flexi id (123) or an identifier such as code:ABC."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_received_invoices(status, customer_code, from, to, due_before, ...)
List received invoices (bills from suppliers), newest first by default, filtered by payment status, customer/supplier code, dates or text. Money fields: sumCelkem = total, zbyvaUhradit = still to pay (in the company currency), the *Men fields are in the document currency. Returns total, next_start for paging. Pass 'fields' for other properties.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "all (default), unpaid (open balance, not cancelled), overdue (unpaid and past its due date) or paid (nothing left to pay).",
"type": "string",
"enum": [
"all",
"unpaid",
"overdue",
"paid"
]
},
"customer_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only invoices of this address-book entry: its code (kod) from abraflexi_list_contacts."
},
"from": {
"description": "Issued on or after this day (yyyy-mm-dd).",
"type": "string"
},
"to": {
"description": "Issued on or before this day (yyyy-mm-dd).",
"type": "string"
},
"due_before": {
"description": "Due date before this day (yyyy-mm-dd).",
"type": "string"
},
"search": {
"description": "Text searched in the invoice number, variable symbol, customer name and description (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_get_received_invoice(id)
Get one received invoice with all its fields and its line items. Pass the numeric id (from the list) or an identifier such as code:<number>.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^(?:[1-9]\\d{0,15}|(?:code|ext|ean|plu|key|vatid|in|iban):[^\\u0000-\\u001f\\u007f]{1,150})$",
"description": "Record id: the numeric ABRA Flexi id (123) or an identifier such as code:ABC."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_contacts(search, city, order, fields, start, ...)
List or search the address book (adresar): customers and suppliers with code (kod), name, company id (ic), VAT id (dic), e-mail, phone and address. The code from here identifies the customer in invoices.
Input Schema
{
"type": "object",
"properties": {
"search": {
"description": "Text searched in code, name, company id, VAT id and e-mail (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"city": {
"description": "Only entries in this city.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_get_contact(id)
Get one address-book entry with all its fields. Pass the numeric id (from abraflexi_list_contacts) or code:<kod>.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^(?:[1-9]\\d{0,15}|(?:code|ext|ean|plu|key|vatid|in|iban):[^\\u0000-\\u001f\\u007f]{1,150})$",
"description": "Record id: the numeric ABRA Flexi id (123) or an identifier such as code:ABC."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_products(search, order, fields, start, limit)
List or search the price list (cenik): products and services with code, name, EAN, prices (without and with VAT), purchase price and whether they are stocked.
Input Schema
{
"type": "object",
"properties": {
"search": {
"description": "Text searched in code, name and EAN (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_stock_cards(product_code, warehouse_code, accounting_period, max_on_hand, order, ...)
List stock cards (skladova-karta): the quantity on hand (stavMJ), reserved (rezervMJ) and available (dostupMj) per product and warehouse, with min/max limits and average price.
Input Schema
{
"type": "object",
"properties": {
"product_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only this product: its code (kod) from abraflexi_list_products."
},
"warehouse_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only this warehouse: its code (kod), see abraflexi_list_records with evidence sklad."
},
"accounting_period": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Accounting period code (ucetni-obdobi kod, e.g. 2026). Default: the period that contains today. Stock cards exist once per period, so without this the quantities of older periods would be mixed in."
},
"max_on_hand": {
"description": "Only cards with at most this quantity on hand (stavMJ), e.g. 0 for sold-out items or 5 for low stock. Compare minMJ in the result for the card's own minimum.",
"type": "number",
"minimum": -1000000000,
"maximum": 1000000000
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_stock_movements(warehouse_code, from, to, order, fields, ...)
List stock movements (skladovy-pohyb: receipts, issues, transfers), newest first by default, filtered by warehouse or dates.
Input Schema
{
"type": "object",
"properties": {
"warehouse_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only this warehouse: its code (kod)."
},
"from": {
"description": "Dated on or after this day (yyyy-mm-dd).",
"type": "string"
},
"to": {
"description": "Dated on or before this day (yyyy-mm-dd).",
"type": "string"
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_bank_movements(from, to, account_code, variable_symbol, search, ...)
List bank movements (banka: bank statement lines, incoming and outgoing payments), newest first by default, filtered by dates, bank account, variable symbol or text. sumCelkem is the amount; typPohybuK says incoming or outgoing.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Dated on or after this day (yyyy-mm-dd).",
"type": "string"
},
"to": {
"description": "Dated on or before this day (yyyy-mm-dd).",
"type": "string"
},
"account_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only this bank account: its code (kod), see abraflexi_list_records with evidence bankovni-ucet or pokladna."
},
"variable_symbol": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only movements with this variable symbol."
},
"search": {
"description": "Text searched in the document number, counterparty name and description (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_cash_movements(from, to, account_code, variable_symbol, search, ...)
List cash desk movements (pokladni-pohyb: cash receipts and payouts), newest first by default, filtered by dates, cash desk, variable symbol or text. sumCelkem is the amount; typPohybuK says incoming or outgoing.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Dated on or after this day (yyyy-mm-dd).",
"type": "string"
},
"to": {
"description": "Dated on or before this day (yyyy-mm-dd).",
"type": "string"
},
"account_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only this cash desk: its code (kod), see abraflexi_list_records with evidence bankovni-ucet or pokladna."
},
"variable_symbol": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only movements with this variable symbol."
},
"search": {
"description": "Text searched in the document number, counterparty name and description (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_orders(direction, customer_code, from, to, search, ...)
List orders: direction 'received' = customer orders (objednavka-prijata, default), 'issued' = purchase orders to suppliers (objednavka-vydana). Newest first by default.
Input Schema
{
"type": "object",
"properties": {
"direction": {
"description": "received (customer orders, default) or issued (purchase orders).",
"type": "string",
"enum": [
"received",
"issued"
]
},
"customer_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Only orders of this address-book entry: its code (kod)."
},
"from": {
"description": "Order date on or after this day (yyyy-mm-dd).",
"type": "string"
},
"to": {
"description": "Order date on or before this day (yyyy-mm-dd).",
"type": "string"
},
"search": {
"description": "Text searched in the order number, customer name and description (diacritics ignored).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_list_records(evidence, filter, order, fields, start, ...)
List records of any business evidence (invoice types, bank accounts, warehouses, cost centres, currencies, ledger entries, price-list items, ...) with an optional filter in ABRA Flexi's filter language, for example filter "zbyvaUhradit > 0 and datSplat < now()" or "kod = 'ABC'". Operators: = <> < <= > >= like, like similar (ignores diacritics), begins, ends, between, in, and, or, not; dates as 2026-01-31. Without 'fields' the vendor's summary fields are returned.
Input Schema
{
"type": "object",
"properties": {
"evidence": {
"type": "string",
"enum": [
"adresar",
"kontakt",
"adresar-bankovni-ucet",
"misto-urceni",
"skupina-firem",
"udalost",
"faktura-vydana",
"faktura-vydana-polozka",
"typ-faktury-vydane",
"rada-faktury-vydane",
"faktura-prijata",
"faktura-prijata-polozka",
"typ-faktury-prijate",
"rada-faktury-prijate",
"objednavka-prijata",
"objednavka-prijata-polozka",
"typ-objednavky-prijate",
"objednavka-vydana",
"objednavka-vydana-polozka",
"typ-objednavky-vydane",
"poptavka-vydana",
"poptavka-prijata",
"nabidka-vydana",
"nabidka-vydana-polozka",
"nabidka-prijata",
"pohledavka",
"zavazek",
"interni-doklad",
"interni-doklad-polozka",
"prodejka",
"prodejka-platba",
"banka",
"banka-polozka",
"typ-banka",
"pokladni-pohyb",
"pokladni-pohyb-polozka",
"typ-pokladni-pohyb",
"bankovni-ucet",
"pokladna",
"prikaz-k-uhrade",
"prikaz-k-uhrade-polozka",
"vzajemny-zapocet",
"saldo",
"ucetni-denik",
"ucet",
"ucetni-obdobi",
"cleneni-dph",
"sazba-dph",
"stat-dph",
"cenik",
"skladova-karta",
"skladovy-pohyb",
"skladovy-pohyb-polozka",
"typ-skladovy-pohyb",
"sklad",
"skupina-zbozi",
"kusovnik",
"cenova-uroven",
"dodavatel",
"odberatel",
"rezervace",
"inventura",
"inventura-polozka",
"sarze-expirace",
"vyrobni-cislo",
"smlouva",
"smlouva-polozka",
"typ-smlouvy",
"majetek",
"zakazka",
"typ-zakazky",
"stredisko",
"cinnost",
"mena",
"kurz",
"stat",
"merna-jednotka",
"forma-uhrady",
"stitek",
"skupina-stitku",
"region",
"konst-symbol",
"typ-dokladu"
],
"description": "Evidence (table) path, e.g. faktura-vydana, adresar, cenik. See abraflexi_list_evidences for what the company has."
},
"filter": {
"description": "Filter expression without the outer parentheses, e.g. \"kod like 'FV' and datVyst >= 2026-01-01\".",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"order": {
"description": "Sort order: property@A or property@D, several separated by commas, e.g. \"datVyst@D\" (newest first).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*@[AD](,[A-Za-z][A-Za-z0-9.]*@[AD]){0,2}$"
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
},
"start": {
"description": "Records to skip (default 0). Use next_start from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Records per page, 1-200 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"evidence"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢abraflexi_get_record(evidence, id, fields)
Get one record of any business evidence with all its fields (detail full), by numeric id or identifier such as code:ABC. Field names are the vendor's Czech property names.
Input Schema
{
"type": "object",
"properties": {
"evidence": {
"type": "string",
"enum": [
"adresar",
"kontakt",
"adresar-bankovni-ucet",
"misto-urceni",
"skupina-firem",
"udalost",
"faktura-vydana",
"faktura-vydana-polozka",
"typ-faktury-vydane",
"rada-faktury-vydane",
"faktura-prijata",
"faktura-prijata-polozka",
"typ-faktury-prijate",
"rada-faktury-prijate",
"objednavka-prijata",
"objednavka-prijata-polozka",
"typ-objednavky-prijate",
"objednavka-vydana",
"objednavka-vydana-polozka",
"typ-objednavky-vydane",
"poptavka-vydana",
"poptavka-prijata",
"nabidka-vydana",
"nabidka-vydana-polozka",
"nabidka-prijata",
"pohledavka",
"zavazek",
"interni-doklad",
"interni-doklad-polozka",
"prodejka",
"prodejka-platba",
"banka",
"banka-polozka",
"typ-banka",
"pokladni-pohyb",
"pokladni-pohyb-polozka",
"typ-pokladni-pohyb",
"bankovni-ucet",
"pokladna",
"prikaz-k-uhrade",
"prikaz-k-uhrade-polozka",
"vzajemny-zapocet",
"saldo",
"ucetni-denik",
"ucet",
"ucetni-obdobi",
"cleneni-dph",
"sazba-dph",
"stat-dph",
"cenik",
"skladova-karta",
"skladovy-pohyb",
"skladovy-pohyb-polozka",
"typ-skladovy-pohyb",
"sklad",
"skupina-zbozi",
"kusovnik",
"cenova-uroven",
"dodavatel",
"odberatel",
"rezervace",
"inventura",
"inventura-polozka",
"sarze-expirace",
"vyrobni-cislo",
"smlouva",
"smlouva-polozka",
"typ-smlouvy",
"majetek",
"zakazka",
"typ-zakazky",
"stredisko",
"cinnost",
"mena",
"kurz",
"stat",
"merna-jednotka",
"forma-uhrady",
"stitek",
"skupina-stitku",
"region",
"konst-symbol",
"typ-dokladu"
],
"description": "Evidence (table) path, e.g. faktura-vydana, adresar, cenik. See abraflexi_list_evidences for what the company has."
},
"id": {
"type": "string",
"pattern": "^(?:[1-9]\\d{0,15}|(?:code|ext|ean|plu|key|vatid|in|iban):[^\\u0000-\\u001f\\u007f]{1,150})$",
"description": "Record id: the numeric ABRA Flexi id (123) or an identifier such as code:ABC."
},
"fields": {
"description": "Comma-separated field names to return instead of the default set (e.g. kod,datVyst,sumCelkem). Field names are the vendor's Czech property names.",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9]*(,[A-Za-z][A-Za-z0-9]*){0,59}$"
}
},
"required": [
"evidence",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡abraflexi_create_contact(name, code, ic, dic, email, ...)
WRITE: create a new address-book entry (customer or supplier) in ABRA Flexi. It only adds a record; nothing is sent. Use dry_run first to see the result without saving. Check abraflexi_list_contacts first so you do not create a duplicate.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Name of the company or person (nazev)."
},
"code": {
"description": "Code (kod) for the entry; generated from the name if omitted.",
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,20}$"
},
"ic": {
"description": "Company id (IČO).",
"type": "string",
"pattern": "^[0-9A-Za-z -]{1,20}$"
},
"dic": {
"description": "VAT id (DIČ).",
"type": "string",
"pattern": "^[0-9A-Za-z -]{1,20}$"
},
"email": {
"description": "E-mail address.",
"type": "string",
"maxLength": 255
},
"phone": {
"description": "Phone number (tel).",
"type": "string",
"maxLength": 40
},
"mobile": {
"description": "Mobile number (mobil).",
"type": "string",
"maxLength": 40
},
"street": {
"description": "Street and number (ulice).",
"type": "string",
"maxLength": 255
},
"city": {
"description": "City (mesto).",
"type": "string",
"maxLength": 100
},
"postal_code": {
"description": "Postal code (psc).",
"type": "string",
"maxLength": 20
},
"country_code": {
"description": "ISO country code, e.g. CZ, SK, DE (stat).",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"payment_terms_days": {
"description": "Default payment terms in days (splatDny).",
"type": "integer",
"minimum": 0,
"maximum": 3650
},
"note": {
"description": "Note (poznam).",
"type": "string",
"maxLength": 2000
},
"dry_run": {
"description": "true = only validate and show what would be saved, nothing is stored (recommended first). Default false = save.",
"type": "boolean"
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴abraflexi_update_contact(id, name, code, ic, dic, ...)
WRITE: change fields of an existing address-book entry (only the fields you pass are changed). The entry must exist (a wrong id is an error, nothing is created). This overwrites the current values. Use dry_run first to check.
Input Schema
{
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[1-9]\\d{0,15}$"
}
],
"description": "The numeric ABRA Flexi id of the record (the 'id' field of a list result)."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Name of the company or person (nazev)."
},
"code": {
"description": "Code (kod) for the entry; generated from the name if omitted.",
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,20}$"
},
"ic": {
"description": "Company id (IČO).",
"type": "string",
"pattern": "^[0-9A-Za-z -]{1,20}$"
},
"dic": {
"description": "VAT id (DIČ).",
"type": "string",
"pattern": "^[0-9A-Za-z -]{1,20}$"
},
"email": {
"description": "E-mail address.",
"type": "string",
"maxLength": 255
},
"phone": {
"description": "Phone number (tel).",
"type": "string",
"maxLength": 40
},
"mobile": {
"description": "Mobile number (mobil).",
"type": "string",
"maxLength": 40
},
"street": {
"description": "Street and number (ulice).",
"type": "string",
"maxLength": 255
},
"city": {
"description": "City (mesto).",
"type": "string",
"maxLength": 100
},
"postal_code": {
"description": "Postal code (psc).",
"type": "string",
"maxLength": 20
},
"country_code": {
"description": "ISO country code, e.g. CZ, SK, DE (stat).",
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"payment_terms_days": {
"description": "Default payment terms in days (splatDny).",
"type": "integer",
"minimum": 0,
"maximum": 3650
},
"note": {
"description": "Note (poznam).",
"type": "string",
"maxLength": 2000
},
"dry_run": {
"description": "true = only validate and show what would be saved, nothing is stored (recommended first). Default false = save.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡abraflexi_create_issued_invoice(document_type_code, customer_code, items, issue_date, due_date, ...)
WRITE: create an issued invoice (faktura-vydana) with line items in ABRA Flexi. The invoice is saved as a normal document with the next number of its series, and ABRA Flexi may account it automatically according to the settings of the chosen invoice type; this tool does NOT send it, mark it paid or e-mail it. Use dry_run first to see the computed totals and validation errors without saving. Find document_type_code with abraflexi_list_records (evidence typ-faktury-vydane) and customer_code with abraflexi_list_contacts.
Input Schema
{
"type": "object",
"properties": {
"document_type_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Code (kod) of the issued-invoice type, e.g. FAKTURA (evidence typ-faktury-vydane)."
},
"customer_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Code (kod) of the customer in the address book."
},
"items": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"description": "Item text (nazev). Required unless price_list_code is given.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"price_list_code": {
"type": "string",
"pattern": "^[^\\u0000-\\u001f\\u007f]{1,150}$",
"description": "Price-list item (cenik) code; takes name, price and VAT from the price list when not given."
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"description": "Quantity (mnozMj)."
},
"unit_price": {
"description": "Unit price without VAT (cenaMj). Required unless price_list_code is given.",
"type": "number",
"minimum": -1000000000000,
"maximum": 1000000000000
},
"vat_rate": {
"description": "VAT rate in percent for this item (szbDph), e.g. 21, 12, 0.",
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"quantity"
]
},
"description": "Line items."
},
"issue_date": {
"description": "Issue date (datVyst), default today.",
"type": "string"
},
"due_date": {
"description": "Due date (datSplat), default from the customer's payment terms.",
"type": "string"
},
"description": {
"description": "Invoice description (popis).",
"type": "string",
"maxLength": 255
},
"variable_symbol": {
"description": "Variable symbol (varSym), digits only.",
"type": "string",
"pattern": "^[0-9]{1,10}$"
},
"currency_code": {
"description": "Currency code (mena), company currency when omitted.",
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"note": {
"description": "Internal note (poznam).",
"type": "string",
"maxLength": 2000
},
"dry_run": {
"description": "true = only validate and show what would be saved, nothing is stored (recommended first). Default false = save.",
"type": "boolean"
}
},
"required": [
"document_type_code",
"customer_code",
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence