{
  "data": {
    "a": {
      "slug": "freshbooks",
      "name": "FreshBooks API",
      "vendor": "FreshBooks",
      "vendorUrl": "https://www.freshbooks.com/api/start",
      "kind": "http-api",
      "category": "accounting",
      "summary": "REST API for FreshBooks, the invoicing-first accounting product for freelancers and small firms.",
      "url": "https://www.anchorterminal.com/tools/freshbooks",
      "markdownUrl": "https://www.anchorterminal.com/tools/freshbooks.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/freshbooks.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/freshbooks.json",
      "repo": "https://github.com/freshbooks/freshbooks-python-sdk",
      "license": "MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.freshbooks.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@freshbooks/api"
        },
        {
          "registry": "pypi",
          "name": "freshbooks-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 authorisation code with scopes such as user:invoices:read and user:journal_entries:write. Access tokens are JWTs that expire (check the expiry in the token). Refresh tokens never expire but are single use, and only one is alive per user per app, so a refresh invalidates the old one. Call GET /auth/api/v1/users/me for the account_id used by /accounting endpoints and the business_id used by projects and time tracking.",
      "pricing": "byo-plan",
      "pricingNotes": "The API comes with any FreshBooks plan under section 12 of the terms, with no separate developer fee. Plans are Lite at $23 a month (5 billable clients), Plus at $43 (50 clients), Premium at $70 (unlimited) and Select on request, with introductory discounts. Double-entry accounting reports and bank reconciliation start at Plus (https://www.freshbooks.com/pricing).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 11,
        "npmWeekly": 685,
        "pypiWeekly": 415,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://www.freshbooks.com/api/start",
      "capabilities": [
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills",
        "accounting.reports"
      ],
      "tags": [
        "hosted",
        "byo-plan",
        "oauth",
        "typescript",
        "python",
        "webhooks",
        "status-page",
        "closed-source"
      ],
      "lastRelease": "2024-09-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.4,
        "grade": "E",
        "agentReady": false,
        "rank": 867,
        "ranked": true,
        "rankOf": 954,
        "categoryRank": 13,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 14,
          "payments": 30,
          "reliability": 35,
          "schema": 48,
          "security": 57,
          "transparency": 65
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "OAuth scopes split read and write per resource, such as user:invoices:read. Rate limits have no numbers, status code or headers.",
        "bestFor": "An agent that bills clients, chases invoices and reads the books for a freelancer or small service firm already on FreshBooks.",
        "strengths": [
          "OAuth scopes split read and write per resource, such as user:invoices:read",
          "Journal entries, chart of accounts, trial balance and general ledger through the API",
          "Numbered error codes such as 1001 RequiredField and 1012 UnknownResource",
          "30-day product trial with no card",
          "PCI DSS Level 1 with an annual third-party audit"
        ],
        "weaknesses": [
          "Rate limits have no numbers, status code or headers",
          "No sandbox, so testing happens in a trial account",
          "Official SDKs last released in April 2023 (Python) and September 2024 (Node)",
          "Changelog holds a single entry, the move to JWT tokens",
          "About two hours of full outage on 4 August 2026, and no API component on the status page"
        ],
        "agentNotes": [
          "Call /auth/api/v1/users/me first and keep both ids. Accounting endpoints take account_id, projects and time tracking take business_id",
          "Serialise token refreshes. Issuing a new refresh token kills the old one at once",
          "Mark an invoice as sent (action_mark_as_sent) or email it. Reports ignore drafts",
          "Send x-api-version: 2023-09-25 on journal entry calls",
          "Back off on any throttling response yourself. There's no Retry-After to read and no published limit"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.4
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 14,
          "payments": 30,
          "reliability": 35,
          "schema": 48,
          "security": 57,
          "transparency": 56
        },
        "provenanceScore": 73
      },
      "connect": {
        "http": "curl \"https://api.freshbooks.com/accounting/account/$FRESHBOOKS_ACCOUNT_ID/invoices/invoices?per_page=10\" \\\n  -H \"Authorization: Bearer $FRESHBOOKS_ACCESS_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/accounting.ledger",
        "tool": "https://letme.dev/freshbooks"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "2NDSITE Inc.",
        "domain": "freshbooks.com",
        "domainRegistered": "2004-03-23",
        "endpointOnVendorDomain": true,
        "terms": "https://www.freshbooks.com/policies/terms-of-service",
        "privacy": "https://www.freshbooks.com/policies/privacy",
        "statusPage": "https://status.freshbooks.com",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-09-30",
        "notes": [
          "The terms name 2NDSITE Inc., 225 King St W, Suite 1200, Toronto, under Ontario law, effective 29 October 2025 for new accounts.",
          "The API terms are section 12 of the general terms. There's no separate developer agreement.",
          "The API changelog page has a single entry, the 2021 to 2023 move from fixed-length bearer tokens to JWTs.",
          "www.freshbooks.com/.well-known/security.txt returned 403 to our fetch."
        ],
        "score": 73
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/freshbooks.json",
      "live": {
        "slug": "freshbooks",
        "probe": {
          "target": "https://api.freshbooks.com",
          "method": "get",
          "lastAt": "2026-10-10T13:02:12.020238885Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 259,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 136,
          "p95ms24h": 210,
          "samples24h": 246,
          "samples30d": 2368,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 134,
              "ok": 134
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.freshbooks.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T13:01:29.594144245Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "freshbooks/freshbooks-python-sdk",
            "version": "release/1.2.1",
            "released": "2023-04-24",
            "seenAt": "2026-10-09T16:54:05.486494992Z"
          },
          {
            "registry": "npm",
            "name": "@freshbooks/api",
            "version": "4.1.0",
            "seenAt": "2026-10-09T16:54:03.225529448Z"
          },
          {
            "registry": "pypi",
            "name": "freshbooks-sdk",
            "version": "1.3.0",
            "released": "2024-10-08",
            "seenAt": "2026-10-09T16:54:05.297368214Z"
          }
        ],
        "githubStars": 11,
        "npmWeekly": 1577,
        "pypiWeekly": 189,
        "securityTxt": {
          "url": "https://freshbooks.com/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-10-09T15:40:06.928684593Z"
        },
        "domain": {
          "domain": "freshbooks.com",
          "registered": "2004-03-23",
          "source": "https://rdap.verisign.com/com/v1/domain/freshbooks.com",
          "checkedAt": "2026-10-04T13:03:59.146069659Z"
        },
        "pages": [
          {
            "url": "https://www.freshbooks.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:50:20.322638549Z",
            "changedAt": "2026-10-07T18:11:59.395322104Z",
            "fingerprint": "4803a26e7245"
          },
          {
            "url": "https://www.freshbooks.com/policies/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:50:15.862969449Z",
            "changedAt": "2026-10-08T18:27:49.805877308Z",
            "fingerprint": "5f9c94f6bd5a"
          },
          {
            "url": "https://www.freshbooks.com/policies/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:50:18.103371296Z",
            "changedAt": "2026-10-08T18:27:52.104944649Z",
            "fingerprint": "1b34cd7eae1e"
          }
        ],
        "updatedAt": "2026-10-10T13:02:12.020238885Z"
      }
    },
    "answer": "rotki MCP server and FreshBooks API score within a point of each other on agent readiness, 45.6 (E) and 45.4 (E). FreshBooks API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust.",
    "b": {
      "slug": "rotki-mcp",
      "name": "rotki MCP server",
      "vendor": "Rotki Solutions GmbH",
      "vendorUrl": "https://rotki.com",
      "kind": "platform",
      "category": "accounting",
      "summary": "Open-source, local-first portfolio tracking and accounting app for crypto. Its MCP server, for Premium Basic and higher, lets an AI assistant on the same machine query the user's events and balances with read-only SQL.",
      "url": "https://www.anchorterminal.com/tools/rotki-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/rotki-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/rotki-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/rotki-mcp.json",
      "repo": "https://github.com/rotki/rotki",
      "license": "AGPL-3.0",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "mixed",
      "authNotes": "Desktop. No credential. The MCP HTTP endpoint at http://127.0.0.1:4445/mcp takes no bearer token, because the desktop launcher forces ROTKI_SESSION_KEY empty outside Docker (https://github.com/rotki/rotki/blob/v1.44.1/crates/starling/src/main.rs). Host and Origin allowlists limit requests to 127.0.0.1:4445. Docker. POST /api/1/mcp/token issues a bearer token scoped to mcp that lasts at most seven days from login and is revoked on logout (https://github.com/rotki/rotki/blob/v1.44.1/docs/dev_changelog.rst; https://docs.rotki.com/usage-guides/mcp).",
      "pricing": "paid",
      "pricingNotes": "Premium Basic is €25 a month billed monthly, labelled Suggested, and Advanced is €45 a month billed monthly (https://rotki.com/products/, checked 10 October 2026). Yearly prices are not shown, only 'Save 2 months vs monthly'. The Starter plan and the Supporter plan have no MCP access, and the code excludes Free and Supporter from the tools (https://github.com/rotki/rotki/blob/v1.44.1/rotkehlchen/mcp/premium.py). No free trial was found.",
      "priceSummary": "Paid",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the products page or the source (checked 2026-10-10).",
        "endpoints": []
      },
      "toolCount": 8,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-10"
      },
      "docsUrl": "https://docs.rotki.com/usage-guides/mcp",
      "llmsTxt": "https://rotki.com/llms.txt",
      "capabilities": [
        "accounting.ledger"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local-first",
        "desktop",
        "docker",
        "mcp",
        "read-only",
        "premium",
        "python",
        "llms-txt"
      ],
      "lastRelease": "2026-10-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.6,
        "grade": "E",
        "agentReady": false,
        "rank": 865,
        "ranked": true,
        "rankOf": 954,
        "categoryRank": 12,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 35,
          "payments": 10,
          "reliability": 50,
          "schema": 76,
          "security": 20,
          "transparency": 48
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-10"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "A Premium user who wants an assistant to answer questions about their own history, balances and cost basis on their own machine.",
        "strengths": [
          "Read-only by construction. Eight tools and none of them writes, and query_sql accepts one SELECT or WITH statement against an in-memory copy of the loaded data",
          "The premium gate fails closed. Free and Supporter accounts get premium_required, and a backend that cannot be queried gets premium_check_failed",
          "Balanced mode, the default, masks addresses, transaction hashes, group and event identifiers and account names with a per-process seed, and redacts user notes",
          "AGPL-3.0 source for the MCP server, its tests in rotkehlchen/tests/mcp and the desktop launcher that starts it",
          "Typed JSON Schema inputs on every tool, generated from the Python signatures, plus a free info tool that reports whether an unlocked backend is connected"
        ],
        "weaknesses": [
          "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",
          "Amounts, USD values, timestamps, asset symbols, counterparties and venue names pass unmasked in every mode, as the in-app strict description says",
          "The privacy policy at rotki.com/privacy-policy does not mention the desktop app or the MCP, and the MCP usage event to sigil.rotki.com is on by default",
          "Two releases in the 90 days to 10 October 2026, and no rotki entry found in the official MCP registry search",
          "The feature is seven weeks old, and no injection guidance, per-call audit log or security disclosure policy was found"
        ],
        "agentNotes": [
          "Ask the person to start the server under Settings \u003e MCP in the desktop app, since it stays down until started, then connect to http://127.0.0.1:4445/mcp",
          "Call info first. It works without Premium and reports whether an unlocked backend is connected",
          "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",
          "Call refresh_analytics_data before query_sql, and check source.completeness and unpriced_rows before reporting any total",
          "Check the privacy mode before answering from the data. Strict keeps amounts and dates, and raw sends addresses, hashes and notes verbatim"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.6
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 35,
          "payments": 10,
          "reliability": 50,
          "schema": 76,
          "security": 20,
          "transparency": 55
        },
        "provenanceScore": 40
      },
      "connect": {
        "claudeCode": "claude mcp add --scope user --transport http rotki http://127.0.0.1:4445/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/accounting.ledger",
        "tool": "https://letme.dev/rotki-mcp"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Rotki Solutions GmbH",
        "domain": "rotki.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "",
        "privacy": "https://rotki.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/rotki/rotki/releases",
        "securityTxt": "unknown",
        "checked": "2026-10-10",
        "notes": [
          "The privacy policy names Rotki Solutions GmbH as operator of the website and the Premium API subscription. It states no retention period and no governing law, and does not mention the desktop app or the MCP server.",
          "The MCP server runs on the user's own machine, so no vendor endpoint is involved. The only vendor-side request is the optional usage event to sigil.rotki.com.",
          "rotki.com/.well-known/security.txt and rotki.com/security.txt both returned client errors to our reader, so securityTxt is recorded as unknown.",
          "status.rotki.com and the terms page could not be read by our reader, so statusPage and terms are null."
        ],
        "score": 40
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/rotki-mcp.json"
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "FreshBooks",
        "b": "Rotki Solutions GmbH",
        "name": "Vendor"
      },
      {
        "a": "https://api.freshbooks.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Your plan",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "AGPL-3.0",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "8",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2024-09-11",
        "b": "2026-10-02",
        "name": "Last release"
      },
      {
        "a": "2026-10-07",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-05",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "11 stars, 685 npm/wk, 415 PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "rotki MCP server and FreshBooks API score within a point of each other on agent readiness, 45.6 (E) and 45.4 (E). FreshBooks API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust.",
        "question": "Which is better for AI agents, FreshBooks API or rotki MCP server?"
      },
      {
        "answer": "FreshBooks API has a hosted endpoint at https://api.freshbooks.com. No hosted endpoint is listed for rotki MCP server.",
        "question": "Can an agent call FreshBooks API and rotki MCP server without installing anything?"
      },
      {
        "answer": "No open-source release is listed for FreshBooks API. rotki MCP server is open source (AGPL-3.0).",
        "question": "Are FreshBooks API and rotki MCP server open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 57 against 20",
          "Payments \u0026 pricing, 30 against 10",
          "Transparency \u0026 trust, 65 against 48"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "An agent that bills clients, chases invoices and reads the books for a freelancer or small service firm already on FreshBooks.",
        "slug": "freshbooks",
        "watchFor": "Rate limits have no numbers, status code or headers"
      },
      {
        "aheadOn": [
          "Reliability, 50 against 35",
          "Schema \u0026 documentation, 76 against 48",
          "Agent ergonomics, 69 against 61",
          "Maintenance \u0026 community, 35 against 14"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "A Premium user who wants an assistant to answer questions about their own history, balances and cost basis on their own machine.",
        "slug": "rotki-mcp",
        "watchFor": "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"
      }
    ],
    "job": {
      "capability": "accounting.ledger",
      "name": "Accounting ledgers"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-freshbooks.json",
        "title": "Apideck Accounting API + MCP vs FreshBooks API",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-freshbooks"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-rotki-mcp.json",
        "title": "Apideck Accounting API + MCP vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-freshbooks.json",
        "title": "Codat vs FreshBooks API",
        "url": "https://www.anchorterminal.com/compare/codat-vs-freshbooks"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-rotki-mcp.json",
        "title": "Codat vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/codat-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freeagent-vs-freshbooks.json",
        "title": "FreeAgent API vs FreshBooks API",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-freshbooks"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freeagent-vs-rotki-mcp.json",
        "title": "FreeAgent API vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-merge-accounting.json",
        "title": "FreshBooks API vs Merge Accounting API",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-merge-accounting"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-odoo.json",
        "title": "FreshBooks API vs Odoo External API",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-odoo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-pennylane.json",
        "title": "FreshBooks API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-quickbooks-online.json",
        "title": "FreshBooks API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-rutter.json",
        "title": "FreshBooks API vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-xero.json",
        "title": "FreshBooks API vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-zoho-books.json",
        "title": "FreshBooks API vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/merge-accounting-vs-rotki-mcp.json",
        "title": "Merge Accounting API vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-rotki-mcp.json",
        "title": "Odoo External API vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pennylane-vs-rotki-mcp.json",
        "title": "Pennylane vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/quickbooks-online-vs-rotki-mcp.json",
        "title": "QuickBooks Online API + MCP vs rotki MCP server",
        "url": "https://www.anchorterminal.com/compare/quickbooks-online-vs-rotki-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/rotki-mcp-vs-rutter.json",
        "title": "rotki MCP server vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/rotki-mcp-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/rotki-mcp-vs-xero.json",
        "title": "rotki MCP server vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/rotki-mcp-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/rotki-mcp-vs-zoho-books.json",
        "title": "rotki MCP server vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/rotki-mcp-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-invoice-ninja.json",
        "title": "FreshBooks API vs Invoice Ninja API",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-invoice-ninja"
      }
    ],
    "scores": [
      {
        "by": 15,
        "edge": "rotki-mcp",
        "freshbooks": 35,
        "key": "reliability",
        "name": "Reliability",
        "rotki-mcp": 50,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 28,
        "edge": "rotki-mcp",
        "freshbooks": 48,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "rotki-mcp": 76,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "rotki-mcp",
        "freshbooks": 61,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "rotki-mcp": 69,
        "weight": 13
      },
      {
        "by": 37,
        "edge": "freshbooks",
        "freshbooks": 57,
        "key": "security",
        "name": "Security \u0026 auth",
        "rotki-mcp": 20,
        "weight": 14
      },
      {
        "by": 20,
        "edge": "freshbooks",
        "freshbooks": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "rotki-mcp": 10,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 21,
        "edge": "rotki-mcp",
        "freshbooks": 14,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "rotki-mcp": 35,
        "weight": 7
      },
      {
        "by": 17,
        "edge": "freshbooks",
        "freshbooks": 65,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "rotki-mcp": 48,
        "weight": 7
      }
    ],
    "summary": "rotki MCP server and FreshBooks API score within a point of each other on agent readiness, 45.6 (E) and 45.4 (E). FreshBooks API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust. Both do accounting ledgers.",
    "verdicts": {
      "freshbooks": "OAuth scopes split read and write per resource, such as user:invoices:read. Rate limits have no numbers, status code or headers.",
      "rotki-mcp": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp",
    "json": "https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp.md",
    "slim": "https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp.min.md"
  },
  "markdown": "rotki MCP server and FreshBooks API score within a point of each other on agent readiness, 45.6 (E) and 45.4 (E). FreshBooks API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust. Both do accounting ledgers.\n\n- FreshBooks API: grade E, 45.4/100, rank #867 of 954. Markdown https://www.anchorterminal.com/tools/freshbooks.md · JSON https://www.anchorterminal.com/api/v1/tools/freshbooks.json\n- rotki MCP server: grade E, 45.6/100, rank #865 of 954. Markdown https://www.anchorterminal.com/tools/rotki-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/rotki-mcp.json\n- Best accounting and invoicing APIs for AI agents: https://www.anchorterminal.com/best/accounting/index.md\n- All 77 accounting comparisons: https://www.anchorterminal.com/compare/accounting/index.md\n\n## Which one, for what\n\n### FreshBooks API (E)\n\nGood for: An agent that bills clients, chases invoices and reads the books for a freelancer or small service firm already on FreshBooks.\n\nAhead on:\n- Security \u0026 auth, 57 against 20\n- Payments \u0026 pricing, 30 against 10\n- Transparency \u0026 trust, 65 against 48\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: Rate limits have no numbers, status code or headers\n\n### rotki MCP server (E)\n\nGood for: A Premium user who wants an assistant to answer questions about their own history, balances and cost basis on their own machine.\n\nAhead on:\n- Reliability, 50 against 35\n- Schema \u0026 documentation, 76 against 48\n- Agent ergonomics, 69 against 61\n- Maintenance \u0026 community, 35 against 14\n\nAlso in its favour:\n- Open source\n\nWatch 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\n\n\n## Score by category\n\n| Category | Weight | FreshBooks API | rotki MCP server | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 50 | rotki MCP server +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 48 | 76 | rotki MCP server +28 |\n| Agent ergonomics | 13% (16.2 this run) | 61 | 69 | rotki MCP server +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 57 | 20 | FreshBooks API +37 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 10 | FreshBooks API +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 14 | 35 | rotki MCP server +21 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 65 | 48 | FreshBooks API +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **45.4 · E** | **45.6 · E** | |\n\n## Facts side by side\n\n| Fact | FreshBooks API | rotki MCP server |\n| --- | --- | --- |\n| Kind | HTTP API | Platform |\n| Vendor | FreshBooks | Rotki Solutions GmbH |\n| Hosted endpoint | `https://api.freshbooks.com` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | OAuth | OAuth or key |\n| Pricing | Your plan | Paid |\n| x402 | no | no |\n| Licence | MIT | AGPL-3.0 |\n| Tools exposed | none | 8 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| Last release | 2024-09-11 | 2026-10-02 |\n| Terms last updated | 2026-10-07 | no document linked |\n| Privacy policy last updated | 2026-10-05 |  |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | yes |  |\n| Terms restrict benchmarking | yes |  |\n| Terms or service can change without notice | yes |  |\n| Arbitration or class-action waiver | yes |  |\n| Popularity | 11 stars, 685 npm/wk, 415 PyPI/wk | none |\n| Agent reviews | 3/5 (2) | none |\n\n## Verdicts\n\n**FreshBooks API.** OAuth scopes split read and write per resource, such as user:invoices:read. Rate limits have no numbers, status code or headers.\n\n**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.\n\n## Before you call either\n\n### FreshBooks API\n\n1. Call /auth/api/v1/users/me first and keep both ids. Accounting endpoints take account_id, projects and time tracking take business_id\n2. Serialise token refreshes. Issuing a new refresh token kills the old one at once\n3. Mark an invoice as sent (action_mark_as_sent) or email it. Reports ignore drafts\n4. Send x-api-version: 2023-09-25 on journal entry calls\n5. Back off on any throttling response yourself. There's no Retry-After to read and no published limit\n\n### rotki MCP server\n\n1. Ask the person to start the server under Settings \u003e MCP in the desktop app, since it stays down until started, then connect to http://127.0.0.1:4445/mcp\n2. Call info first. It works without Premium and reports whether an unlocked backend is connected\n3. 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\n4. Call refresh_analytics_data before query_sql, and check source.completeness and unpriced_rows before reporting any total\n5. Check the privacy mode before answering from the data. Strict keeps amounts and dates, and raw sends addresses, hashes and notes verbatim\n\n## Questions\n\n### Which is better for AI agents, FreshBooks API or rotki MCP server?\n\nrotki MCP server and FreshBooks API score within a point of each other on agent readiness, 45.6 (E) and 45.4 (E). FreshBooks API leads on security \u0026 auth, payments \u0026 pricing and transparency \u0026 trust.\n\n### Can an agent call FreshBooks API and rotki MCP server without installing anything?\n\nFreshBooks API has a hosted endpoint at https://api.freshbooks.com. No hosted endpoint is listed for rotki MCP server.\n\n### Are FreshBooks API and rotki MCP server open source?\n\nNo open-source release is listed for FreshBooks API. rotki MCP server is open source (AGPL-3.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"freshbooks\", \"b\": \"rotki-mcp\"}`. From a terminal: `anchor compare freshbooks rotki-mcp`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/freshbooks.json and https://www.anchorterminal.com/api/v1/tools/rotki-mcp.json\n\n## Other comparisons with FreshBooks API or rotki MCP server\n\n- [Apideck Accounting API + MCP vs FreshBooks API](https://www.anchorterminal.com/compare/apideck-accounting-vs-freshbooks.md)\n- [Apideck Accounting API + MCP vs rotki MCP server](https://www.anchorterminal.com/compare/apideck-accounting-vs-rotki-mcp.md)\n- [Codat vs FreshBooks API](https://www.anchorterminal.com/compare/codat-vs-freshbooks.md)\n- [Codat vs rotki MCP server](https://www.anchorterminal.com/compare/codat-vs-rotki-mcp.md)\n- [FreeAgent API vs FreshBooks API](https://www.anchorterminal.com/compare/freeagent-vs-freshbooks.md)\n- [FreeAgent API vs rotki MCP server](https://www.anchorterminal.com/compare/freeagent-vs-rotki-mcp.md)\n- [FreshBooks API vs Merge Accounting API](https://www.anchorterminal.com/compare/freshbooks-vs-merge-accounting.md)\n- [FreshBooks API vs Odoo External API](https://www.anchorterminal.com/compare/freshbooks-vs-odoo.md)\n- [FreshBooks API vs Pennylane](https://www.anchorterminal.com/compare/freshbooks-vs-pennylane.md)\n- [FreshBooks API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/freshbooks-vs-quickbooks-online.md)\n- [FreshBooks API vs Rutter Accounting API](https://www.anchorterminal.com/compare/freshbooks-vs-rutter.md)\n- [FreshBooks API vs Xero API + MCP](https://www.anchorterminal.com/compare/freshbooks-vs-xero.md)\n- [FreshBooks API vs Zoho Books](https://www.anchorterminal.com/compare/freshbooks-vs-zoho-books.md)\n- [Merge Accounting API vs rotki MCP server](https://www.anchorterminal.com/compare/merge-accounting-vs-rotki-mcp.md)\n- [Odoo External API vs rotki MCP server](https://www.anchorterminal.com/compare/odoo-vs-rotki-mcp.md)\n- [Pennylane vs rotki MCP server](https://www.anchorterminal.com/compare/pennylane-vs-rotki-mcp.md)\n- [QuickBooks Online API + MCP vs rotki MCP server](https://www.anchorterminal.com/compare/quickbooks-online-vs-rotki-mcp.md)\n- [rotki MCP server vs Rutter Accounting API](https://www.anchorterminal.com/compare/rotki-mcp-vs-rutter.md)\n- [rotki MCP server vs Xero API + MCP](https://www.anchorterminal.com/compare/rotki-mcp-vs-xero.md)\n- [rotki MCP server vs Zoho Books](https://www.anchorterminal.com/compare/rotki-mcp-vs-zoho-books.md)\n- [FreshBooks API vs Invoice Ninja API](https://www.anchorterminal.com/compare/freshbooks-vs-invoice-ninja.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "FreshBooks API vs rotki MCP server",
        "url": ""
      }
    ],
    "description": "rotki and FreshBooks score within a point of each other for accounting ledgers, 45.6 and 45.4 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "FreshBooks API E 45.4",
      "rotki MCP server E 45.6",
      "scores"
    ],
    "h1": "FreshBooks API vs rotki MCP server",
    "image": "https://www.anchorterminal.com/assets/og/compare-freshbooks-vs-rotki-mcp.png",
    "path": "/compare/freshbooks-vs-rotki-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "FreshBooks vs rotki for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-10",
    "url": "https://www.anchorterminal.com/compare/freshbooks-vs-rotki-mcp"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 730
  },
  "version": 1
}
