Bookkeeping

Set up the books

books_setup · Changes data · Markdown

Starts the business's double-entry books (currency, start date, chart of accounts) or changes their settings.

$0.001 a call

From your agent’s balance. A call that fails costs nothing.

An example

Start our books in euros from January 1, with the standard chart of accounts.

Your agent callsbooks_setup$0.001 a call

The example business is Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff. The reply is the one the tool really gives.

With these arguments
{
  "currency": "EUR",
  "start_date": "2026-01-01",
  "chart": "starter",
  "fiscal_year_start": 1
}
What comes back
{
  "books": {
    "currency": "EUR",
    "start_date": "2026-01-01",
    "fiscal_year_start_month": 1,
    "locked_through": null,
    "closed_through": null,
    "post_invoices": true,
    "roles": {
      "cash": "1000",
      "bank": "1010",
      "receivable": "1100",
      "inventory": "1200",
      "input_tax": "1300",
      "payable": "2000",
      "sales_tax": "2100",
      "retained_earnings": "3200",
      "opening_balances": "3900",
      "sales": "4000",
      "cost_of_sales": "5000",
      "exchange": "7900"
    },
    "payment_accounts": {},
    "standing_rates": {},
    "taxes": [],
    "entries": 0,
    "last_entry": null,
    "bank_lines_to_match": 0,
    "today": "2026-10-14",
    "history": [
      {
        "at": "2026-10-14T08:00:00+00:00",
        "event": "created",
        "detail": "EUR, from 2026-01-01",
        "by": "key 4101 (Pip)"
      }
    ]
  },
  "created": true,
  "accounts": [
    {
      "account": "1000",
      "name": "Cash",
      "type": "asset",
      "role": "cash",
      "description": null,
      "balance": "0.00",
      "archived": false
    },
    {
      "account": "1010",
      "name": "Bank",
      "type": "asset",
      "role": "bank",
      "description": null,
      "balance": "0.00",
      "archived": false
    }
  ],
  "posted_from_invoices": {
    "invoices": 0,
    "credit_notes": 0,
    "payments": 0,
    "voids": 0,
    "bills": 0,
    "bill_payments": 0,
    "bill_voids": 0,
    "credits": 0,
    "credit_refunds": 0
  }
}

Use it when

The business wants books kept, or its fiscal year, payment accounts or exchange rates change.

What it does

Start the business's double-entry books, or change their settings. The first call needs currency (the base currency of every report; it can't change once something is booked) and makes the chart: "starter" (cash, bank, receivables, tax, equity, sales and common costs, numbered 1000-8000) or "minimal" (only the eight accounts the books post to on their own). The books start on start_date (default: the start of this fiscal year); enter what the business owned and owed that day as one entry against the opening balances account (3900), unpaid invoices and bills from before included. With post_invoices (default on), sent invoices and supplier bills, their payments and voids post on their own, those from start_date on right away. payment_accounts says where payments land per method, in and out (default: the bank account, cash in the cash account); rates are standing exchange rates for currencies the European Central Bank doesn't publish.

What comes back

books: the settings (currency, start date, fiscal year, locked period, roles, where payments land, taxes and counts), created, the accounts made, and posted_from_invoices: what was posted from invoices and bills sent before. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
currencystringISO 4217, e.g. "EUR". Matches ^[A-Za-z]{3}$.
start_datestringThe first day the books cover. Matches ^\d{4}-\d{2}-\d{2}$.
chartstringOnly on the first call. One of: starter,minimal.
fiscal_year_startintegerThe month the fiscal year starts. Default 1 (January). 1 to 12.
post_invoicesboolean
payment_accountsobjectPayment method -> account code, e.g. {"card": "1020"}; null goes back to the default. Methods: bank_transfer, card, cash, check, online, other.
ratesobjectCurrency -> one unit of it in the base currency, e.g. {"AED": "0.2486"}; null removes one. Used instead of the ECB's rate.

The call

Over MCP, call books_setup on https://api.conecto.chat/mcp/books. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/books_setup \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"currency":"EUR","start_date":"2026-01-01","chart":"starter","fiscal_year_start":1}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
invalid_input400The first call has no currency, the chart was given again, or a payment account is not an asset account.Fix what the message names.
currency_fixed409Entries are booked, so the base currency stays.Keep the currency.
start_fixed409Entries are booked, so the start date stays.Keep the start date.
period_locked409Invoices, bills or payments to post fall in a locked period.Unlock it with books_lock, or leave post_invoices as it is.
no_account409A bill line to post has no expense or asset account.Give the bill line an account with purchasing_update_bill.
not_found404No account, tax, entry or file of the books has that code, name or id.Check the codes with books_list_accounts and the taxes with books_get.
archived409The account or tax is archived.Use another one, or un-archive it with books_save_accounts.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md