Connect with Claude
Talk to your bookkeeping. Connect Accounted to Claude (claude.ai, Claude Desktop, or Claude Code) and ask questions, categorise transactions, and prepare a momsdeklaration in plain language: every write still stages for your approval first.
Accounted ships an MCP server that exposes the full bookkeeping engine (90+ tools) to any MCP client. The endpoint is:
https://app.gnubok.se/api/extensions/ext/mcp-server/mcp
There are two ways to connect, depending on your client. Both reach the same tools and the same approval model: read tools answer immediately, write tools (categorise, mark paid, create voucher, year-end) stage a pending operation that you confirm in chat or in the /pending web UI before anything is booked.
Path A: claude.ai / Claude Desktop custom connector (OAuth 2.1)
Best for most users. No API key to manage: you authorise Accounted the same way you'd authorise any OAuth app.
- In claude.ai (Settings → Connectors) or Claude Desktop (Settings → Connectors → Add custom connector), choose Add custom connector.
- Paste the connector URL:
(The "?client=claude-connector" suffix is telemetry-only: it lets Accounted see you connected via claude.ai/Desktop. It changes nothing about behaviour or scopes; drop the query string if you prefer.)https://app.gnubok.se/api/extensions/ext/mcp-server/mcp?client=claude-connector - Claude opens the Accounted OAuth 2.1 consent screen. Sign in and pick the company you want Claude to act on.
- On the consent screen you grant read-only scopes by default (list invoices, read reports, compute VAT). Write scopes (create invoice, categorise, book vouchers, run year-end) are listed separately and must be ticked explicitly: leave them unchecked for a read-only review session.
- Approve. Claude now lists the Accounted tools and you can start asking questions.
Because the consent is per-company and scoped, you can connect a read-only key for a reviewer and a separate write-enabled connection for day-to-day bookkeeping.
Path B: npx gnubok-mcp with an API key (stdio bridge)
Best for Claude Desktop on a machine where you'd rather use a long-lived API key than the OAuth flow, or for scripting.
- Mint an API key in the Accounted dashboard at /settings/api. Use a
gnubok_sk_test_*key against the sandbox while you evaluate; switch tognubok_sk_live_*for real data. - Add the stdio bridge to your
claude_desktop_config.json:{ "mcpServers": { "gnubok": { "command": "npx", "args": ["gnubok-mcp"], "env": { "GNUBOK_API_KEY": "gnubok_sk_test_...", "GNUBOK_CLIENT": "claude-desktop" } } } } - Restart Claude Desktop. The bridge proxies stdio JSON-RPC to the hosted MCP endpoint over HTTPS; the key carries the scopes you granted it at mint time.
The key's scopes gate exactly which tools are callable: a key without write scopes can read reports and ledgers but cannot stage a booking.
Try these prompts
All three run against the deterministic sandbox seed (use a gnubok_sk_test_* key or pick the sandbox company on the OAuth consent screen). They exercise the read path end-to-end without booking anything.
- "Show my uncategorized bank transactions and suggest categories."
Claude calls
gnubok_list_uncategorized_transactionsthengnubok_suggest_categoriesand walks you through the proposals. Approving one stages agnubok_categorize_transactionpending operation: nothing is booked until you confirm. - "Which invoices are overdue?"
Claude calls
gnubok_get_ar_ledger(kundreskontra) and lists outstanding customer invoices with aging. - "Compute my VAT report for this quarter and tell me if I can close it."
Claude calls
gnubok_get_vat_reportfor the momsdeklaration rutor, thengnubok_vat_close_checkto scan for blockers (uncategorised rows, unapproved supplier invoices, missing receipts on expenses ≥ 4 000 kr: the tool's high-value heuristic; BFL requires underlag for every affärshändelse regardless of amount) and reportsready_to_close.
10-minute reviewer test
A quick end-to-end pass to confirm the connection works before you trust it with real data. Run the steps in order; each lists what you do and what you should see.
- Connect. Use Path A (read-only scopes only) or Path B with a
gnubok_sk_test_*key. → Claude lists the Accounted tools (titles like List Uncategorized Transactions, VAT Declaration (Momsdeklaration)). - Confirm the company. Ask "Which company am I connected to?" → Claude names the sandbox company (e.g. Sandlådan Konsult).
- Run prompt 1 (uncategorized + suggest categories). → A list of uncategorised rows plus category suggestions; no booking happens.
- Run prompt 2 (overdue invoices). → At least one overdue customer invoice with aging.
- Run prompt 3 (VAT report + can I close). → Momsdeklaration rutor returned;
vat_close_checkreports a non-empty blocker list (uncategorised transactions, an unapproved leverantörsfaktura, and a high-value business expense without a receipt). - Stage a write. Ask Claude to categorise one transaction. → Claude stages a pending operation and asks you to confirm: the booking does not post until you approve in chat or at /pending.
If every step matches, the connector is wired correctly and the approval model is enforced.
Support
Stuck connecting, or seeing an unexpected blocker? Use the in-app support form at /help: it routes straight to the product team with your company context attached. Include the client (claude.ai / Desktop / Code), the path you used (A or B), and the tool name from any error message.