Alpaca Trading API integration for Model Context Protocol (MCP)
CashCtrl MCP by usefulapi is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Read CashCtrl accounts, journal, orders, people, articles, salaries and reports; book and create.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http cashctrl-mcp-by-usefulapi https://cashctrl.usefulapi.io/mcp
# 2 — ask your agent for something these tools do
# cashctrl_list_accounts, cashctrl_get_account, cashctrl_get_account_balance and 25 more
CashCtrl MCP by usefulapi costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http cashctrl-mcp-by-usefulapi https://cashctrl.usefulapi.io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
28 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
The chart of accounts: number, name, category and the balance for the fiscal period. Not paged. GET /account/list.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category_id | integer | no | Only accounts of this category (cashctrl_list_account_categories). |
| only_active | boolean | no | Only active accounts. |
| fiscal_period_id | integer | no | Fiscal period id (cashctrl_list_fiscal_periods); default is the current period. |
| query | string | no | Full-text search. |
| sort | string | no | Column to sort by (a column name of the list reply; each list has its own default). |
| dir | string | no | Sort direction (each list has its own default). |
| filter | array | no | Column filters, all must match (AND). |
One account of the chart of accounts by id. GET /account/read.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The account id (from cashctrl_list_accounts; not the account number). |
The balance of one account at the end of a day (default: the last day of the current fiscal period). GET /account/balance.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The account id (from cashctrl_list_accounts). |
| date | string | no | Balance at the end of this day, yyyy-mm-dd. |
The categories of the chart of accounts (assets, liabilities, expenses, revenue and their sub-categories). GET /account/category/list.json.
No parameter schema on file.
The bank accounts set up in CashCtrl (name, IBAN, linked ledger account). GET /account/bank/list.json.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account_id | integer | no | Only entries of this account (cashctrl_list_accounts). |
| associate_id | integer | no | Only entries of this person (cashctrl_list_persons). |
| fiscal_period_id | integer | no | Fiscal period id (cashctrl_list_fiscal_periods); default is the current period. |
| only_manual | boolean | no | Only manual entries. |
| only_collective | boolean | no | Only collective entries. |
| only_sales | boolean | no | Only entries created by sales orders. |
| only_purchase | boolean | no | Only entries created by purchase orders. |
| only_salary | boolean | no | Only entries created by salary statements. |
| only_imported | boolean | no | Only imported (bank) entries. |
| query | string | no | Full-text search. |
| sort | string | no | Column to sort by (a column name of the list reply; each list has its own default). |
| dir | string | no | Sort direction (each list has its own default). |
| filter | array | no | Column filters, all must match (AND). |
| start | integer | no | Index of the first row (default 0). Use next_start from the previous reply. |
| limit | integer | no | Rows to return, 1-500 (default 100). |
One book entry by id, with its items for a collective entry. GET /journal/read.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The journal entry id (from cashctrl_list_journal). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | no | SALES or PURCHASE documents. |
| category_id | integer | no | Only this order category (cashctrl_list_order_categories), for example Invoice. |
| status_id | integer | no | Only this status (the status ids are in cashctrl_list_order_categories). |
| person_id | integer | no | Only orders of this person (cashctrl_list_persons). |
| fiscal_period_id | integer | no | Fiscal period id (cashctrl_list_fiscal_periods); default is the current period. |
| only_open | boolean | no | Only open (not completed) orders, for example unpaid invoices. |
| only_overdue | boolean | no | Only orders past their due date. |
| query | string | no | Full-text search. |
| sort | string | no | Column to sort by (a column name of the list reply; each list has its own default). |
| dir | string | no | Sort direction (each list has its own default). |
| filter | array | no | Column filters, all must match (AND). |
| start | integer | no | Index of the first row (default 0). Use next_start from the previous reply. |
| limit | integer | no | Rows to return, 1-500 (default 100). |
One order (invoice, quote, purchase document) by id, with its items, totals and status. GET /order/read.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The order id (from cashctrl_list_orders). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | no | SALES (default) or PURCHASE categories. |
| fiscal_period_id | integer | no | Fiscal period id (cashctrl_list_fiscal_periods); default is the current period. |
Customers, vendors, employees and other contacts (name, company, number, roles, addresses). GET /person/list.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category_id | integer | no | Only this person category. |
| only_customers | boolean | no | Only customers. |
| only_vendors | boolean | no | Only vendors. |
| only_employees | boolean | no | Only employees. |
| only_active | boolean | no | Only active people. |
| query | string | no | Full-text search. |
| sort | string | no | Column to sort by (a column name of the list reply; each list has its own default). |
| dir | string | no | Sort direction (each list has its own default). |
| filter | array | no | Column filters, all must match (AND). |
| start | integer | no | Index of the first row (default 0). Use next_start from the previous reply. |
| limit | integer | no | Rows to return, 1-500 (default 100). |
One person or company by id, with addresses, contact data and bank accounts. GET /person/read.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The person id (from cashctrl_list_persons). |
Inventory articles (products and services) with number, name, price, stock and accounts. GET /inventory/article/list.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category_id | integer | no | Only this article category. |
| only_active | boolean | no | Only active articles. |
| only_restock | boolean | no | Only articles that need restocking. |
| query | string | no | Full-text search. |
| sort | string | no | Column to sort by (a column name of the list reply; each list has its own default). |
| dir | string | no | Sort direction (each list has its own default). |
| filter | array | no | Column filters, all must match (AND). |
| start | integer | no | Index of the first row (default 0). Use next_start from the previous reply. |
| limit | integer | no | Rows to return, 1-500 (default 100). |
One inventory article by id. GET /inventory/article/read.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The article id (from cashctrl_list_articles). |
Payroll statements (employee, date, status, gross and net amounts), newest first. Sensitive personal data. GET /salary/statement/list.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| person_id | integer | no | Only statements of this employee (cashctrl_list_persons). |
| fiscal_period_id | integer | no | Fiscal period id (cashctrl_list_fiscal_periods); default is the current period. |
| only_open | boolean | no | Only open (not yet paid) statements. |
| only_overdue | boolean | no | Only statements past their payment date. |
| query | string | no | Full-text search. |
| sort | string | no | Column to sort by (a column name of the list reply; each list has its own default). |
| dir | string | no | Sort direction (each list has its own default). |
| start | integer | no | Index of the first row (default 0). Use next_start from the previous reply. |
| limit | integer | no | Rows to return, 1-500 (default 100). |
One payroll statement by id, with its salary items. Sensitive personal data. GET /salary/statement/read.json.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | The statement id (from cashctrl_list_salary_statements). |
All fiscal periods (id, name, start, end, current flag). The id is the fiscal_period_id of the other tools. GET /fiscalperiod/list.json.
No parameter schema on file.
The VAT tax codes (id, code, name, rates). The id is the tax_id of the write tools. GET /tax/list.json.
No parameter schema on file.
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.
No parameter schema on file.
The currencies set up in CashCtrl with their exchange rates. GET /currency/list.json.
No parameter schema on file.
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.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| element_id | integer | yes | The report element id (from cashctrl_get_report_tree). |
| fiscal_period_id | integer | no | Fiscal period id (cashctrl_list_fiscal_periods). It replaces start_date and end_date. |
| start_date | string | no | Start of the period, yyyy-mm-dd. |
| end_date | string | no | End of the period, yyyy-mm-dd. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| date | string | no | Booking date, yyyy-mm-dd (CashCtrl uses today when omitted). |
| title | string | yes | Description of the entry (max 250 characters). |
| debit_account_id | integer | no | Debit account id (cashctrl_list_accounts). For a simple entry. |
| credit_account_id | integer | no | Credit account id (cashctrl_list_accounts). For a simple entry. |
| amount | number | no | Amount of a simple entry, for example 125.50. |
| items | array | no | Lines of a collective entry. Use it instead of debit_account_id, credit_account_id and amount. |
| tax_id | integer | no | Tax code id of a simple entry (cashctrl_list_tax_codes). |
| reference | string | no | Receipt or reference text (max 100). |
| sequence_number_id | integer | no | Sequence number that generates the reference (cashctrl_list_sequence_numbers). |
| associate_id | integer | no | The person this entry belongs to (cashctrl_list_persons). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | 1-20 journal entry ids. |
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 sta
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category_id | integer | yes | Order category id (cashctrl_list_order_categories), for example the Invoice category. |
| associate_id | integer | yes | The customer or vendor (cashctrl_list_persons). |
| date | string | yes | Document date, yyyy-mm-dd. |
| items | array | yes | 1-200 order items. |
| status_id | integer | no | Status id (cashctrl_list_order_categories). Default: the first status of the category. |
| description | string | no | Description of the document (max 200). |
| due_days | integer | no | Days until payment is due. |
| nr | string | no | Order number. Leave empty to use the sequence number of the category. |
| sequence_number_id | integer | no | Sequence number for the order number (cashctrl_list_sequence_numbers). |
| account_id | integer | no | Debtors or creditors account id; default from the category. |
| language | string | no | Language of the document. |
| discount_percentage | number | no | Discount of the whole order in percent. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | 1-20 order ids. |
| status_id | integer | yes | The new status id (from the statuses of the order category, cashctrl_list_order_categories). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | 1-20 order ids. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| company | string | no | Company name. |
| first_name | string | no | First name. |
| last_name | string | no | Last name. |
| is_customer | boolean | no | Mark as customer. |
| is_vendor | boolean | no | Mark as vendor. |
| nr | string | no | Person number, for example the customer number. |
| category_id | integer | no | Person category id. |
| language | string | no | Language of documents for this person. |
| vat_uid | string | no | VAT number (UID), for example CHE-123.456.789 MWST. |
| addresses | array | no | Addresses. |
| contacts | array | no | E-mail addresses, phone numbers and websites. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install CashCtrl MCP by usefulapi or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish CashCtrl MCP by usefulapi can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.