BareBones + AI agents

The API was built with agents in mind. Hand an LLM a single tool — “add a ledger entry” — and it can read a receipt photo, pick the right category, and post the line, all on its own.

tool definition
{
  "name": "add_ledger_entry",
  "description": "Add one line to the ledger.",
  "input_schema": {
    "type": "object",
    "required": ["amount", "type", "category"],
    "properties": {
      "amount":   { "type": "number" },
      "type":     { "enum": ["INCOME","EXPENSE","CHARGE"] },
      "category": { "type": "string" },
      "property_id": { "type": "integer" }
    }
  }
}

What you'll need

The call behind the tool

POST/api/v1/ledger

Authorization: Bearer <your_api_key>

Create a key on your dashboard. Full reference in the API docs.

FieldTypeNotes
amount*numberDollar amount, e.g. 142.50
type*enumINCOME, EXPENSE, or CHARGE
category*enumRENT, UTILITIES, REPAIRS, INSURANCE, TAXES, …
property_idintegerWhich property (optional)
unit_idintegerSpecific unit; omit = property-wide
transaction_datestringYYYY-MM-DD; defaults to today
reason_descriptionstringFree-text note for the line
statusenumPAID or UNPAID (default UNPAID; ignored for INCOME)

* required

Step by step

Give the agent one job

The tool schema mirrors the API, so the model already knows how to fill it in.

    1

    Create an API key

    Generate one under API keys. Keep it in your agent’s server-side environment, never in a prompt.

    2

    Define one tool

    Register a function like add_ledger_entry whose schema matches the ledger fields (see the snippet). Any function-calling model — Claude, GPT, local — works.

    3

    Run the tool call as a POST

    When the model calls the tool, your handler forwards its arguments to POST /api/v1/ledger with the Bearer header.

    4

    Let it read the source

    Feed the agent a receipt photo or a bill email. It extracts the amount, chooses a category from the allowed list, and calls the tool.

    5

    Return the result

    Pass the 201 response back so the agent can confirm “logged $142.40 to Utilities” — and correct itself if a field was wrong.

Keep the human in the loop. For anything ambiguous, have the agent post with status: UNPAID or flag low-confidence lines for review — so a misread receipt is a quick fix, not a silent error.

Get your API key and wire it up.

Create a key on your dashboard, point your tool at POST /api/v1/ledger, and your books start keeping themselves.