SuperFaktura MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Read SuperFaktura invoices, clients, expenses, bank and stock; create clients, expenses and drafts.
25 tools: 5 can delete or cancel things and 20 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads20Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http superfaktura https://superfaktura.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Deletes or cancels 5Claude Code: deny
superfaktura_add_contact_personWRITE: adds a contact person (name and e-mail, optional phone) to an existing client.No findings
Why it is in this group
- The name "superfaktura_add_contact_person" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: adds a contact person (name and e-mail, optional phone) to an existing client. Nothing is sent to that person. Not idempotent. POST /contact_people/add/api:1.
Annotations the server declares
- title: Add a contact person to a client
- destructiveHint: true
superfaktura_create_clientWRITE: adds a new client to the SuperFaktura address book (only the name is required).No findings
Why it is in this group
- The name "superfaktura_create_client" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: adds a new client to the SuperFaktura address book (only the name is required). Nothing is sent to the client. Not idempotent: calling twice creates two clients, so check superfaktura_list_clients first. POST /clients/create.
Annotations the server declares
- title: Create a client
- destructiveHint: true
superfaktura_create_expenseWRITE: records a received document (expense) with ONE total amount and VAT rate, e.g.No findings
Why it is in this group
- The name "superfaktura_create_expense" says "create": a word for a change.
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: records a received document (expense) with ONE total amount and VAT rate, e.g. a supplier invoice or a bill. It is created unpaid: no payment is recorded and nothing is sent. No attachments. Not idempotent: calling twice records two expenses. POST /expenses/add.
Annotations the server declares
- title: Record a received expense
- destructiveHint: true
superfaktura_create_invoiceWRITE: creates ONE document in SuperFaktura for the user to review: type draft (concept, default), estimate (quote), order or proforma.No findings
Why it is in this group
- The name "superfaktura_create_invoice" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Create an unsent invoice document
- destructiveHint: true
superfaktura_create_tagWRITE: adds a new tag name (usable on invoices, expenses and clients in the SuperFaktura app).No findings
Why it is in this group
- The name "superfaktura_create_tag" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: adds a new tag name (usable on invoices, expenses and clients in the SuperFaktura app). A duplicate name is refused by SuperFaktura. POST /tags/add.
Annotations the server declares
- title: Create a tag
- destructiveHint: true
Only reads 20Claude Code: allow
superfaktura_get_cash_registerOne cash register with currency, number of entries and current balance (read only).No findings
Why it is in this group
- The name "superfaktura_get_cash_register" says "get": a word for reading.
Description, as the server wrote it One cash register with currency, number of entries and current balance (read only). GET /cash_registers/view/{id}.
Annotations the server declares
- title: Get a cash register
- readOnlyHint: true
superfaktura_get_clientOne client with address, tax ids, bank data, default currency/due days/discount and statistics.No findings
Why it is in this group
- The name "superfaktura_get_client" says "get": a word for reading.
Description, as the server wrote it One client with address, tax ids, bank data, default currency/due days/discount and statistics. GET /clients/view/{id}.
Annotations the server declares
- title: Get a client
- readOnlyHint: true
superfaktura_get_companyThe company the API key is working in (name, IČO, DIČ, IČ DPH, address, VAT-payer flag, bank accounts) and the remaining API quota (SuperFaktura's fair-use policy is 1000 requests …No findings
Why it is in this group
- The name "superfaktura_get_company" says "get": a word for reading.
Description, as the server wrote it The company the API key is working in (name, IČO, DIČ, IČ DPH, address, VAT-payer flag, bank accounts) and the remaining API quota (SuperFaktura's fair-use policy is 1000 requests per day and 31000 per month; every tool call here uses one request). Good first call. With all_companies=true also the other companies the user can access (their ids are the company_id of the login). GET /users/getUserCompaniesData.
Annotations the server declares
- title: Get the company profile and API limits
- readOnlyHint: true
superfaktura_get_expenseOne expense with its items, VAT rates, payments and supplier.No findings
Why it is in this group
- The name "superfaktura_get_expense" says "get": a word for reading.
Description, as the server wrote it One expense with its items, VAT rates, payments and supplier. Attachments are not returned. GET /expenses/view/{id}.json.
Annotations the server declares
- title: Get an expense
- readOnlyHint: true
superfaktura_get_invoiceOne document (invoice, proforma, quote ...) with its header (number, dates, status, amounts, currency, symbols, comments), client, items, VAT summary, payments and related document…No findings
Why it is in this group
- The name "superfaktura_get_invoice" says "get": a word for reading.
Description, as the server wrote it One document (invoice, proforma, quote ...) with its header (number, dates, status, amounts, currency, symbols, comments), client, items, VAT summary, payments and related documents. The public access token and payment links of the document are not returned. GET /invoices/view/{id}.json.
Annotations the server declares
- title: Get an invoice
- readOnlyHint: true
superfaktura_get_response_by_checksumIf a superfaktura_create_invoice call timed out, fetch the reply of the ORIGINAL request by the checksum it was sent with (kept 3 months), so the document is not created twice.No findings
Why it is in this group
- The name "superfaktura_get_response_by_checksum" says "get": a word for reading.
Description, as the server wrote it If a superfaktura_create_invoice call timed out, fetch the reply of the ORIGINAL request by the checksum it was sent with (kept 3 months), so the document is not created twice. GET /api_logs/getResponseByChecksum/{checksum}.
Annotations the server declares
- title: Recover the reply of a create by its checksum
- readOnlyHint: true
superfaktura_get_stock_itemOne warehouse item with SKU, price, VAT, purchase price and quantity in stock.No findings
Why it is in this group
- The name "superfaktura_get_stock_item" says "get": a word for reading.
Description, as the server wrote it One warehouse item with SKU, price, VAT, purchase price and quantity in stock. GET /stock_items/view/{id}.
Annotations the server declares
- title: Get a stock item
- readOnlyHint: true
superfaktura_list_bank_accountsThe company's bank accounts as stored in SuperFaktura (bank name, IBAN, SWIFT, default flag).No findings
Why it is in this group
- The name "superfaktura_list_bank_accounts" says "list": a word for reading.
Description, as the server wrote it The company's bank accounts as stored in SuperFaktura (bank name, IBAN, SWIFT, default flag). GET /bank_accounts/index.
Annotations the server declares
- title: List bank accounts
- readOnlyHint: true
superfaktura_list_bank_movesBank transactions imported into SuperFaktura (date, amount, currency, variable symbol, counter account, matching state), newest first by default.No findings
Why it is in this group
- The name "superfaktura_list_bank_moves" says "list": a word for reading.
Description, as the server wrote it Bank transactions imported into SuperFaktura (date, amount, currency, variable symbol, counter account, matching state), newest first by default. Filter by date range, credit/debit or amount. Paged: pass next_page as page. GET /accounts/index.json.
Annotations the server declares
- title: List imported bank account moves
- readOnlyHint: true
superfaktura_list_cash_registersThe company's cash registers with currency, number of entries and current balance (read only).No findings
Why it is in this group
- The name "superfaktura_list_cash_registers" says "list": a word for reading.
Description, as the server wrote it The company's cash registers with currency, number of entries and current balance (read only). GET /cash_registers/getDetails.
Annotations the server declares
- title: List cash registers
- readOnlyHint: true
superfaktura_list_clientsList the address book (clients and suppliers) with contact data and totals.No findings
Why it is in this group
- The name "superfaktura_list_clients" says "list": a word for reading.
Description, as the server wrote it List the address book (clients and suppliers) with contact data and totals. search matches name, IČO, DIČ, IČ DPH, bank account, e-mail, address, city, phone, note and tags. Paged: pass next_page as page. GET /clients/index.json.
Annotations the server declares
- title: List or search clients
- readOnlyHint: true
superfaktura_list_contact_personsThe contact persons (name, e-mail, phone) stored for one client.No findings
Why it is in this group
- The name "superfaktura_list_contact_persons" says "list": a word for reading.
Description, as the server wrote it The contact persons (name, e-mail, phone) stored for one client. GET /contact_people/getContactPeople/{client_id}.
Annotations the server declares
- title: List a client's contact persons
- readOnlyHint: true
superfaktura_list_countriesSuperFaktura's country ids with ISO code and EU flag, for the country_id of clients.No findings
Why it is in this group
- The name "superfaktura_list_countries" says "list": a word for reading.
Description, as the server wrote it SuperFaktura's country ids with ISO code and EU flag, for the country_id of clients. GET /countries/index/view_full:1.
Annotations the server declares
- title: List countries
- readOnlyHint: true
superfaktura_list_expense_categoriesThe expense category tree (id, name, parent) for the category_id of expenses.No findings
Why it is in this group
- The name "superfaktura_list_expense_categories" says "list": a word for reading.
Description, as the server wrote it The expense category tree (id, name, parent) for the category_id of expenses. GET /expenses/expense_categories.
Annotations the server declares
- title: List expense categories
- readOnlyHint: true
superfaktura_list_expensesList received documents (expenses: received invoices, bills, internal documents) with amounts, VAT, supplier and payment status.No findings
Why it is in this group
- The name "superfaktura_list_expenses" says "list": a word for reading.
Description, as the server wrote it List received documents (expenses: received invoices, bills, internal documents) with amounts, VAT, supplier and payment status. status: issued (new), partially_paid, paid, overdue. Without a date filter SuperFaktura applies its default period; pass created_period='all' for everything. Paged: pass next_page as page. GET /expenses/index.json.
Annotations the server declares
- title: List or search expenses
- readOnlyHint: true
superfaktura_list_invoicesList issued documents with client, items, totals and payment status.No findings
Why it is in this group
- The name "superfaktura_list_invoices" says "list": a word for reading.
Description, as the server wrote it List issued documents with client, items, totals and payment status. type selects the document kind (default regular = ordinary invoices; also proforma, estimate = quote, order, cancel = credit note, delivery, draft, reverse_order; several allowed). Without a date filter SuperFaktura returns only the CURRENT YEAR; use created_period='all' or a date range for older ones. status: issued, partially_paid, paid, overdue. search matches client name, number, VS ... Paged: pass next_page as page. GET /invoices/index.json.
Annotations the server declares
- title: List or search invoices
- readOnlyHint: true
superfaktura_list_sequencesThe document numbering sequences per document type (id, name, mask, next formatted number, default flag); sequence ids are used when creating documents.No findings
Why it is in this group
- The name "superfaktura_list_sequences" says "list": a word for reading.
Description, as the server wrote it The document numbering sequences per document type (id, name, mask, next formatted number, default flag); sequence ids are used when creating documents. GET /sequences/index.json.
Annotations the server declares
- title: List numbering sequences
- readOnlyHint: true
superfaktura_list_stock_itemsList warehouse items (name, SKU, unit, price, VAT, quantity in stock).No findings
Why it is in this group
- The name "superfaktura_list_stock_items" says "list": a word for reading.
Description, as the server wrote it List warehouse items (name, SKU, unit, price, VAT, quantity in stock). search matches name, SKU and description; sku matches the SKU. Paged: pass next_page as page. GET /stock_items/index.json.
Annotations the server declares
- title: List or search stock items
- readOnlyHint: true
superfaktura_list_stock_movementsThe stock log of one item (quantity changes, notes, related invoice or expense).No findings
Why it is in this group
- The name "superfaktura_list_stock_movements" says "list": a word for reading.
Description, as the server wrote it The stock log of one item (quantity changes, notes, related invoice or expense). Paged: pass next_page as page. GET /stock_items/movements/{id}.
Annotations the server declares
- title: List stock movements of an item
- readOnlyHint: true
superfaktura_list_tagsThe tags (id and name) usable on invoices, expenses and clients.No findings
Why it is in this group
- The name "superfaktura_list_tags" says "list": a word for reading.
Description, as the server wrote it The tags (id and name) usable on invoices, expenses and clients. GET /tags/index.json.
Annotations the server declares
- title: List tags
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http superfaktura https://superfaktura.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__superfaktura__superfaktura_get_company",
"mcp__superfaktura__superfaktura_list_invoices",
"mcp__superfaktura__superfaktura_get_invoice",
"mcp__superfaktura__superfaktura_list_clients",
"mcp__superfaktura__superfaktura_get_client",
"mcp__superfaktura__superfaktura_list_contact_persons",
"mcp__superfaktura__superfaktura_list_expenses",
"mcp__superfaktura__superfaktura_get_expense",
"mcp__superfaktura__superfaktura_list_expense_categories",
"mcp__superfaktura__superfaktura_list_bank_accounts",
"mcp__superfaktura__superfaktura_list_bank_moves",
"mcp__superfaktura__superfaktura_list_cash_registers",
"mcp__superfaktura__superfaktura_get_cash_register",
"mcp__superfaktura__superfaktura_list_stock_items",
"mcp__superfaktura__superfaktura_get_stock_item",
"mcp__superfaktura__superfaktura_list_stock_movements",
"mcp__superfaktura__superfaktura_list_tags",
"mcp__superfaktura__superfaktura_list_sequences",
"mcp__superfaktura__superfaktura_list_countries",
"mcp__superfaktura__superfaktura_get_response_by_checksum"
],
"ask": [],
"deny": [
"mcp__superfaktura__superfaktura_create_client",
"mcp__superfaktura__superfaktura_add_contact_person",
"mcp__superfaktura__superfaktura_create_tag",
"mcp__superfaktura__superfaktura_create_expense",
"mcp__superfaktura__superfaktura_create_invoice"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as superfaktura. Review it before you use it.