CashCtrl MCP by usefulapi

Read CashCtrl accounts, journal, orders, people, articles, salaries and reports; book and create.

我该使用它吗

质量与安全性

A
描述质量
99%
模式完整度
80%
命名质量
78%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(3)

  • LOWTool 'cashctrl_list_account_categories' name length outside 3-30 range在 cashctrl_list_account_categories 中
  • LOWTool 'cashctrl_list_salary_statements' name length outside 3-30 range在 cashctrl_list_salary_statements 中
  • LOWTool 'cashctrl_delete_journal_entries' name length outside 3-30 range在 cashctrl_delete_journal_entries 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~7,408token 数(工具定义)
~2.3 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 5.79%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "cashctrl": {
      "url": "https://cashctrl.usefulapi.io/mcp"
    }
  }
}

远程端点

https://cashctrl.usefulapi.io/mcpstreamable-http

它能做什么

工具清单

工具(28)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢cashctrl_list_accounts(category_id, only_active, fiscal_period_id, query, sort, ...)

The chart of accounts: number, name, category and the balance for the fiscal period. Not paged. GET /account/list.json.

输入模式

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only accounts of this category (cashctrl_list_account_categories)."
    },
    "only_active": {
      "description": "Only active accounts.",
      "type": "boolean"
    },
    "fiscal_period_id": {
      "description": "Fiscal period id (cashctrl_list_fiscal_periods); default is the current period.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "query": {
      "description": "Full-text search.",
      "type": "string",
      "maxLength": 200
    },
    "sort": {
      "description": "Column to sort by (a column name of the list reply; each list has its own default).",
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$"
    },
    "dir": {
      "description": "Sort direction (each list has its own default).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "filter": {
      "description": "Column filters, all must match (AND).",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$",
            "description": "Column name of the list reply."
          },
          "comparison": {
            "description": "Default like.",
            "type": "string",
            "enum": [
              "eq",
              "like",
              "gt",
              "lt"
            ]
          },
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "number"
              },
              {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 200
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            ],
            "description": "Value, or an array of values (any matches)."
          }
        },
        "required": [
          "field",
          "value"
        ]
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_account(id)

One account of the chart of accounts by id. GET /account/read.json.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The account id (from cashctrl_list_accounts; not the account number)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_account_balance(id, date)

