Skip to main content
Glama

Set up the books

books_setup

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), "minimal" (only the eight accounts the books post to on their own), or a country's standard numbers: "skr03" or "skr04" for Germany (DATEV's charts, the ones German tax advisers work in; ask the adviser which), so accounts the books make later take that chart's numbers too and a DATEV export needs no mapping. 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 account with the opening_balances role (3900; 9000 on the German charts), unpaid invoices and bills from before included. vat_basis says when VAT on the business's own sales is owed: "invoice" (by invoice date, the default) or "payment" (as customers pay: Germany's Ist-Versteuerung, §20 UStG, which the tax office allows on request), for invoices issued from vat_basis_from on. Entries are booked the same either way; the tax and vat_return reports then count each such invoice's VAT by its payments. An invoice keeps the rule of its own date, so a switch counts nothing twice. 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. Costs $0.001 per call; nothing if it fails.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "books_setup"
  }
}

Input Schema

NameRequiredDescriptionDefault
chartNoOnly on the first call.
ratesNoCurrency -> one unit of it in the base currency, e.g. {"AED": "0.2486"}; null removes one. Used instead of the ECB's rate.
currencyNoISO 4217, e.g. "EUR".
vat_basisNoWhen VAT on sales is owed. Default "invoice".
start_dateNoThe first day the books cover.
post_invoicesNo
vat_basis_fromNoThe first invoice date vat_basis holds for. Needed once something is booked; before that, default the start date. Not in a locked or closed period.
payment_accountsNoPayment method -> account code, e.g. {"card": "1020"}; null goes back to the default. Methods: bank_transfer, card, cash, check, online, other.
fiscal_year_startNoThe month the fiscal year starts. Default 1 (January).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / chart / enum
      Previous value: -[
      -  "starter",
      -  "minimal"
      -]New value: +[
      +  "starter",
      +  "minimal",
      +  "skr03",
      +  "skr04"
      +]
    • addedInput schema / properties / vat_basis
      Added value: +{
      +  "description": "When VAT on sales is owed. Default \"invoice\".",
      +  "enum": [
      +    "invoice",
      +    "payment"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / vat_basis_from
      Added value: +{
      +  "description": "The first invoice date vat_basis holds for. Needed once something is booked; before that, default the start date. Not in a locked or closed period.",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the generic annotations, it discloses that currency cannot change once something is booked, how chart choice affects future account numbering, how opening balances should be entered, how VAT basis applies to invoices, and that post_invoices makes sent invoices and bills post automatically. It also states the per-call cost and failure policy, which is valuable behavioral context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and first-call requirements are front-loaded, and nearly every sentence carries operational detail. However, it is a very dense single paragraph with multiple nested clauses, so structure could be improved even though little is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 9-parameter setup tool with no output schema, the description covers most parameters and their behavioral consequences thoroughly. It omits explicit mention of fiscal_year_start and does not fully enumerate which settings remain changeable after setup, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is high, the description adds substantial meaning: it explains chart enum choices with account-number ranges and German DATEV relevance, currency as the immutable base for reports, start_date defaults and opening-balance treatment, vat_basis timing rules including Ist-Versteuerung, vat_basis_from, post_invoices behavior, payment_accounts defaults, and rates as standing exchange rates. This goes well beyond the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Start the business's double-entry books, or change their settings." It clearly distinguishes initial setup from subsequent settings changes and names concrete artifacts such as the chart of accounts and opening balances.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational guidance: the first call needs currency, chart is first-call-only, and start_date defaults to the fiscal-year start. It does not explicitly compare against siblings like books_save_accounts or books_lock, but the setup/change-settings context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources