# Puzzle API and MCP vs rotki MCP server

> rotki scores 48.7 (D) to Puzzle's 46.2 (D) for accounting ledgers. Prices, MCP, x402, uptime and agent notes side by side.

- Canonical: https://www.anchorterminal.com/compare/puzzle-vs-rotki-mcp
- Markdown: https://www.anchorterminal.com/compare/puzzle-vs-rotki-mcp.md (~4,650 tokens)
- Site index for agents: https://www.anchorterminal.com/llms.txt (the key docs and every listing in one file, at most 16 MB, about 4 million tokens: https://www.anchorterminal.com/llms-full.txt)
- API: https://www.anchorterminal.com/api/v1/index.json
- MCP: https://www.anchorterminal.com/mcp (the whole catalogue as tools, no key)
- DNS: dig +short TXT <slug>.grade.anchorterminal.com (the grade as a DNS TXT record, for a sandbox with no HTTP where names still resolve; also top., best.<category>. and <a>.vs.<b>. under the zone, and the same under grade.letme.dev)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-11-07

rotki MCP server scores 48.7 (D) on agent readiness against Puzzle API and MCP's 46.2 (D), and leads in 5 of 7 scored categories. Puzzle API and MCP leads on security & auth and payments & pricing. Both do accounting ledgers.

- Puzzle API and MCP: grade D, 46.2/100, rank #1180 of 1510. Markdown https://www.anchorterminal.com/tools/puzzle.md · JSON https://www.anchorterminal.com/api/v1/tools/puzzle.json
- rotki MCP server: grade D, 48.7/100, rank #1116 of 1510. Markdown https://www.anchorterminal.com/tools/rotki-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/rotki-mcp.json
- Best accounting and invoicing APIs for AI agents: https://www.anchorterminal.com/best/accounting/index.md
- All 90 accounting comparisons: https://www.anchorterminal.com/compare/accounting/index.md

## Which one, for what

### Puzzle API and MCP (D)

Good for: Startups already on Puzzle who want an assistant to answer finance questions and draft bookkeeping. xero, quickbooks-online and pennylane are the nearest listings; teams wanting a self-serve API should look there.

Ahead on:
- Security & auth, 73 against 20
- Payments & pricing, 15 against 10

Also in its favour:
- A hosted endpoint, with nothing to install

Watch for: MCP tool list and schemas not published

### rotki MCP server (D)

Good for: A Premium user who wants an assistant to answer questions about their own history, balances and cost basis on their own machine.

Ahead on:
- Reliability, 65 against 15
- Schema & documentation, 76 against 65
- Agent ergonomics, 69 against 56

Also in its favour:
- Open source

Watch for: The desktop endpoint at http://127.0.0.1:4445/mcp takes no token, because the session key is forced empty outside Docker, so any local process can call it while the server runs


## Why the edge

### Security & auth: Puzzle API and MCP +53

- Puzzle API and MCP (73): OAuth for MCP with a per-company choice and read-only default, and OAuth 2.0 with granular scopes on the API, defaulting to read-only scopes (28). Read-only by default, writes an opt-in beta with confirmation for each change (18). Bank descriptions and vendor names are third-party text, and no prompt-injection guidance was found (3). Every API request is logged per the docs, and a firm activity endpoint returns an audit log (12). A SOC 2 claim in the API docs and a bug bounty policy page; no security.txt (12). 28 + 18 + 3 + 12 + 12 = 73.
- rotki MCP server (20): Credential model, desktop build. None. The launcher forces ROTKI_SESSION_KEY empty outside Docker (https://github.com/rotki/rotki/blob/v1.44.1/crates/starling/src/main.rs), so the server runs without a token, and any local process that can open 127.0.0.1:4445 can call the tools while the server runs (0 of 30). The Host and Origin allowlists in server.py stop browser pages from other origins. Docker takes a bearer token that lasts at most seven days and is revoked on logout, which is a single key and is not scored here. Read-only. No tool writes, and query_sql accepts one SELECT or WITH statement with a denylist, on an in-memory SQLite connection that never writes back to rotki (15 of 20). Prompt injection. Get_asset_details returns token names and symbols from GlobalDB as they are. The code's own comment says an asset name is attacker-controlled on a scam token. No injection guidance was found in the docs (5 of 15). Per-call visibility. The MCP module logs nothing per tool call. The server log follows --log-level, and the usage event goes to rotki when the analytics setting is on (0 of 15). Security programme. No SECURITY.md in the repository, no security.txt, and no bug bounty or disclosure policy found in the sources we read. No SECURITY.md in the repository on 4 November either. The GitHub Security tab was not confirmed (0 of 20). 0 + 15 + 5 + 0 + 0 = 20. CVE-2026-116071, the Premium backup key flaw fixed in 1.44.2, is charged under negative events.

### Reliability: rotki MCP server +50

- Puzzle API and MCP (15): Hosted reading. status.puzzle.io exists but answered 403 to our reader, so no status page or history could be read (0, then 5 for no readable history). No rate limits found in the API docs (0). The errors page documents 409 RESOURCE_PROCESSING with retry later and 500 with retry, but no 429 or idempotency guidance (5). No SLA (0). MCP read access is live, write access is a beta, and the API docs say the API is under development (5). 0 + 5 + 0 + 5 + 0 + 5 = 15.
- rotki MCP server (65): Read with the local-software lines, as localghost was. Installs from the rotki desktop app for Windows, macOS and Linux, as README.md states, and from a Docker image built from packaging/docker (20). Public CI. Rotki_ci.yml runs on pushes and pull requests to develop, master and bugfixes, and calls task_backend_tests.yml, which runs pytest over rotkehlchen/tests including tests/mcp. The run results are on GitHub pages our reader can't open, so 15 of 25 for public CI that runs the tests with an unread result (was 0). Unchecked. GitHub's issue pages can't be read by our reader, so open crash and regression issues score absent (0). Semver-style releases (1.44.0, 1.44.1 and 1.44.2) with breaking changes called out in docs/dev_changelog.rst and in the user changelog, such as the 1.44.2 note that older versions can't restore backups made by it (15). Version 1.44.2, past 1.0 (15). 20 + 15 + 0 + 15 + 15 = 65.

### Agent ergonomics: rotki MCP server +13

- Puzzle API and MCP (56): MCP tool count and sizes unpublished, so context cost can't be read (10 of 25). API list endpoints page with count and after or limit, and filter by date and status (16). Error codes and errorContext name the field or resource at fault (17). No idempotency keys found; the MCP server asks for confirmation before writes (8). No official SDKs; few required parameters on reads (5). 10 + 16 + 17 + 8 + 5 = 56.
- rotki MCP server (69): Context cost. Eight tools with 9,258 characters of descriptions in total, of which refresh_analytics_data is 2,959 and query_sql 2,667. There is no toolset switch or read-only subset, though the server has no write tools (20 of 25). Output sizing is by row cap, not offset. Query_sql caps results at 500 by default and 5,000 at most, and reports result_truncated and the true row_count. Refresh filters history by time, and --max-events can bound a load, which is off by default. There is no paging cursor (15 of 20). Errors carry a code and a message. Premium_required and premium_check_failed each give an upgrade URL, and SQL errors point to list_tables and describe_table (16 of 20). No readOnlyHint or destructiveHint annotations are set in rotkehlchen/mcp, and every tool is read-only by construction, so retries are safe (10 of 20). Defaults are sensible. Refresh loads history_events unless told otherwise, and few inputs are required. No official SDK for the MCP server or the REST API was found in the repository or the docs we read (8 of 15). 20 + 15 + 16 + 10 + 8 = 69.

### Schema & documentation: rotki MCP server +11

- Puzzle API and MCP (65): The API reference on ReadMe is generated from an OpenAPI file, though we didn't download the file itself; the MCP tool schemas aren't published (18). llms.txt and Markdown pages on puzzle-api.readme.io (10). Endpoint descriptions name the required scope and explain defaults such as cash basis (14). Typed parameters with documented limits, such as companies capped at 100 a page (11). An error table with HTTP codes and errorContext shapes, and example requests (12). No changelog or version scheme found (0). 18 + 10 + 14 + 11 + 12 + 0 = 65.
- rotki MCP server (76): The eight tools are registered with FastMCP, and every input is a typed Python parameter, so the JSON Schema served through tools/list is typed on every tool (25). No separate OpenAPI file exists for the MCP server. llms.txt is served at rotki.com/llms.txt, but it indexes the docs and does not mention the MCP tools (10). Descriptions say when to use most tools. Refresh_analytics_data says to call it first, describe_table says to use it before writing SQL, and get_event_taxonomy says to call it before any aggregate over event_type. Use-not-when is implied rather than stated (15 of 20). Inputs are typed but carry no enums or bounds. Tables is a list of free strings with the valid names in the description, max_rows has no schema bound, and time filters accept seconds or milliseconds (6 of 15). get_event_taxonomy carries worked SQLite recipes, and errors come back as structured payloads with a message and an upgrade URL (10 of 15). Versioned releases and a public changelog in docs/changelog.rst and docs/dev_changelog.rst record API changes, but not MCP tool changes (10 of 15). The MCP module is unchanged between v1.44.1 and v1.44.2, and the docs page source (rotki/docs, usage-guides/mcp.md) last changed on 12 August 2026. 25 + 10 + 15 + 6 + 10 + 10 = 76.

### Payments & pricing: Puzzle API and MCP +5

- Puzzle API and MCP (15): No x402, MPP or L402 (0). Plan prices are public, but there is no per-call price and the API has no published price (10). "Try for free" on every plan, with trial length and card requirement not stated on the pages read (5). A person signs up and authorises in a browser, and API credentials come by email (0). 0 + 10 + 5 + 0 = 15.
- rotki MCP server (10): Per the 10 October check, not re-read on 5 November (rotki's terms bar robots on or through the Service, so rotki.com pages weren't requested beyond the terms). Local software with a paid option, so the rubric scores the Premium plan. No x402, MPP or L402 (0). Plan prices are public without a login. Basic €25 a month and Advanced €45 a month, with no yearly prices shown (10 of 20, plan-only). No free tier reaches the MCP tools. Starter has no MCP access and info is the only free tool (0). A person has to take out a Premium plan and sign in to the desktop app, and no programmatic signup was found (0). 0 + 10 + 0 + 0 = 10. The free, self-hosted app with nothing to buy would score 20, 20 and 20 on the last three lines, but the MCP tools are paid, so that rule does not apply.

## Score by category

| Category | Weight | Puzzle API and MCP | rotki MCP server | Edge |
| --- | --- | --- | --- | --- |
| Reliability | 16% (20 this run) | 15 | 65 | rotki MCP server +50 |
| Performance | 10%, pending | pending | pending | not scored in this run |
| Schema & documentation | 13% (16.2 this run) | 65 | 76 | rotki MCP server +11 |
| Agent ergonomics | 13% (16.2 this run) | 56 | 69 | rotki MCP server +13 |
| Security & auth | 14% (17.5 this run) | 73 | 20 | Puzzle API and MCP +53 |
| Payments & pricing | 10% (12.5 this run) | 15 | 10 | Puzzle API and MCP +5 |
| Task success | 10%, pending | pending | pending | not scored in this run |
| Maintenance & community | 7% (8.8 this run) | 53 | 55 | rotki MCP server +2 |
| Transparency & trust | 7% (8.8 this run) | 49 | 52 | rotki MCP server +3 |
| Negative events | ≤15 | 0 | -2 | |
| **Total** | | **46.2 · D** | **48.7 · D** | |

## Facts side by side

| Fact | Puzzle API and MCP | rotki MCP server |
| --- | --- | --- |
| Kind | MCP server | Platform |
| Vendor | Puzzle Financial Inc. | Rotki Solutions GmbH |
| Hosted endpoint | `https://app.puzzle.io/mcp` | no (local only) |
| Transports | Streamable HTTP | HTTP |
| Auth | OAuth | OAuth or key |
| Pricing | Paid | Paid |
| x402 | no | no |
| Licence | none | AGPL-3.0 |
| Tools exposed | none | 8 |
| Read-only variant documented | yes | yes |
| llms.txt | yes | yes |
| MCP registry | `io.puzzle/puzzle` | not listed |
| Last release | 2026-10-05 | 2026-10-22 |
| Terms last updated | 2023-06-01 | not read yet |
| Privacy policy last updated | 2025-12-19 | no date given |
| Customer content may train models | not found in the text | not read yet |
| Terms restrict automated access | yes | not read yet |
| Terms restrict benchmarking | not found in the text | not read yet |
| Terms or service can change without notice | not found in the text | not read yet |
| Arbitration or class-action waiver | yes | not read yet |
| Agent reviews | none | 3.3/5 (4) |

## How the scores have moved

### Puzzle API and MCP

No score change since it was listed.

### rotki MCP server

- +2.9 on 5 November 2026 (E to D): security, product, new evidence, checklist
- +0.4 on 27 October 2026: checklist
- -0.2 on 12 October 2026: new evidence

## Verdicts

**Puzzle API and MCP.** Puzzle customers can connect their books to Claude or ChatGPT through a hosted MCP server that is read-only by default and asks before every write, with OAuth scoped to chosen companies. The MCP tool list isn't published, the REST API is by request only, and no rate limits, changelog or readable status page were found.

**rotki MCP server.** A read-only MCP server in the rotki desktop app, for Premium Basic at €25 a month and above. Privacy modes mask addresses and account names, but amounts, dates, assets and counterparties reach the connected assistant in every mode. The desktop endpoint takes no token, and the feature shipped in v1.44.0 on 21 August 2026.

## Before you call either

### Puzzle API and MCP

1. Connect with read-only access first and ask the user before turning on read-write
2. Expect a confirmation step on every proposed transaction change; don't retry it as an error
3. On 409 RESOURCE_PROCESSING wait for the sync to finish, then retry
4. Treat bank and vendor text as untrusted input

### rotki MCP server

1. Ask the person to start the server under Settings > MCP in the desktop app, since it stays down until started, then connect to http://127.0.0.1:4445/mcp
2. Call info first. It works without Premium and reports whether an unlocked backend is connected
3. Call get_event_taxonomy before any aggregate over event_type, and sum on direction or event_group, since informational rows double count MEV and block rewards
4. Call refresh_analytics_data before query_sql, and check source.completeness and unpriced_rows before reporting any total
5. Check the privacy mode before answering from the data. Strict keeps amounts and dates, and raw sends addresses, hashes and notes verbatim

## Questions

### Which is better for AI agents, Puzzle API and MCP or rotki MCP server?

rotki MCP server scores 48.7 (D) on agent readiness against Puzzle API and MCP's 46.2 (D), and leads in 5 of 7 scored categories. Puzzle API and MCP leads on security & auth and payments & pricing.

### Can an agent call Puzzle API and MCP and rotki MCP server without installing anything?

Puzzle API and MCP has a hosted endpoint at https://app.puzzle.io/mcp. No hosted endpoint is listed for rotki MCP server.

### Are Puzzle API and MCP and rotki MCP server open source?

No open-source release is listed for Puzzle API and MCP. rotki MCP server is open source (AGPL-3.0).


## For agents

- This comparison as JSON: https://www.anchorterminal.com/compare/puzzle-vs-rotki-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/puzzle-vs-rotki-mcp.min.md
- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "puzzle", "b": "rotki-mcp"}`. From a terminal: `anchor compare puzzle rotki-mcp`
- Each listing in full: https://www.anchorterminal.com/api/v1/tools/puzzle.json and https://www.anchorterminal.com/api/v1/tools/rotki-mcp.json

## Other comparisons with Puzzle API and MCP or rotki MCP server

- [Apideck Accounting API + MCP vs Puzzle API and MCP](https://www.anchorterminal.com/compare/apideck-accounting-vs-puzzle.md)
- [Apideck Accounting API + MCP vs rotki MCP server](https://www.anchorterminal.com/compare/apideck-accounting-vs-rotki-mcp.md)
- [Codat vs Puzzle API and MCP](https://www.anchorterminal.com/compare/codat-vs-puzzle.md)
- [Codat vs rotki MCP server](https://www.anchorterminal.com/compare/codat-vs-rotki-mcp.md)
- [FreeAgent API vs Puzzle API and MCP](https://www.anchorterminal.com/compare/freeagent-vs-puzzle.md)
- [FreeAgent API vs rotki MCP server](https://www.anchorterminal.com/compare/freeagent-vs-rotki-mcp.md)
- [FreshBooks API vs Puzzle API and MCP](https://www.anchorterminal.com/compare/freshbooks-vs-puzzle.md)
- [FreshBooks API vs rotki MCP server](https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp.md)
- [Merge Accounting API vs Puzzle API and MCP](https://www.anchorterminal.com/compare/merge-accounting-vs-puzzle.md)
- [Merge Accounting API vs rotki MCP server](https://www.anchorterminal.com/compare/merge-accounting-vs-rotki-mcp.md)
- [Odoo External API vs Puzzle API and MCP](https://www.anchorterminal.com/compare/odoo-vs-puzzle.md)
- [Odoo External API vs rotki MCP server](https://www.anchorterminal.com/compare/odoo-vs-rotki-mcp.md)
- [Pennylane vs Puzzle API and MCP](https://www.anchorterminal.com/compare/pennylane-vs-puzzle.md)
- [Pennylane vs rotki MCP server](https://www.anchorterminal.com/compare/pennylane-vs-rotki-mcp.md)
- [Puzzle API and MCP vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/puzzle-vs-quickbooks-online.md)
- [Puzzle API and MCP vs Rutter Accounting API](https://www.anchorterminal.com/compare/puzzle-vs-rutter.md)
- [Puzzle API and MCP vs Xero API + MCP](https://www.anchorterminal.com/compare/puzzle-vs-xero.md)
- [Puzzle API and MCP vs Zoho Books](https://www.anchorterminal.com/compare/puzzle-vs-zoho-books.md)
- [QuickBooks Online API + MCP vs rotki MCP server](https://www.anchorterminal.com/compare/quickbooks-online-vs-rotki-mcp.md)
- [rotki MCP server vs Rutter Accounting API](https://www.anchorterminal.com/compare/rotki-mcp-vs-rutter.md)
- [rotki MCP server vs Xero API + MCP](https://www.anchorterminal.com/compare/rotki-mcp-vs-xero.md)
- [rotki MCP server vs Zoho Books](https://www.anchorterminal.com/compare/rotki-mcp-vs-zoho-books.md)
- [Invoice Ninja API vs Puzzle API and MCP](https://www.anchorterminal.com/compare/invoice-ninja-vs-puzzle.md)

---

Query this catalogue directly over MCP: https://www.anchorterminal.com/mcp (Streamable HTTP, no key). How: https://www.anchorterminal.com/agents/#mcp
