Docs

Everything you need to build on AgenticBooks.

AgenticBooks for AI agents

How an agent opens an account, connects financial sources, and reads clean double-entry books over MCP — and what you, the human, actually approve. The machine-readable version lives at /skills.md.

Quickstart: zero to connected books, three steps

Any agent that can make HTTP calls can open an account. It starts the handshake, you approve it from your inbox, and it collects its own scoped key — you never copy-paste a credential.

1 · The agent starts the signup

POST https://api.agenticbooks.ai/agent/signup
{ "email": "you@company.com",
  "agent_name": "Nightly bookkeeping agent",
  "idempotency_key": "<uuid the agent generates>" }

→ 200 { "token", "user_code", "expires_at", "retry_after_seconds" }

2 · You approve — one email, one code

You get an email from approve@mail.agenticbooks.ai. The link opens an approval page where you sign in, type the short code your agent displayed (e.g. GHK-42P), and accept the Terms in the same click. That's your whole job — about fifteen seconds.

3 · The agent collects its key

GET https://api.agenticbooks.ai/agent/auth/{token}     (poll every retry_after_seconds)

→ { "status": "ready", "key": "ab_..." }   shown exactly once, never stored

# then, over MCP:
POST https://mcp.agenticbooks.ai/mcp
Authorization: Bearer ab_...
→ call get_onboarding_status → connect providers → read the books

From there the agent drives the onboarding loop: get_onboarding_status tells it what's connected and the one next step, it asks you for one credential at a time, and it verifies each connection with a real read.

What you're actually approving

The approval page exists so that nothing happens without you. Four things are true by construction:

GuaranteeHow it works
The request provably came from your agentThe page demands the short code your agent displayed to you. A phishing email can look identical — but its sender has no code. No code, no approval. If you weren't expecting the email, close it; the request expires on its own in ~15 minutes.
The key can read and classify — not move moneyThe agent's key carries mcp:read and mcp:approve scopes: it reads the books and resolves the review queue. Provider credentials it connects are read-only by design; there is no payment or transfer capability anywhere in the surface.
You can kill it any timeThe key appears on your integrations page like any other and revokes with one click. Revocation is immediate.
Everything is on the recordThe approval, the terms acceptance, every credential change, and every classification the agent makes land in an append-only audit trail.

The key itself is minted the moment your agent collects it and exists in plaintext exactly once, in that response — AgenticBooks stores only a hash, the same custody rule as your provider credentials (vault-encrypted, never logged, never echoed).

What your agent will ask you for

Every provider credential is created by you, on that provider's own dashboard, always read-only. The agent asks for exactly one thing at a time and connects it — you never paste anything into a chat that stores it.

ProviderYour part
MercuryYour agent asks you for a read-only API token (Mercury dashboard → Settings → API Tokens) and connects it itself via the connect_mercury tool.
MeowA read-only API key (Meow dashboard → API keys) — connected by the agent via connect_meow. Read keys need no IP allowlist.
StripeOne click by you: Integrations → Stripe → Connect (Stripe OAuth) at app.agenticbooks.ai. Your agent verifies the connection afterwards.
QuickBooksOptional ledger sync. One click: Integrations → QuickBooks → Connect (Intuit OAuth). AgenticBooks works fully without a ledger.
RevenueCatOn the integrations page: add the shown webhook URL in RevenueCat (Project Settings → Integrations → Webhooks), set an Authorization secret there, and paste that secret back.
Revolut BusinessA bank-side Open Banking consent — read-only, official rails. Integrations → Revolut → Connect.

Connecting both Stripe and RevenueCat is supported — the platform automatically suppresses the RevenueCat-side duplicate that web billing would otherwise create. One ordering note: if RevenueCat was connected first, importing Stripe history can re-book that overlap window — the agent runbook says to check with you before running that import. If a step ever carries a warning, your agent relays it verbatim before proceeding.

The receipts inbox

Every organization gets a permanent forwarding address of the form {org}@receipts.agenticbooks.ai. Receipts and invoices forwarded there are stored durably, AI-extracted (vendor, amount, date, invoice number), and matched against bank transactions. An unambiguous same-currency amount-and-date match attaches automatically only when the sender also passes DKIM and has previously confirmed evidence in the org; anything else — multiple candidates, a cross-currency amount, a failed sender check, a first-time sender — is held as an open proposal instead of guessed. Documents that arrive before their bank transaction re-match automatically once it lands.

Agents work the held pool with list_documents (open proposals carry their candidate transactions) and resolve them with attach_document. Attaching is evidence-only: it never creates or changes a booking.

The MCP tool surface

Endpoint: https://mcp.agenticbooks.ai/mcp (streamable HTTP; bearer key or the OAuth connector). Every tool is bound to the key's organization — no org IDs to manage, and a key for one org can never read another.

Read the books

ToolWhat it returns
get_financial_summaryOne-call snapshot: current-month P&L, balances across providers, review-queue count, ledger-sync health.
get_books_statusThe state of the books as one priority-laddered checklist — connections, review queue, documents, close, billing — plus the single next step.
get_pnl_reportIncome statement for any period.
get_account_balance / get_bank_balancesBalances per provider and per bank account.
get_transactionOne transaction end to end: source event, classification, journal lines, FX, attached documents, audit history.
get_unreviewed_events / get_pending_by_counterpartyThe classification review queue, raw and grouped.
list_documentsCaptured receipts and invoices with their match status — including open match proposals awaiting confirmation.
list_chart_accounts / list_counterparty_rules / list_suggested_transfers / get_audit_logChart of accounts, learned classification rules, transfer-match suggestions, and the append-only audit trail.
get_billing_statusThe org’s billing state. Never blocked — an agent can always ask it why other tools are failing.

Onboard & operate

ToolWhat it does
get_onboarding_statusThe onboarding loop driver: connected / pending / degraded per provider, plus the single next step.
connect_mercury / connect_meow (+ disconnects)Validate-then-store a pasted read-only credential; an invalid credential stores nothing. Matching disconnect tools disable a connection.
approve_classification / reclassify_entryResolve the review queue — every action lands in the audit trail.
create/update/delete_counterparty_ruleTeach recurring classifications.
confirm_transfer / reject_transferConfirm or reject suggested inter-account transfer matches.
attach_documentAttach a captured receipt to its transaction as evidence — confirm an ambiguous match or resolve a held document. Evidence only; it never creates or changes a booking.
add_chart_account / rename_chart_account / list_chart_accounts / set_chart_account_activeChart-of-accounts maintenance.
close_period / reimport_historicalMonth-end close with FX revaluation; historical re-import.
Point an agent at it

The full runbook — written for the agent itself — is one URL. Hand it over and ask for your books.