The balance of one account at the end of a day (default: the last day of the current fiscal period). GET /account/balance.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The account id (from cashctrl_list_accounts)."
    },
    "date": {
      "description": "Balance at the end of this day, yyyy-mm-dd.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_account_categories

The categories of the chart of accounts (assets, liabilities, expenses, revenue and their sub-categories). GET /account/category/list.json.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_bank_accounts

The bank accounts set up in CashCtrl (name, IBAN, linked ledger account). GET /account/bank/list.json.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_journal(account_id, associate_id, fiscal_period_id, only_manual, only_collective, ...)

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.

输入模式

{
  "type": "object",
  "properties": {
    "account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only entries of this account (cashctrl_list_accounts)."
    },
    "associate_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only entries of this person (cashctrl_list_persons)."
    },
    "fiscal_period_id": {
      "description": "Fiscal period id (cashctrl_list_fiscal_periods); default is the current period.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "only_manual": {
      "description": "Only manual entries.",
      "type": "boolean"
    },
    "only_collective": {
      "description": "Only collective entries.",
      "type": "boolean"
    },
    "only_sales": {
      "description": "Only entries created by sales orders.",
      "type": "boolean"
    },
    "only_purchase": {
      "description": "Only entries created by purchase orders.",
      "type": "boolean"
    },
    "only_salary": {
      "description": "Only entries created by salary statements.",
      "type": "boolean"
    },
    "only_imported": {
      "description": "Only imported (bank) entries.",
      "type": "boolean"
    },
    "query": {
      "description": "Full-text search.",
      "type": "string",
      "maxLength": 200
    },
    "sort": {
      "description": "Column to sort by (a column name of the list reply; each list has its own default).",
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$"
    },
    "dir": {
      "description": "Sort direction (each list has its own default).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "filter": {
      "description": "Column filters, all must match (AND).",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$",
            "description": "Column name of the list reply."
          },
          "comparison": {
            "description": "Default like.",
            "type": "string",
            "enum": [
              "eq",
              "like",
              "gt",
              "lt"
            ]
          },
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "number"
              },
              {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 200
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            ],
            "description": "Value, or an array of values (any matches)."
          }
        },
        "required": [
          "field",
          "value"
        ]
      }
    },
    "start": {
      "description": "Index of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows to return, 1-500 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_journal_entry(id)

One book entry by id, with its items for a collective entry. GET /journal/read.json.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The journal entry id (from cashctrl_list_journal)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_orders(type, category_id, status_id, person_id, fiscal_period_id, ...)

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.

输入模式

{
  "type": "object",
  "properties": {
    "type": {
      "description": "SALES or PURCHASE documents.",
      "type": "string",
      "enum": [
        "SALES",
        "PURCHASE"
      ]
    },
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only this order category (cashctrl_list_order_categories), for example Invoice."
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only this status (the status ids are in cashctrl_list_order_categories)."
    },
    "person_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only orders of this person (cashctrl_list_persons)."
    },
    "fiscal_period_id": {
      "description": "Fiscal period id (cashctrl_list_fiscal_periods); default is the current period.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "only_open": {
      "description": "Only open (not completed) orders, for example unpaid invoices.",
      "type": "boolean"
    },
    "only_overdue": {
      "description": "Only orders past their due date.",
      "type": "boolean"
    },
    "query": {
      "description": "Full-text search.",
      "type": "string",
      "maxLength": 200
    },
    "sort": {
      "description": "Column to sort by (a column name of the list reply; each list has its own default).",
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$"
    },
    "dir": {
      "description": "Sort direction (each list has its own default).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "filter": {
      "description": "Column filters, all must match (AND).",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$",
            "description": "Column name of the list reply."
          },
          "comparison": {
            "description": "Default like.",
            "type": "string",
            "enum": [
              "eq",
              "like",
              "gt",
              "lt"
            ]
          },
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "number"
              },
              {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 200
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            ],
            "description": "Value, or an array of values (any matches)."
          }
        },
        "required": [
          "field",
          "value"
        ]
      }
    },
    "start": {
      "description": "Index of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows to return, 1-500 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_order(id)

One order (invoice, quote, purchase document) by id, with its items, totals and status. GET /order/read.json.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The order id (from cashctrl_list_orders)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_order_categories(type, fiscal_period_id)

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.

输入模式

{
  "type": "object",
  "properties": {
    "type": {
      "description": "SALES (default) or PURCHASE categories.",
      "type": "string",
      "enum": [
        "SALES",
        "PURCHASE"
      ]
    },
    "fiscal_period_id": {
      "description": "Fiscal period id (cashctrl_list_fiscal_periods); default is the current period.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_persons(category_id, only_customers, only_vendors, only_employees, only_active, ...)

Customers, vendors, employees and other contacts (name, company, number, roles, addresses). GET /person/list.json.

输入模式

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only this person category."
    },
    "only_customers": {
      "description": "Only customers.",
      "type": "boolean"
    },
    "only_vendors": {
      "description": "Only vendors.",
      "type": "boolean"
    },
    "only_employees": {
      "description": "Only employees.",
      "type": "boolean"
    },
    "only_active": {
      "description": "Only active people.",
      "type": "boolean"
    },
    "query": {
      "description": "Full-text search.",
      "type": "string",
      "maxLength": 200
    },
    "sort": {
      "description": "Column to sort by (a column name of the list reply; each list has its own default).",
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$"
    },
    "dir": {
      "description": "Sort direction (each list has its own default).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "filter": {
      "description": "Column filters, all must match (AND).",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$",
            "description": "Column name of the list reply."
          },
          "comparison": {
            "description": "Default like.",
            "type": "string",
            "enum": [
              "eq",
              "like",
              "gt",
              "lt"
            ]
          },
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "number"
              },
              {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 200
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            ],
            "description": "Value, or an array of values (any matches)."
          }
        },
        "required": [
          "field",
          "value"
        ]
      }
    },
    "start": {
      "description": "Index of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows to return, 1-500 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_person(id)

One person or company by id, with addresses, contact data and bank accounts. GET /person/read.json.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The person id (from cashctrl_list_persons)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_articles(category_id, only_active, only_restock, query, sort, ...)

Inventory articles (products and services) with number, name, price, stock and accounts. GET /inventory/article/list.json.

输入模式

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only this article category."
    },
    "only_active": {
      "description": "Only active articles.",
      "type": "boolean"
    },
    "only_restock": {
      "description": "Only articles that need restocking.",
      "type": "boolean"
    },
    "query": {
      "description": "Full-text search.",
      "type": "string",
      "maxLength": 200
    },
    "sort": {
      "description": "Column to sort by (a column name of the list reply; each list has its own default).",
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$"
    },
    "dir": {
      "description": "Sort direction (each list has its own default).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "filter": {
      "description": "Column filters, all must match (AND).",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$",
            "description": "Column name of the list reply."
          },
          "comparison": {
            "description": "Default like.",
            "type": "string",
            "enum": [
              "eq",
              "like",
              "gt",
              "lt"
            ]
          },
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "number"
              },
              {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 200
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            ],
            "description": "Value, or an array of values (any matches)."
          }
        },
        "required": [
          "field",
          "value"
        ]
      }
    },
    "start": {
      "description": "Index of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows to return, 1-500 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_article(id)

One inventory article by id. GET /inventory/article/read.json.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The article id (from cashctrl_list_articles)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_salary_statements(person_id, fiscal_period_id, only_open, only_overdue, query, ...)

Payroll statements (employee, date, status, gross and net amounts), newest first. Sensitive personal data. GET /salary/statement/list.json.

输入模式

{
  "type": "object",
  "properties": {
    "person_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only statements of this employee (cashctrl_list_persons)."
    },
    "fiscal_period_id": {
      "description": "Fiscal period id (cashctrl_list_fiscal_periods); default is the current period.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "only_open": {
      "description": "Only open (not yet paid) statements.",
      "type": "boolean"
    },
    "only_overdue": {
      "description": "Only statements past their payment date.",
      "type": "boolean"
    },
    "query": {
      "description": "Full-text search.",
      "type": "string",
      "maxLength": 200
    },
    "sort": {
      "description": "Column to sort by (a column name of the list reply; each list has its own default).",
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.]{0,59}$"
    },
    "dir": {
      "description": "Sort direction (each list has its own default).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "start": {
      "description": "Index of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows to return, 1-500 (default 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_salary_statement(id)

One payroll statement by id, with its salary items. Sensitive personal data. GET /salary/statement/read.json.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The statement id (from cashctrl_list_salary_statements)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_fiscal_periods

All fiscal periods (id, name, start, end, current flag). The id is the fiscal_period_id of the other tools. GET /fiscalperiod/list.json.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_tax_codes

The VAT tax codes (id, code, name, rates). The id is the tax_id of the write tools. GET /tax/list.json.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_sequence_numbers

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.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_list_currencies

The currencies set up in CashCtrl with their exchange rates. GET /currency/list.json.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_report_tree

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.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢cashctrl_get_report_data(element_id, fiscal_period_id, start_date, end_date)

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.

输入模式

{
  "type": "object",
  "properties": {
    "element_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The report element id (from cashctrl_get_report_tree)."
    },
    "fiscal_period_id": {
      "description": "Fiscal period id (cashctrl_list_fiscal_periods). It replaces start_date and end_date.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "start_date": {
      "description": "Start of the period, yyyy-mm-dd.",
      "type": "string"
    },
    "end_date": {
      "description": "End of the period, yyyy-mm-dd.",
      "type": "string"
    }
  },
  "required": [
    "element_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cashctrl_create_journal_entry(date, title, debit_account_id, credit_account_id, amount, ...)

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.

输入模式

{
  "type": "object",
  "properties": {
    "date": {
      "description": "Booking date, yyyy-mm-dd (CashCtrl uses today when omitted).",
      "type": "string"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 250,
      "description": "Description of the entry (max 250 characters)."
    },
    "debit_account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Debit account id (cashctrl_list_accounts). For a simple entry."
    },
    "credit_account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Credit account id (cashctrl_list_accounts). For a simple entry."
    },
    "amount": {
      "description": "Amount of a simple entry, for example 125.50.",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000000
    },
    "items": {
      "description": "Lines of a collective entry. Use it instead of debit_account_id, credit_account_id and amount.",
      "minItems": 2,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Account id."
          },
          "debit": {
            "description": "Amount on the debit side; give debit or credit.",
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000000
          },
          "credit": {
            "description": "Amount on the credit side; give debit or credit.",
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000000
          },
          "description": {
            "description": "Description of this line.",
            "type": "string",
            "maxLength": 250
          },
          "tax_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Tax code id (cashctrl_list_tax_codes)."
          }
        },
        "required": [
          "account_id"
        ]
      }
    },
    "tax_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Tax code id of a simple entry (cashctrl_list_tax_codes)."
    },
    "reference": {
      "description": "Receipt or reference text (max 100).",
      "type": "string",
      "maxLength": 100
    },
    "sequence_number_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Sequence number that generates the reference (cashctrl_list_sequence_numbers)."
    },
    "associate_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The person this entry belongs to (cashctrl_list_persons)."
    }
  },
  "required": [
    "title"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cashctrl_delete_journal_entries(ids)

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.

输入模式

{
  "type": "object",
  "properties": {
    "ids": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991,
        "description": "A journal entry id (cashctrl_list_journal)."
      },
      "description": "1-20 journal entry ids."
    }
  },
  "required": [
    "ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cashctrl_create_order(category_id, associate_id, date, items, status_id, ...)

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.

输入模式

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Order category id (cashctrl_list_order_categories), for example the Invoice category."
    },
    "associate_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The customer or vendor (cashctrl_list_persons)."
    },
    "date": {
      "type": "string",
      "description": "Document date, yyyy-mm-dd."
    },
    "items": {
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Revenue account id (sales) or expense account id (purchase), from cashctrl_list_accounts."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 250,
            "description": "Item name."
          },
          "unit_price": {
            "type": "number",
            "minimum": -1000000000000,
            "maximum": 1000000000000,
            "description": "Price of one unit."
          },
          "quantity": {
            "description": "Quantity (default 1).",
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000
          },
          "tax_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Tax code id (cashctrl_list_tax_codes)."
          },
          "unit_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Unit id (pieces, hours; from the units of the inventory)."
          },
          "description": {
            "description": "Item description.",
            "type": "string",
            "maxLength": 2000
          },
          "article_nr": {
            "description": "Article number.",
            "type": "string",
            "maxLength": 100
          },
          "inventory_id": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "description": "Inventory article id (cashctrl_list_articles)."
          },
          "discount_percentage": {
            "description": "Discount of this item in percent.",
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "account_id",
          "name",
          "unit_price"
        ]
      },
      "description": "1-200 order items."
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Status id (cashctrl_list_order_categories). Default: the first status of the category."
    },
    "description": {
      "description": "Description of the document (max 200).",
      "type": "string",
      "maxLength": 200
    },
    "due_days": {
      "description": "Days until payment is due.",
      "type": "integer",
      "minimum": 0,
      "maximum": 3650
    },
    "nr": {
      "description": "Order number. Leave empty to use the sequence number of the category.",
      "type": "string",
      "maxLength": 50
    },
    "sequence_number_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Sequence number for the order number (cashctrl_list_sequence_numbers)."
    },
    "account_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Debtors or creditors account id; default from the category."
    },
    "language": {
      "description": "Language of the document.",
      "type": "string",
      "enum": [
        "DE",
        "EN",
        "FR",
        "IT"
      ]
    },
    "discount_percentage": {
      "description": "Discount of the whole order in percent.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "category_id",
    "associate_id",
    "date",
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cashctrl_update_order_status(ids, status_id)

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.

输入模式

{
  "type": "object",
  "properties": {
    "ids": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991,
        "description": "An order id (cashctrl_list_orders)."
      },
      "description": "1-20 order ids."
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The new status id (from the statuses of the order category, cashctrl_list_order_categories)."
    }
  },
  "required": [
    "ids",
    "status_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cashctrl_delete_orders(ids)

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.

输入模式

{
  "type": "object",
  "properties": {
    "ids": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991,
        "description": "An order id (cashctrl_list_orders)."
      },
      "description": "1-20 order ids."
    }
  },
  "required": [
    "ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴cashctrl_create_person(company, first_name, last_name, is_customer, is_vendor, ...)

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.

输入模式

{
  "type": "object",
  "properties": {
    "company": {
      "description": "Company name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "first_name": {
      "description": "First name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "last_name": {
      "description": "Last name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "is_customer": {
      "description": "Mark as customer.",
      "type": "boolean"
    },
    "is_vendor": {
      "description": "Mark as vendor.",
      "type": "boolean"
    },
    "nr": {
      "description": "Person number, for example the customer number.",
      "type": "string",
      "maxLength": 50
    },
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Person category id."
    },
    "language": {
      "description": "Language of documents for this person.",
      "type": "string",
      "enum": [
        "DE",
        "EN",
        "FR",
        "IT"
      ]
    },
    "vat_uid": {
      "description": "VAT number (UID), for example CHE-123.456.789 MWST.",
      "type": "string",
      "maxLength": 32
    },
    "addresses": {
      "description": "Addresses.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "MAIN",
              "INVOICE",
              "DELIVERY",
              "OTHER"
            ],
            "description": "Address type."
          },
          "address": {
            "description": "Street and number; may have several lines.",
            "type": "string",
            "maxLength": 500
          },
          "zip": {
            "description": "Postal code.",
            "type": "string",
            "maxLength": 20
          },
          "city": {
            "description": "City.",
            "type": "string",
            "maxLength": 100
          },
          "country": {
            "description": "Country as a 3-letter code, for example CHE, DEU, AUT.",
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          }
        },
        "required": [
          "type"
        ]
      }
    },
    "contacts": {
      "description": "E-mail addresses, phone numbers and websites.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "EMAIL_INVOICE",
              "EMAIL_WORK",
              "EMAIL_PRIVATE",
              "PHONE_WORK",
              "PHONE_PRIVATE",
              "MOBILE_WORK",
              "MOBILE_PRIVATE",
              "WEBSITE",
              "OTHER"
            ],
            "description": "Kind of contact data."
          },
          "address": {
            "type": "string",
            "minLength": 1,
            "maxLength": 250,
            "description": "The e-mail address, phone number or URL."
          }
        },
        "required": [
          "type",
          "address"
        ]
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本28 个工具