CashCtrl MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Read CashCtrl accounts, journal, orders, people, articles, salaries and reports; book and create.
28 tools: 6 can delete or cancel things and 22 only read.
Scanned Oct 21, 2026
- Deletes or cancels6Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads22Claude 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 cashctrl https://cashctrl.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
28 tools
Deletes or cancels 6Claude Code: deny
cashctrl_create_journal_entryWRITE: changes the accounting records.No findings
Why it is in this group
- The name "cashctrl_create_journal_entry" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. Creates a manual book entry in the journal. Either a simple entry (debit_account_id, credit_account_id, amount) or a collective entry (items, whose debit and credit sums must match). POST /journal/create.json.
Annotations the server declares
- title: Create a journal entry
- destructiveHint: true
cashctrl_create_orderWRITE: changes the accounting records.No findings
Why it is in this group
- The name "cashctrl_create_order" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. Creates ONE order document for ONE customer or vendor: a quote, invoice, credit note, purchase bill and so on, depending on category_id. Without status_id the first status of the category is used; a booking status (for example Open) also creates journal entries, so use a draft status unless the user asks otherwise. No e-mail is sent. POST /order/create.json.
Annotations the server declares
- title: Create an order
- destructiveHint: true
cashctrl_create_personWRITE: changes the accounting records.No findings
Why it is in this group
- The name "cashctrl_create_person" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. Creates a customer, vendor or other contact. Give company, first_name or last_name (at least one). Search first with cashctrl_list_persons so no duplicate is created. POST /person/create.json.
Annotations the server declares
- title: Create a person or company
- destructiveHint: true
cashctrl_delete_journal_entriesWRITE: changes the accounting records.No findings
Why it is in this group
- The name "cashctrl_delete_journal_entries" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. DELETES manual journal entries by id (entries created by orders or salary statements cannot be deleted this way). Deleted entries are gone from the books; confirm the ids with the user first. POST /journal/delete.json.
Annotations the server declares
- title: Delete journal entries
- destructiveHint: true
cashctrl_delete_ordersWRITE: changes the accounting records.No findings
Why it is in this group
- The name "cashctrl_delete_orders" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. DELETES orders (invoices, quotes, purchase documents) by id, with the journal entries they created. Deleted documents are gone; confirm the ids with the user first. POST /order/delete.json.
Annotations the server declares
- title: Delete orders
- destructiveHint: true
cashctrl_update_order_statusWRITE: changes the accounting records.No findings
Why it is in this group
- The name "cashctrl_update_order_status" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: changes the accounting records. Makes one request that is never repeated; check the result before trying again. Sets the status of 1-20 orders (for example Draft to Open, or Open to Paid). A status can book journal entries or move stock, so the books change. POST /order/update_status.json.
Annotations the server declares
- title: Change the status of orders
- destructiveHint: true
Only reads 22Claude Code: allow
cashctrl_get_accountOne account of the chart of accounts by id.No findings
Why it is in this group
- The name "cashctrl_get_account" says "get": a word for reading.
Description, as the server wrote it One account of the chart of accounts by id. GET /account/read.json.
Annotations the server declares
- title: Get an account
- readOnlyHint: true
cashctrl_get_account_balanceThe balance of one account at the end of a day (default: the last day of the current fiscal period).No findings
Why it is in this group
- The name "cashctrl_get_account_balance" says "get": a word for reading.
Description, as the server wrote it The balance of one account at the end of a day (default: the last day of the current fiscal period). GET /account/balance.
Annotations the server declares
- title: Get an account balance
- readOnlyHint: true
cashctrl_get_articleOne inventory article by id.No findings
Why it is in this group
- The name "cashctrl_get_article" says "get": a word for reading.
Description, as the server wrote it One inventory article by id. GET /inventory/article/read.json.
Annotations the server declares
- title: Get an inventory article
- readOnlyHint: true
cashctrl_get_journal_entryOne book entry by id, with its items for a collective entry.No findings
Why it is in this group
- The name "cashctrl_get_journal_entry" says "get": a word for reading.
Description, as the server wrote it One book entry by id, with its items for a collective entry. GET /journal/read.json.
Annotations the server declares
- title: Get a journal entry
- readOnlyHint: true
cashctrl_get_orderOne order (invoice, quote, purchase document) by id, with its items, totals and status.No findings
Why it is in this group
- The name "cashctrl_get_order" says "get": a word for reading.
Description, as the server wrote it One order (invoice, quote, purchase document) by id, with its items, totals and status. GET /order/read.json.
Annotations the server declares
- title: Get an order
- readOnlyHint: true
cashctrl_get_personOne person or company by id, with addresses, contact data and bank accounts.No findings
Why it is in this group
- The name "cashctrl_get_person" says "get": a word for reading.
Description, as the server wrote it One person or company by id, with addresses, contact data and bank accounts. GET /person/read.json.
Annotations the server declares
- title: Get a person
- readOnlyHint: true
cashctrl_get_report_dataThe data of one report element (for example the balance sheet or the income statement) for a fiscal period or a date range.No findings
Why it is in this group
- The name "cashctrl_get_report_data" says "get": a word for reading.
Description, as the server wrote it The data of one report element (for example the balance sheet or the income statement) for a fiscal period or a date range. GET /report/element/data.json.
Annotations the server declares
- title: Get report data
- readOnlyHint: true
cashctrl_get_report_treeThe reports set up in CashCtrl (balance sheet, income statement, and so on) as a tree of collections and elements.No findings
Why it is in this group
- The name "cashctrl_get_report_tree" says "get": a word for reading.
Description, as the server wrote it The reports set up in CashCtrl (balance sheet, income statement, and so on) as a tree of collections and elements. The element id is the input of cashctrl_get_report_data. GET /report/tree.json.
Annotations the server declares
- title: Get the report tree
- readOnlyHint: true
cashctrl_get_salary_statementOne payroll statement by id, with its salary items.No findings
Why it is in this group
- The name "cashctrl_get_salary_statement" says "get": a word for reading.
Description, as the server wrote it One payroll statement by id, with its salary items. Sensitive personal data. GET /salary/statement/read.json.
Annotations the server declares
- title: Get a salary statement
- readOnlyHint: true
cashctrl_list_account_categoriesThe categories of the chart of accounts (assets, liabilities, expenses, revenue and their sub-categories).No findings
Why it is in this group
- The name "cashctrl_list_account_categories" says "list": a word for reading.
Description, as the server wrote it The categories of the chart of accounts (assets, liabilities, expenses, revenue and their sub-categories). GET /account/category/list.json.
Annotations the server declares
- title: List account categories
- readOnlyHint: true
cashctrl_list_accountsThe chart of accounts: number, name, category and the balance for the fiscal period.No findings
Why it is in this group
- The name "cashctrl_list_accounts" says "list": a word for reading.
Description, as the server wrote it The chart of accounts: number, name, category and the balance for the fiscal period. Not paged. GET /account/list.json.
Annotations the server declares
- title: List accounts
- readOnlyHint: true
cashctrl_list_articlesInventory articles (products and services) with number, name, price, stock and accounts.No findings
Why it is in this group
- The name "cashctrl_list_articles" says "list": a word for reading.
Description, as the server wrote it Inventory articles (products and services) with number, name, price, stock and accounts. GET /inventory/article/list.json.
Annotations the server declares
- title: List inventory articles
- readOnlyHint: true
cashctrl_list_bank_accountsThe bank accounts set up in CashCtrl (name, IBAN, linked ledger account).No findings
Why it is in this group
- The name "cashctrl_list_bank_accounts" says "list": a word for reading.
Description, as the server wrote it The bank accounts set up in CashCtrl (name, IBAN, linked ledger account). GET /account/bank/list.json.
Annotations the server declares
- title: List bank accounts
- readOnlyHint: true
cashctrl_list_currenciesThe currencies set up in CashCtrl with their exchange rates.No findings
Why it is in this group
- The name "cashctrl_list_currencies" says "list": a word for reading.
Description, as the server wrote it The currencies set up in CashCtrl with their exchange rates. GET /currency/list.json.
Annotations the server declares
- title: List currencies
- readOnlyHint: true
cashctrl_list_fiscal_periodsAll fiscal periods (id, name, start, end, current flag).No findings
Why it is in this group
- The name "cashctrl_list_fiscal_periods" says "list": a word for reading.
Description, as the server wrote it All fiscal periods (id, name, start, end, current flag). The id is the fiscal_period_id of the other tools. GET /fiscalperiod/list.json.
Annotations the server declares
- title: List fiscal periods
- readOnlyHint: true
cashctrl_list_journalBook entries of the journal (date, title, debit and credit account, amount, reference), newest first, for the current fiscal period unless fiscal_period_id is set.No findings
Why it is in this group
- The name "cashctrl_list_journal" says "list": a word for reading.
Description, as the server wrote it Book entries of the journal (date, title, debit and credit account, amount, reference), newest first, for the current fiscal period unless fiscal_period_id is set. GET /journal/list.json.
Annotations the server declares
- title: List journal entries
- readOnlyHint: true
cashctrl_list_order_categoriesThe order categories (Quote, Invoice, Credit note, Purchase invoice and so on) with their statuses (Draft, Open, Paid) and the default accounts and sequence numbers.No findings
Why it is in this group
- The name "cashctrl_list_order_categories" says "list": a word for reading.
Description, as the server wrote it The order categories (Quote, Invoice, Credit note, Purchase invoice and so on) with their statuses (Draft, Open, Paid) and the default accounts and sequence numbers. Use it to find category_id and status_id (type PURCHASE for purchase documents). GET /order/category/list.json.
Annotations the server declares
- title: List order categories
- readOnlyHint: true
cashctrl_list_ordersSales or purchase documents (quotes, order confirmations, invoices, delivery notes, credit notes, vendor bills) with number, date, customer, status and total.No findings
Why it is in this group
- The name "cashctrl_list_orders" says "list": a word for reading.
Description, as the server wrote it Sales or purchase documents (quotes, order confirmations, invoices, delivery notes, credit notes, vendor bills) with number, date, customer, status and total. Newest first. GET /order/list.json.
Annotations the server declares
- title: List orders
- readOnlyHint: true
cashctrl_list_personsCustomers, vendors, employees and other contacts (name, company, number, roles, addresses).No findings
Why it is in this group
- The name "cashctrl_list_persons" says "list": a word for reading.
Description, as the server wrote it Customers, vendors, employees and other contacts (name, company, number, roles, addresses). GET /person/list.json.
Annotations the server declares
- title: List people
- readOnlyHint: true
cashctrl_list_salary_statementsPayroll statements (employee, date, status, gross and net amounts), newest first.No findings
Why it is in this group
- The name "cashctrl_list_salary_statements" says "list": a word for reading.
Description, as the server wrote it Payroll statements (employee, date, status, gross and net amounts), newest first. Sensitive personal data. GET /salary/statement/list.json.
Annotations the server declares
- title: List salary statements
- readOnlyHint: true
cashctrl_list_sequence_numbersThe number sequences (for journal references, order numbers, customer numbers).No findings
Why it is in this group
- The name "cashctrl_list_sequence_numbers" says "list": a word for reading.
Description, as the server wrote it The number sequences (for journal references, order numbers, customer numbers). The id is the sequence_number_id of the write tools. GET /sequencenumber/list.json.
Annotations the server declares
- title: List sequence numbers
- readOnlyHint: true
cashctrl_list_tax_codesThe VAT tax codes (id, code, name, rates).No findings
Why it is in this group
- The name "cashctrl_list_tax_codes" says "list": a word for reading.
Description, as the server wrote it The VAT tax codes (id, code, name, rates). The id is the tax_id of the write tools. GET /tax/list.json.
Annotations the server declares
- title: List tax codes
- 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 cashctrl https://cashctrl.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__cashctrl__cashctrl_list_accounts",
"mcp__cashctrl__cashctrl_get_account",
"mcp__cashctrl__cashctrl_get_account_balance",
"mcp__cashctrl__cashctrl_list_account_categories",
"mcp__cashctrl__cashctrl_list_bank_accounts",
"mcp__cashctrl__cashctrl_list_journal",
"mcp__cashctrl__cashctrl_get_journal_entry",
"mcp__cashctrl__cashctrl_list_orders",
"mcp__cashctrl__cashctrl_get_order",
"mcp__cashctrl__cashctrl_list_order_categories",
"mcp__cashctrl__cashctrl_list_persons",
"mcp__cashctrl__cashctrl_get_person",
"mcp__cashctrl__cashctrl_list_articles",
"mcp__cashctrl__cashctrl_get_article",
"mcp__cashctrl__cashctrl_list_salary_statements",
"mcp__cashctrl__cashctrl_get_salary_statement",
"mcp__cashctrl__cashctrl_list_fiscal_periods",
"mcp__cashctrl__cashctrl_list_tax_codes",
"mcp__cashctrl__cashctrl_list_sequence_numbers",
"mcp__cashctrl__cashctrl_list_currencies",
"mcp__cashctrl__cashctrl_get_report_tree",
"mcp__cashctrl__cashctrl_get_report_data"
],
"ask": [],
"deny": [
"mcp__cashctrl__cashctrl_create_journal_entry",
"mcp__cashctrl__cashctrl_delete_journal_entries",
"mcp__cashctrl__cashctrl_create_order",
"mcp__cashctrl__cashctrl_update_order_status",
"mcp__cashctrl__cashctrl_delete_orders",
"mcp__cashctrl__cashctrl_create_person"
]
}
}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 cashctrl. Review it before you use it.