{
  "data": {
    "category": {
      "area": "domain-data",
      "capabilities": [
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills",
        "accounting.reports",
        "accounting.unified"
      ],
      "description": "APIs for bookkeeping and invoicing: ledgers, invoices, bills, expenses and reports, straight from the accounting software or through one API across many. Compared on the objects covered, write access, sandboxes, rate limits and price.",
      "indexed": [
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/ainetcafe-ai-netcafe.json",
          "kind": "mcp",
          "name": "ai-netcafe",
          "slug": "ainetcafe-ai-netcafe",
          "url": "https://www.anchorterminal.com/tools/ainetcafe-ai-netcafe"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/attestwire-en16931.json",
          "kind": "mcp",
          "name": "Attestwire",
          "slug": "attestwire-en16931",
          "url": "https://www.anchorterminal.com/tools/attestwire-en16931"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/basebalance.json",
          "kind": "mcp",
          "name": "basebalance.cloud — x402 RPC \u0026 MCP gateway",
          "slug": "basebalance",
          "url": "https://www.anchorterminal.com/tools/basebalance"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/beel-mcp.json",
          "kind": "mcp",
          "name": "BeeL",
          "slug": "beel-mcp",
          "url": "https://www.anchorterminal.com/tools/beel-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/billingserv-mcp.json",
          "kind": "mcp",
          "name": "billingserv.com MCP server",
          "slug": "billingserv-mcp",
          "url": "https://www.anchorterminal.com/tools/billingserv-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/burdenrateledger-tools.json",
          "kind": "mcp",
          "name": "burdenrateledger-tools",
          "slug": "burdenrateledger-tools",
          "url": "https://www.anchorterminal.com/tools/burdenrateledger-tools"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/businys-mcp-server.json",
          "kind": "mcp",
          "name": "businys.app MCP server",
          "slug": "businys-mcp-server",
          "url": "https://www.anchorterminal.com/tools/businys-mcp-server"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/cz-agents-cnb.json",
          "kind": "mcp",
          "name": "cnb",
          "slug": "cz-agents-cnb",
          "url": "https://www.anchorterminal.com/tools/cz-agents-cnb"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/ekwo-mcp.json",
          "kind": "mcp",
          "name": "Ekwo OS — open source accounting: ledger, invoices and VAT on your own Supabase or Postgres",
          "slug": "ekwo-mcp",
          "url": "https://www.anchorterminal.com/tools/ekwo-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/factuarea-mcp.json",
          "kind": "mcp",
          "name": "Factuarea",
          "slug": "factuarea-mcp",
          "url": "https://www.anchorterminal.com/tools/factuarea-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/frihet-erp.json",
          "kind": "mcp",
          "name": "Frihet ERP",
          "slug": "frihet-erp",
          "url": "https://www.anchorterminal.com/tools/frihet-erp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/synder-gl-importer-mcp.json",
          "kind": "mcp",
          "name": "gl-importer-mcp",
          "slug": "synder-gl-importer-mcp",
          "url": "https://www.anchorterminal.com/tools/synder-gl-importer-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/getholdings-mcp.json",
          "kind": "mcp",
          "name": "Holdings",
          "slug": "getholdings-mcp",
          "url": "https://www.anchorterminal.com/tools/getholdings-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/yaktool-invoice.json",
          "kind": "mcp",
          "name": "invoice",
          "slug": "yaktool-invoice",
          "url": "https://www.anchorterminal.com/tools/yaktool-invoice"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/invoicebox-mcp-server.json",
          "kind": "mcp",
          "name": "invoicebox.ru MCP server",
          "slug": "invoicebox-mcp-server",
          "url": "https://www.anchorterminal.com/tools/invoicebox-mcp-server"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/invoicexml.json",
          "kind": "mcp",
          "name": "InvoiceXML",
          "slug": "invoicexml",
          "url": "https://www.anchorterminal.com/tools/invoicexml"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/llm-bus.json",
          "kind": "mcp",
          "name": "llm-bus",
          "slug": "llm-bus",
          "url": "https://www.anchorterminal.com/tools/llm-bus"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mandarelabs-mandare.json",
          "kind": "mcp",
          "name": "Mandare",
          "slug": "mandarelabs-mandare",
          "url": "https://www.anchorterminal.com/tools/mandarelabs-mandare"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/sputnikx-market.json",
          "kind": "mcp",
          "name": "market",
          "slug": "sputnikx-market",
          "url": "https://www.anchorterminal.com/tools/sputnikx-market"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/norman-mcp-server.json",
          "kind": "mcp",
          "name": "Norman MCP Server",
          "slug": "norman-mcp-server",
          "url": "https://www.anchorterminal.com/tools/norman-mcp-server"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/wrapper-agency-parser.json",
          "kind": "mcp",
          "name": "parser",
          "slug": "wrapper-agency-parser",
          "url": "https://www.anchorterminal.com/tools/wrapper-agency-parser"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/linkedparticles-particles.json",
          "kind": "mcp",
          "name": "Particles",
          "slug": "linkedparticles-particles",
          "url": "https://www.anchorterminal.com/tools/linkedparticles-particles"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pdfops-mcp.json",
          "kind": "mcp",
          "name": "pdfops-mcp",
          "slug": "pdfops-mcp",
          "url": "https://www.anchorterminal.com/tools/pdfops-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/polydoc-mcp.json",
          "kind": "mcp",
          "name": "PolyDoc",
          "slug": "polydoc-mcp",
          "url": "https://www.anchorterminal.com/tools/polydoc-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/positif.json",
          "kind": "mcp",
          "name": "Positif",
          "slug": "positif",
          "url": "https://www.anchorterminal.com/tools/positif"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/tasktime-agent-bridge.json",
          "kind": "mcp",
          "name": "TaskTime Pro",
          "slug": "tasktime-agent-bridge",
          "url": "https://www.anchorterminal.com/tools/tasktime-agent-bridge"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/theneuralledger-intelligence.json",
          "kind": "mcp",
          "name": "The Neural Ledger Intelligence",
          "slug": "theneuralledger-intelligence",
          "url": "https://www.anchorterminal.com/tools/theneuralledger-intelligence"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/timbrix-mcp.json",
          "kind": "mcp",
          "name": "Timbrix — CFDI 4.0 para México",
          "slug": "timbrix-mcp",
          "url": "https://www.anchorterminal.com/tools/timbrix-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/medianfi-compliance.json",
          "kind": "mcp",
          "name": "US compliance and books health",
          "slug": "medianfi-compliance",
          "url": "https://www.anchorterminal.com/tools/medianfi-compliance"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/wyrdmcp-wyrd-scribe.json",
          "kind": "mcp",
          "name": "wyrd-scribe",
          "slug": "wyrdmcp-wyrd-scribe",
          "url": "https://www.anchorterminal.com/tools/wyrdmcp-wyrd-scribe"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/x402receipts-mcp.json",
          "kind": "mcp",
          "name": "x402receipts",
          "slug": "x402receipts-mcp",
          "url": "https://www.anchorterminal.com/tools/x402receipts-mcp"
        },
        {
          "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/yaktool.json",
          "kind": "mcp",
          "name": "yaktool",
          "slug": "yaktool",
          "url": "https://www.anchorterminal.com/tools/yaktool"
        }
      ],
      "indexedCount": 32,
      "json": "https://www.anchorterminal.com/categories/accounting.json",
      "name": "Accounting \u0026 invoicing",
      "slug": "accounting",
      "test": "An agent creates a customer and an invoice, records a payment, reads a profit and loss report and posts a bill in a sandbox company. We check which steps work, the rate limits and how errors come back.",
      "title": "Accounting and invoicing APIs for AI agents",
      "toolCount": 8,
      "tools": [
        "apideck-accounting",
        "merge-accounting",
        "xero",
        "freeagent",
        "rutter",
        "invoice-ninja",
        "quickbooks-online",
        "freshbooks"
      ],
      "url": "https://www.anchorterminal.com/categories/accounting"
    },
    "tools": [
      {
        "slug": "apideck-accounting",
        "name": "Apideck Accounting API + MCP",
        "vendor": "Apideck",
        "vendorUrl": "https://www.apideck.com/accounting-api",
        "kind": "http-api",
        "category": "accounting",
        "summary": "Unified accounting API for invoices, bills, payments, journal entries and financial reports across platforms including QuickBooks, Xero and NetSuite.",
        "url": "https://www.anchorterminal.com/tools/apideck-accounting",
        "markdownUrl": "https://www.anchorterminal.com/tools/apideck-accounting.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/apideck-accounting.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/apideck-accounting.json",
        "repo": "https://github.com/apideck-libraries/mcp",
        "license": "MIT",
        "transports": [
          "http",
          "streamable-http",
          "stdio"
        ],
        "remoteUrl": "https://unify.apideck.com/accounting",
        "packages": [
          {
            "registry": "npm",
            "name": "@apideck/unify"
          },
          {
            "registry": "pypi",
            "name": "apideck-unify"
          },
          {
            "registry": "npm",
            "name": "@apideck/mcp"
          }
        ],
        "auth": "api-key",
        "authNotes": "Bearer API key plus `x-apideck-app-id` on every call, and `x-apideck-consumer-id` naming the customer whose connection you're using. Add `x-apideck-service-id` when a consumer has more than one accounting connection. End users authorise through Vault, which holds and refreshes their OAuth tokens. The hosted MCP takes the same three values as headers, the local server as environment variables.",
        "pricing": "paid",
        "pricingNotes": "Priced per active consumer (your customer), with a 30-day free trial on every plan. Launch is $599 a month for 25 consumers and one unified API category ($23.96 a consumer, $19.98 at 50), including webhooks, the Proxy API and the MCP server. Scale is $1,299 a month for 100 consumers and three categories ($12.99 a consumer), falling to $4,250 for 500 ($8.50 a consumer), and adds custom field mapping and data scopes. Enterprise is custom on an annual contract with SSO, a white-label Vault, vendor sandboxes and an uptime SLA. Yearly billing is 10 per cent less (https://www.apideck.com/pricing).",
        "priceSummary": "$599 / mo",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 362,
        "popularity": {
          "githubStars": 15,
          "npmWeekly": 42170,
          "pypiWeekly": 14248,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://developers.apideck.com/apis/accounting/reference",
        "llmsTxt": "https://developers.apideck.com/llms.txt",
        "openapi": "https://github.com/apideck-libraries/openapi-specs/blob/main/accounting.yml",
        "registryName": "com.apideck/mcp",
        "capabilities": [
          "accounting.unified",
          "accounting.ledger",
          "accounting.invoices",
          "accounting.bills",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "paid",
          "no-card",
          "mcp",
          "llms-txt",
          "openapi",
          "typescript",
          "python",
          "webhooks",
          "enterprise",
          "eu",
          "status-page",
          "toolsets"
        ],
        "lastRelease": "2026-10-01",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 73.2,
          "grade": "BB",
          "agentReady": true,
          "rank": 60,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 1,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 88,
            "maintenance": 80,
            "payments": 30,
            "reliability": 75,
            "schema": 92,
            "security": 66,
            "transparency": 76
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "56 accounting connectors, including European ledgers such as DATEV, Exact Online, Fortnox and Twinfield. No published rate limits of Apideck's own, only connector limits mirrored in headers.",
          "strengths": [
            "56 accounting connectors, including European ledgers such as DATEV, Exact Online, Fortnox and Twinfield",
            "Dynamic MCP mode with 4 meta-tools at about 1,300 tokens, and annotations on all 362 tools",
            "Public OpenAPI spec (accounting.yml, 208 operations) with a dated changelog and a BREAKING.md for removals",
            "Identity lock on the MCP so one agent can't switch to another customer's ledger",
            "30-day trial with full access and no card"
          ],
          "weaknesses": [
            "No published rate limits of Apideck's own, only connector limits mirrored in headers",
            "No idempotency keys on writes, so a timed-out create can duplicate",
            "$599 a month for 25 customers after the trial, no free tier",
            "Vendor sandboxes only on Enterprise",
            "Registry entry stuck at 0.1.13 from April while npm is at 0.21.0"
          ],
          "agentNotes": [
            "Stay in dynamic mode and search for tools. Static mode loads all 362 schemas",
            "Start the MCP with --lock-identity (or ?lock_identity=true) when one agent serves one customer",
            "Read x-downstream-ratelimit-remaining before fanning out, and wait until x-downstream-ratelimit-reset after a 429",
            "List before you retry a create that timed out. Writes aren't idempotent and there's no idempotency key",
            "Pass fields= on list calls to cut the response to the columns you need"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "BB",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 73.2
            }
          ],
          "editorialScores": {
            "ergonomics": 88,
            "maintenance": 80,
            "payments": 30,
            "reliability": 75,
            "schema": 92,
            "security": 66,
            "transparency": 61
          },
          "provenanceScore": 90
        },
        "connect": {
          "http": "curl \"https://unify.apideck.com/accounting/invoices?limit=10\" \\\n  -H \"Authorization: Bearer $APIDECK_API_KEY\" -H \"x-apideck-app-id: $APIDECK_APP_ID\" \\\n  -H \"x-apideck-consumer-id: $APIDECK_CONSUMER_ID\" -H \"x-apideck-service-id: xero\"",
          "claudeCode": "claude mcp add --transport http apideck \"https://mcp.apideck.dev/mcp?scopes=read\" --header \"Authorization: Bearer $APIDECK_API_KEY\" --header \"x-apideck-consumer-id: $APIDECK_CONSUMER_ID\" --header \"x-apideck-app-id: $APIDECK_APP_ID\"",
          "config": {
            "mcpServers": {
              "apideck": {
                "args": [
                  "-y",
                  "@apideck/mcp",
                  "start",
                  "--scope",
                  "read"
                ],
                "command": "npx",
                "env": {
                  "APIDECK_API_KEY": "${APIDECK_API_KEY}",
                  "APIDECK_APP_ID": "${APIDECK_APP_ID}",
                  "APIDECK_CONSUMER_ID": "${APIDECK_CONSUMER_ID}"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/accounting.unified",
          "tool": "https://letme.dev/apideck-accounting"
        },
        "area": "domain-data",
        "unitPrices": [
          {
            "item": "Launch plan",
            "unit": "month",
            "usd": 599,
            "note": "25 consumers, 1 unified API category"
          },
          {
            "item": "Scale plan",
            "unit": "month",
            "usd": 1299,
            "note": "100 consumers, 3 categories"
          },
          {
            "item": "Consumer on Launch (25)",
            "unit": "account-month",
            "usd": 23.96
          },
          {
            "item": "Consumer on Scale (100)",
            "unit": "account-month",
            "usd": 12.99
          },
          {
            "item": "Consumer on Scale (500)",
            "unit": "account-month",
            "usd": 8.5
          }
        ],
        "provenance": {
          "legalEntity": "Apideck Inc. and Apideck NV/BV",
          "domain": "apideck.com",
          "domainRegistered": "2012-07-04",
          "endpointOnVendorDomain": true,
          "terms": "https://compliance.apideck.com/terms",
          "privacy": "https://www.iubenda.com/privacy-policy/16710317",
          "statusPage": "https://status.apideck.com",
          "changelog": "https://developers.apideck.com/changelog",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The footer names Apideck Inc., 95 Third Street, San Francisco, and Apideck NV/BV, Broederminstraat 9, Antwerp, VAT BE 0689.615.164.",
            "The terms page on compliance.apideck.com shows only a loading state without JavaScript, and the privacy policy is hosted by iubenda rather than on apideck.com.",
            "The MCP endpoint is on apideck.dev while the API is on apideck.com. Both are the vendor's.",
            "One status-page incident in the last 90 days, delayed log delivery for about 2.5 hours on 2026-09-15, with API traffic unaffected."
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/apideck-accounting.json",
        "live": {
          "slug": "apideck-accounting",
          "probe": {
            "target": "https://unify.apideck.com/accounting",
            "method": "get",
            "lastAt": "2026-10-04T22:35:18.727123479Z",
            "lastOk": true,
            "lastStatus": 403,
            "lastMs": 68,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 67,
            "p95ms24h": 117,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 256
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.apideck.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T22:33:46.635069792Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "apideck-libraries/mcp",
              "version": "v0.21.0",
              "released": "2026-09-28",
              "seenAt": "2026-10-04T16:20:35.283761505Z"
            },
            {
              "registry": "mcp-registry",
              "name": "com.apideck/mcp",
              "version": "0.1.13",
              "seenAt": "2026-10-03T23:29:28.630222764Z"
            },
            {
              "registry": "npm",
              "name": "@apideck/mcp",
              "version": "0.21.0",
              "seenAt": "2026-10-04T16:20:33.720080514Z"
            },
            {
              "registry": "npm",
              "name": "@apideck/unify",
              "version": "0.52.2",
              "seenAt": "2026-10-04T16:20:33.080746348Z"
            },
            {
              "registry": "pypi",
              "name": "apideck-unify",
              "version": "0.44.0",
              "released": "2026-10-02",
              "seenAt": "2026-10-04T16:20:33.534216287Z"
            }
          ],
          "githubStars": 19,
          "npmWeekly": 40772,
          "pypiWeekly": 10695,
          "securityTxt": {
            "url": "https://apideck.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:16:01.278396866Z"
          },
          "llmsTxt": {
            "url": "https://developers.apideck.com/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:17:15.129512718Z"
          },
          "domain": {
            "domain": "apideck.com",
            "registered": "2012-07-04",
            "source": "https://rdap.verisign.com/com/v1/domain/apideck.com",
            "checkedAt": "2026-10-04T13:09:27.918141231Z"
          },
          "pages": [
            {
              "url": "https://developers.apideck.com/changelog",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:42:41.455478164Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "3240ab3af0c0"
            },
            {
              "url": "https://www.apideck.com/pricing",
              "kind": "pricing",
              "status": 304,
              "checkedAt": "2026-10-04T15:49:08.239438283Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "a97becc57c6d"
            },
            {
              "url": "https://www.iubenda.com/privacy-policy/16710317",
              "kind": "privacy",
              "status": 0,
              "checkedAt": "2026-10-04T15:50:55.193422375Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "blockedByRobots": true
            },
            {
              "url": "https://compliance.apideck.com/terms",
              "kind": "terms",
              "status": 304,
              "checkedAt": "2026-10-04T15:42:07.912353084Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "8bf62a1f7bee"
            }
          ],
          "updatedAt": "2026-10-04T22:35:18.727123479Z"
        }
      },
      {
        "slug": "merge-accounting",
        "name": "Merge Accounting API",
        "vendor": "Merge",
        "vendorUrl": "https://www.merge.dev",
        "kind": "http-api",
        "category": "accounting",
        "summary": "Unified accounting API for invoices, payments, expenses, journal entries and financial statements across platforms including QuickBooks, Xero and NetSuite.",
        "url": "https://www.anchorterminal.com/tools/merge-accounting",
        "markdownUrl": "https://www.anchorterminal.com/tools/merge-accounting.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/merge-accounting.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/merge-accounting.json",
        "repo": "https://github.com/merge-api/merge-python-client",
        "license": "MIT",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://api.merge.dev/api/accounting/v1",
        "packages": [
          {
            "registry": "pypi",
            "name": "MergePythonClient"
          },
          {
            "registry": "npm",
            "name": "@mergeapi/merge-node-client"
          }
        ],
        "auth": "api-key",
        "authNotes": "Two headers on every call. `Authorization: Bearer \u003cAPI key\u003e` from the Merge dashboard (production or test keys) and `X-Account-Token` for the linked account, issued when a user finishes the Merge Link flow. There's an EU host at api-eu.merge.dev. Merge holds the OAuth tokens for the accounting platform, so your agent never sees them.",
        "pricing": "freemium",
        "pricingNotes": "The first 3 production linked accounts are free with no card. Launch is $650 a month for up to 10 production linked accounts and $65 a month for each one beyond that, with 100 requests a minute per linked account, up to 3 test linked accounts, sandbox accounts for the first 60 days and 3 days of logs. Professional (400 a minute, unlimited test linked accounts, sandbox accounts for the first 60 days, 30 days of logs, field-level scopes) and Enterprise (600 a minute, unlimited sandboxes, 90 days or more of logs, support and uptime SLAs) are priced on contract (https://www.merge.dev/pricing).",
        "priceSummary": "$650 / mo",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": 15,
          "npmWeekly": 201025,
          "pypiWeekly": 234550,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://docs.merge.dev/merge-unified/accounting/overview",
        "llmsTxt": "https://docs.merge.dev/llms.txt",
        "openapi": "https://docs.merge.dev/openapi/accounting.json",
        "capabilities": [
          "accounting.unified",
          "accounting.ledger",
          "accounting.invoices",
          "accounting.bills",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "freemium",
          "free-tier",
          "llms-txt",
          "openapi",
          "typescript",
          "python",
          "webhooks",
          "eu",
          "enterprise",
          "status-page",
          "closed-source"
        ],
        "lastRelease": "2026-09-16",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 70.2,
          "grade": "BB",
          "agentReady": true,
          "rank": 100,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 2,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 72,
            "maintenance": 83,
            "payments": 35,
            "reliability": 75,
            "schema": 86,
            "security": 67,
            "transparency": 70
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "12 accounting platforms behind one set of common models, with writes. Launch jumps from free to $650 a month at the fourth linked account.",
          "strengths": [
            "12 accounting platforms behind one set of common models, with writes",
            "Three production linked accounts free with no card",
            "llms.txt, Markdown twins of every docs page and a JSON OpenAPI spec",
            "Rate limits per linked account, so one busy customer doesn't starve the rest",
            "SOC 2 Type 2, ISO 27001:2022 and an EU host at api-eu.merge.dev"
          ],
          "weaknesses": [
            "Launch jumps from free to $650 a month at the fourth linked account",
            "No documented 429 handling, idempotency keys or safe-retry guidance for writes",
            "Merge's own MCP server for the Unified API has been idle since 0.1.4 in April 2025",
            "No deprecation policy, and the Python SDK shipped two major versions between May and July 2026",
            "Only 3 days of request logs on Launch"
          ],
          "agentNotes": [
            "Call GET /invoices/meta/post for the linked account first. Required fields differ by platform",
            "Bills and sales invoices are one model. Set type to ACCOUNTS_PAYABLE or ACCOUNTS_RECEIVABLE",
            "Append .md to any docs URL for the Markdown twin",
            "Check sync_status before reading a freshly linked account. Common models fill in over the first sync",
            "Look the record up before retrying a POST that timed out. There's no idempotency key"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "BB",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 70.2
            }
          ],
          "editorialScores": {
            "ergonomics": 72,
            "maintenance": 83,
            "payments": 35,
            "reliability": 75,
            "schema": 86,
            "security": 67,
            "transparency": 54
          },
          "provenanceScore": 86
        },
        "connect": {
          "http": "curl \"https://api.merge.dev/api/accounting/v1/invoices?type=ACCOUNTS_RECEIVABLE\u0026page_size=10\" \\\n  -H \"Authorization: Bearer $MERGE_API_KEY\" -H \"X-Account-Token: $MERGE_ACCOUNT_TOKEN\""
        },
        "letme": {
          "capability": "https://letme.dev/accounting.unified",
          "tool": "https://letme.dev/merge-accounting"
        },
        "area": "domain-data",
        "unitPrices": [
          {
            "item": "Launch plan",
            "unit": "month",
            "usd": 650,
            "note": "Up to 10 production linked accounts, first 3 free"
          },
          {
            "item": "Additional linked account on Launch",
            "unit": "account-month",
            "usd": 65
          }
        ],
        "provenance": {
          "legalEntity": "Merge API, Inc.",
          "domain": "merge.dev",
          "domainRegistered": "2020-02-09",
          "endpointOnVendorDomain": true,
          "terms": "https://www.merge.dev/legal/terms",
          "privacy": "https://www.merge.dev/legal/privacy-policy",
          "statusPage": "https://status.merge.dev",
          "changelog": "https://www.merge.dev/changelog",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The terms name Merge API Inc. with California law and arbitration in San Francisco, but give no registered address. The privacy policy was last revised 20 August 2026.",
            "The status page runs on Sorry rather than Statuspage and lists the Unified API, Merge Link, data syncing and Agent Handler as components.",
            "A trust portal at trust.merge.dev holds the security documentation."
          ],
          "score": 86
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/merge-accounting.json",
        "live": {
          "slug": "merge-accounting",
          "probe": {
            "target": "https://api.merge.dev/api/accounting/v1",
            "method": "get",
            "lastAt": "2026-10-04T22:35:26.636619354Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 529,
            "authRequired": false,
            "uptime24h": 99.63,
            "uptime30d": 99.89,
            "p50ms24h": 578,
            "p95ms24h": 2092,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 255
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.merge.dev",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T21:40:14.824420782Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "merge-api/merge-python-client",
              "version": "v4.2.0",
              "released": "2026-09-16",
              "seenAt": "2026-10-04T16:32:53.27441844Z"
            },
            {
              "registry": "npm",
              "name": "@mergeapi/merge-node-client",
              "version": "4.0.4",
              "seenAt": "2026-10-04T16:32:52.40119992Z"
            },
            {
              "registry": "pypi",
              "name": "MergePythonClient",
              "version": "4.2.0",
              "released": "2026-09-16",
              "seenAt": "2026-10-04T16:32:52.1990559Z"
            }
          ],
          "githubStars": 14,
          "npmWeekly": 212208,
          "pypiWeekly": 197064,
          "securityTxt": {
            "url": "https://merge.dev/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:41.019057373Z"
          },
          "llmsTxt": {
            "url": "https://docs.merge.dev/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:17:58.879439987Z"
          },
          "domain": {
            "domain": "merge.dev",
            "registered": "2020-02-09",
            "source": "https://pubapi.registry.google/rdap/domain/merge.dev",
            "checkedAt": "2026-10-04T13:08:11.061782068Z"
          },
          "pages": [
            {
              "url": "https://www.merge.dev/changelog",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:51:18.274010452Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "33f2429b9bed"
            },
            {
              "url": "https://www.merge.dev/pricing",
              "kind": "pricing",
              "status": 304,
              "checkedAt": "2026-10-04T15:51:24.300795079Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "7d9e39ad53d3"
            },
            {
              "url": "https://www.merge.dev/legal/privacy-policy",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:51:20.304715164Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "94b13e9b9b9d"
            },
            {
              "url": "https://www.merge.dev/legal/terms",
              "kind": "terms",
              "status": 304,
              "checkedAt": "2026-10-04T15:51:22.299855755Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "d729c69b95ee"
            }
          ],
          "updatedAt": "2026-10-04T22:35:26.636619354Z"
        }
      },
      {
        "slug": "xero",
        "name": "Xero API + MCP",
        "vendor": "Xero",
        "vendorUrl": "https://developer.xero.com",
        "kind": "http-api",
        "category": "accounting",
        "summary": "Accounting API for Xero organisations, with contacts, invoices, bills, payments, bank transactions, manual journals, the balance sheet, profit and loss and trial balance, plus payroll in some regions.",
        "url": "https://www.anchorterminal.com/tools/xero",
        "markdownUrl": "https://www.anchorterminal.com/tools/xero.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/xero.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/xero.json",
        "repo": "https://github.com/XeroAPI/xero-mcp-server",
        "license": "MIT",
        "transports": [
          "http",
          "stdio"
        ],
        "remoteUrl": "https://api.xero.com/api.xro/2.0",
        "packages": [
          {
            "registry": "npm",
            "name": "xero-node"
          },
          {
            "registry": "pypi",
            "name": "xero-python"
          },
          {
            "registry": "npm",
            "name": "@xeroapi/xero-mcp-server"
          }
        ],
        "auth": "oauth",
        "authNotes": "OAuth 2.0 authorisation code (PKCE for public clients), or client credentials through a \"custom connection\" that is tied to one organisation. Access tokens last 1,800 seconds and refresh tokens up to 60 days. Every call carries a Bearer token and an `xero-tenant-id` header naming the organisation. Apps created from 29 April 2026 must use the granular scopes (accounting.invoices, accounting.reports.profitandloss.read and so on) rather than the old bundled ones. The MCP server takes a client id and secret for a custom connection, or a ready-made bearer token.",
        "pricing": "freemium",
        "pricingNotes": "Developer Platform plans are priced in Australian dollars and billed monthly on connected organisations. Starter is free with 5 connections and 1,000 API calls a day per organisation. Core is AUD 35 a month for 50 connections, Plus AUD 245 for 1,000 and Advanced AUD 1,445 for 10,000, each with 5,000 calls a day per organisation and an egress allowance of 10, 50 or 250 GB (AUD 2.40 a GB over). Plus and above need App Certification, Advanced and Enterprise a security assessment. Enterprise is priced on application. The model took effect on 2 March 2026 for existing developers and 4 December 2025 for new ones (https://developer.xero.com/pricing/).",
        "priceSummary": "Freemium",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 51,
        "popularity": {
          "githubStars": 350,
          "npmWeekly": 394967,
          "pypiWeekly": 63610,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://developer.xero.com/documentation/",
        "openapi": "https://github.com/XeroAPI/Xero-OpenAPI",
        "capabilities": [
          "accounting.ledger",
          "accounting.invoices",
          "accounting.bills",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "freemium",
          "free-tier",
          "oauth",
          "mcp",
          "openapi",
          "typescript",
          "python",
          "webhooks",
          "status-page"
        ],
        "lastRelease": "2026-10-01",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 67.4,
          "grade": "B",
          "agentReady": false,
          "rank": 143,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 3,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 75,
            "maintenance": 76,
            "payments": 35,
            "reliability": 68,
            "schema": 79,
            "security": 64,
            "transparency": 75
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Granular OAuth scopes, such as accounting.reports.profitandloss.read, required for apps created from 29 April 2026. Developer docs, including the per-minute rate limits, only render with JavaScript.",
          "strengths": [
            "Granular OAuth scopes, such as accounting.reports.profitandloss.read, required for apps created from 29 April 2026",
            "Deprecations announced with 12 to 13 months' notice on a dated changelog",
            "Public OpenAPI specs, with an Idempotency-Key parameter on 101 accounting operations",
            "Free Starter tier for 5 connections and a Demo Company with sample data",
            "ISO 27001:2022, SOC 2 reports and a vulnerability disclosure programme"
          ],
          "weaknesses": [
            "Developer docs, including the per-minute rate limits, only render with JavaScript",
            "1,000 calls a day per organisation on the free tier, 5,000 on paid",
            "Official MCP server idle since 5 June 2026, with no CI, no annotations and no registry entry",
            "Prices in AUD only, and App Certification is needed above 50 connections",
            "No security.txt and no public subprocessor list"
          ],
          "agentNotes": [
            "Send xero-tenant-id on every call. The token alone doesn't name the organisation",
            "A bill is an Invoice with Type ACCPAY, a sales invoice is ACCREC. There's no separate bills endpoint",
            "Send an Idempotency-Key on creates so a retry after a timeout doesn't post twice",
            "Use If-Modified-Since and pageSize up to 100 to stay inside 1,000 calls a day on Starter",
            "Set XERO_SCOPES to read scopes only when the agent shouldn't write. The MCP still lists its write and delete tools"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "B",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 67.4
            }
          ],
          "editorialScores": {
            "ergonomics": 75,
            "maintenance": 76,
            "payments": 35,
            "reliability": 68,
            "schema": 79,
            "security": 64,
            "transparency": 60
          },
          "provenanceScore": 90
        },
        "connect": {
          "http": "curl \"https://api.xero.com/api.xro/2.0/Invoices?Statuses=AUTHORISED\u0026page=1\" \\\n  -H \"Authorization: Bearer $XERO_ACCESS_TOKEN\" -H \"xero-tenant-id: $XERO_TENANT_ID\" -H \"Accept: application/json\"",
          "claudeCode": "claude mcp add xero -e XERO_CLIENT_ID=$XERO_CLIENT_ID -e XERO_CLIENT_SECRET=$XERO_CLIENT_SECRET -- npx -y @xeroapi/xero-mcp-server@latest",
          "config": {
            "mcpServers": {
              "xero": {
                "args": [
                  "-y",
                  "@xeroapi/xero-mcp-server@latest"
                ],
                "command": "npx",
                "env": {
                  "XERO_CLIENT_ID": "${XERO_CLIENT_ID}",
                  "XERO_CLIENT_SECRET": "${XERO_CLIENT_SECRET}",
                  "XERO_SCOPES": "accounting.invoices accounting.contacts accounting.settings"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/accounting.ledger",
          "tool": "https://letme.dev/xero"
        },
        "area": "domain-data",
        "provenance": {
          "legalEntity": "Xero Limited",
          "domain": "xero.com",
          "domainRegistered": "1997-06-03",
          "endpointOnVendorDomain": true,
          "terms": "https://developer.xero.com/xero-developer-platform-terms-conditions/",
          "privacy": "https://www.xero.com/uk/legal/privacy/",
          "statusPage": "https://status.xero.com",
          "changelog": "https://developer.xero.com/changelog/",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The developer terms name Xero Limited, New Zealand company 1830488. UK customers contract with Xero (UK) Limited, company 06071722, per the UK terms of use.",
            "The pricing page lists prices in AUD only. Overages are invoiced in arrears each calendar month under the commercial terms.",
            "Developer documentation pages return only metadata without JavaScript, so an agent can't read the rate limits or OAuth guides by fetching them. The OpenAPI specs on GitHub are the readable alternative."
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/xero.json",
        "live": {
          "slug": "xero",
          "probe": {
            "target": "https://api.xero.com/api.xro/2.0",
            "method": "get",
            "lastAt": "2026-10-04T22:35:34.205819894Z",
            "lastOk": true,
            "lastStatus": 401,
            "lastMs": 143,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 99.63,
            "uptime30d": 99.89,
            "p50ms24h": 173,
            "p95ms24h": 329,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 255
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.xero.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T22:34:12.199595585Z"
          },
          "versions": [
            {
              "registry": "npm",
              "name": "@xeroapi/xero-mcp-server",
              "version": "0.0.17",
              "seenAt": "2026-10-04T16:44:24.072280577Z"
            },
            {
              "registry": "npm",
              "name": "xero-node",
              "version": "20.0.0",
              "seenAt": "2026-10-04T16:44:23.099924579Z"
            },
            {
              "registry": "pypi",
              "name": "xero-python",
              "version": "15.2.0",
              "released": "2026-09-04",
              "seenAt": "2026-10-04T16:44:23.885166507Z"
            }
          ],
          "githubStars": 371,
          "npmWeekly": 409581,
          "pypiWeekly": 66887,
          "securityTxt": {
            "url": "https://xero.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:57.485388689Z"
          },
          "domain": {
            "domain": "xero.com",
            "registered": "1997-06-03",
            "source": "https://rdap.verisign.com/com/v1/domain/xero.com",
            "checkedAt": "2026-10-04T13:09:35.716650808Z"
          },
          "pages": [
            {
              "url": "https://developer.xero.com/changelog/",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:40.551152039Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "5c6194315997"
            },
            {
              "url": "https://developer.xero.com/pricing/",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:42.862647228Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "d10e42decc3f"
            },
            {
              "url": "https://www.xero.com/uk/legal/privacy/",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:52:56.743879985Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "0bc24707273a"
            },
            {
              "url": "https://developer.xero.com/xero-developer-platform-terms-conditions/",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:44.819907604Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "d15f383fc531"
            }
          ],
          "updatedAt": "2026-10-04T22:35:34.205819894Z"
        }
      },
      {
        "slug": "freeagent",
        "name": "FreeAgent API",
        "vendor": "FreeAgent",
        "vendorUrl": "https://dev.freeagent.com",
        "kind": "http-api",
        "category": "accounting",
        "summary": "REST API for FreeAgent, the UK small-business accounting product owned by NatWest Group.",
        "url": "https://www.anchorterminal.com/tools/freeagent",
        "markdownUrl": "https://www.anchorterminal.com/tools/freeagent.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/freeagent.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/freeagent.json",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://api.freeagent.com/v2",
        "packages": [],
        "auth": "oauth",
        "authNotes": "OAuth 2.0 authorisation code. Register an app in the developer dashboard for an OAuth identifier and secret. Access tokens last one hour, and each refresh returns a new access token and a new refresh token, so store the replacement. One token per FreeAgent user who authorised the app. The same flow works against the sandbox at api.sandbox.freeagent.com.",
        "pricing": "byo-plan",
        "pricingNotes": "The API is free under section 4.1 of the API terms, with 30 days' notice before any fee is introduced. A live company needs a FreeAgent subscription, listed at £33 a month for a limited company on freeagent.com, or free with a NatWest, Royal Bank of Scotland, Ulster Bank or Mettle business account. The sandbox is a free temporary account at signup.sandbox.freeagent.com (https://dev.freeagent.com/docs/api_terms).",
        "priceSummary": "Your plan",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://dev.freeagent.com/docs",
        "capabilities": [
          "accounting.ledger",
          "accounting.invoices",
          "accounting.bills",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "byo-plan",
          "free-tier",
          "oauth",
          "uk",
          "status-page",
          "closed-source"
        ],
        "lastRelease": "2026-09-01",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 57.6,
          "grade": "C",
          "agentReady": false,
          "rank": 291,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 4,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 55,
            "maintenance": 60,
            "payments": 30,
            "reliability": 85,
            "schema": 50,
            "security": 44,
            "transparency": 78
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Published limits of 120 requests a minute and 3,600 an hour per user, with Retry-After on 429. No OAuth scopes, so a token can do anything the authorising user can.",
          "strengths": [
            "Published limits of 120 requests a minute and 3,600 an hour per user, with Retry-After on 429",
            "X-RateLimit-Test header that lowers the sandbox to 5 requests a minute for testing back-off",
            "API free under section 4.1 of the terms, with 30 days' notice before any fee",
            "Free sandbox with its own sign-up and API host",
            "Valid security.txt, a disclosure policy and Cyber Essentials Plus"
          ],
          "weaknesses": [
            "No OAuth scopes, so a token can do anything the authorising user can",
            "No OpenAPI spec, SDK, llms.txt or official MCP server",
            "Error responses aren't documented beyond the 429",
            "UK only, so VAT, MTD and HMRC filings are the tax model",
            "API terms bar migrating data to a competitor and using the API for benchmarking or comparison"
          ],
          "agentNotes": [
            "Store the new refresh token from every refresh response. The old one stops working",
            "Create the invoice, then PUT /v2/invoices/:id/transitions/mark_as_sent. A draft isn't visible to the customer",
            "Record a customer payment by explaining the bank transaction against the invoice. There's no invoice payments endpoint",
            "Send X-RateLimit-Test: true in the sandbox to see the 429 and Retry-After path before production does it to you",
            "Use view= and updated_since= on list calls and per_page up to 100 to stay under 120 requests a minute"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 2.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 57.6
            }
          ],
          "editorialScores": {
            "ergonomics": 55,
            "maintenance": 60,
            "payments": 30,
            "reliability": 85,
            "schema": 50,
            "security": 44,
            "transparency": 55
          },
          "provenanceScore": 100
        },
        "connect": {
          "http": "curl \"https://api.freeagent.com/v2/invoices?view=open\" \\\n  -H \"Authorization: Bearer $FREEAGENT_ACCESS_TOKEN\" -H \"Accept: application/json\""
        },
        "letme": {
          "capability": "https://letme.dev/accounting.ledger",
          "tool": "https://letme.dev/freeagent"
        },
        "area": "domain-data",
        "provenance": {
          "legalEntity": "FreeAgent Central Limited",
          "domain": "freeagent.com",
          "domainRegistered": "1999-04-15",
          "endpointOnVendorDomain": true,
          "terms": "https://dev.freeagent.com/docs/api_terms",
          "privacy": "https://www.freeagent.com/privacy/",
          "statusPage": "https://status.freeagent.com",
          "changelog": "https://dev.freeagent.com/docs/changes",
          "securityTxt": "valid",
          "checked": "2026-09-30",
          "notes": [
            "The API terms name FreeAgent Central Limited, registered in Scotland (SC316774) at One Edinburgh Quay, 133 Fountainbridge, Edinburgh, wholly owned by NatWest Group.",
            "security.txt at www.freeagent.com expires 2027-04-17 and points to a disclosure policy.",
            "The terms let FreeAgent introduce API fees on 30 days' notice."
          ],
          "score": 100
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/freeagent.json",
        "live": {
          "slug": "freeagent",
          "probe": {
            "target": "https://api.freeagent.com/v2",
            "method": "get",
            "lastAt": "2026-10-04T22:35:23.651084048Z",
            "lastOk": true,
            "lastStatus": 400,
            "lastMs": 63,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 64,
            "p95ms24h": 98,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 256
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.freeagent.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T22:33:55.623072879Z"
          },
          "securityTxt": {
            "url": "https://freeagent.com/.well-known/security.txt",
            "state": "valid",
            "expires": "2027-04-17T12:00:00.000Z",
            "checkedAt": "2026-10-04T15:16:05.554333751Z"
          },
          "domain": {
            "domain": "freeagent.com",
            "registered": "1999-04-15",
            "source": "https://rdap.verisign.com/com/v1/domain/freeagent.com",
            "checkedAt": "2026-10-04T13:09:45.721300128Z"
          },
          "pages": [
            {
              "url": "https://dev.freeagent.com/docs/changes",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:25.757492175Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "bcc7787d161d"
            },
            {
              "url": "https://www.freeagent.com/privacy/",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:50:18.517205932Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "12e01f7684e7"
            },
            {
              "url": "https://dev.freeagent.com/docs/api_terms",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:42:23.701205568Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "ca4e227eec74"
            }
          ],
          "updatedAt": "2026-10-04T22:35:23.651084048Z"
        }
      },
      {
        "slug": "rutter",
        "name": "Rutter Accounting API",
        "vendor": "Rutter",
        "vendorUrl": "https://www.rutter.com",
        "kind": "http-api",
        "category": "accounting",
        "summary": "Unified API for accounting, commerce and payment platforms, aimed at lenders and financial software developers.",
        "url": "https://www.anchorterminal.com/tools/rutter",
        "markdownUrl": "https://www.anchorterminal.com/tools/rutter.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/rutter.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/rutter.json",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://production.rutterapi.com/versioned",
        "packages": [],
        "auth": "api-key",
        "authNotes": "HTTP Basic auth with your client_id and client_secret, plus an `access_token` query parameter naming the connection, which you get from the Exchange Tokens endpoint after a user links through Rutter Link. Every call needs an `X-Rutter-Version` header (2024-08-31 is current). The sandbox at sandbox.rutterapi.com uses the same scheme.",
        "pricing": "paid",
        "pricingNotes": "A free starter plan gives sandbox data and a 30-day trial for a proof of concept against QuickBooks, Xero, FreshBooks and Zoho Books, with no card. Production access to every platform, including NetSuite, QuickBooks Desktop and Sage Intacct, is a custom quote from sales, with a 99.9 per cent monthly uptime SLA and one-hour response on critical issues. No per-connection price is published (https://www.rutter.com/pricing).",
        "priceSummary": "Paid",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://docs.rutter.com/rest/2024-08-31/basics",
        "openapi": "https://docs.rutter.com/rest/2024-08-31/spec",
        "capabilities": [
          "accounting.unified",
          "accounting.ledger",
          "accounting.invoices",
          "accounting.bills",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "paid",
          "no-card",
          "openapi",
          "webhooks",
          "async-jobs",
          "enterprise",
          "status-page",
          "closed-source"
        ],
        "lastRelease": "2026-09-24",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 55.8,
          "grade": "C",
          "agentReady": false,
          "rank": 311,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 5,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 67,
            "maintenance": 62,
            "payments": 20,
            "reliability": 67,
            "schema": 79,
            "security": 36,
            "transparency": 51
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds. Production prices are quote-only.",
          "strengths": [
            "Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds",
            "Error codes 450, 451, 452 and 550 that separate the platform's failure from Rutter's",
            "OpenAPI spec per dated API version, with an upgrade guide listing breaking changes",
            "30-day sandbox trial with QuickBooks, Xero, FreshBooks and Zoho Books, no card",
            "99.9 per cent monthly uptime SLA published on the pricing page"
          ],
          "weaknesses": [
            "Production prices are quote-only",
            "Terms and privacy policy are Google Drive PDFs, and no legal entity is named on the site",
            "The per-connection access_token travels as a URL query parameter",
            "Four API incidents in September 2026, including about 25 hours of high latency and errors on 3 and 4 September",
            "No SDK, llms.txt or MCP server from the vendor"
          ],
          "agentNotes": [
            "Send X-Rutter-Version: 2024-08-31 on every call",
            "Send an Idempotency-Key on every create so a retry after a timeout doesn't write twice",
            "Use response_mode=prefer_sync and handle the 202 async_response anyway",
            "Treat 452 as the ledger throttling you and 429 as Rutter's 500-per-10-seconds organisation limit",
            "Keep access_token out of logged URLs. The docs only show it as a query parameter"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 55.8
            }
          ],
          "editorialScores": {
            "ergonomics": 67,
            "maintenance": 62,
            "payments": 20,
            "reliability": 67,
            "schema": 79,
            "security": 36,
            "transparency": 26
          },
          "provenanceScore": 75
        },
        "connect": {
          "http": "curl \"https://sandbox.rutterapi.com/versioned/accounting/invoices?access_token=$RUTTER_ACCESS_TOKEN\" \\\n  -u \"$RUTTER_CLIENT_ID:$RUTTER_CLIENT_SECRET\" -H \"X-Rutter-Version: 2024-08-31\""
        },
        "letme": {
          "capability": "https://letme.dev/accounting.unified",
          "tool": "https://letme.dev/rutter"
        },
        "area": "domain-data",
        "provenance": {
          "legalEntity": "Rutter",
          "domain": "rutter.com",
          "domainRegistered": "1996-10-28",
          "domainNote": "rutter.com was registered in 1996, long before the company, so the domain was bought later. The API runs on rutterapi.com.",
          "endpointOnVendorDomain": false,
          "terms": "https://drive.google.com/file/d/1J77WNI4JS_WjFiXn9NgQVBy_N_unqpCn/view",
          "privacy": "https://drive.google.com/file/d/1uZ76Be9jAih5g8kj8bKEAApCnMb6TQVL/view",
          "statusPage": "https://status.rutterapi.com",
          "changelog": "https://docs.rutter.com/changelog",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The footer gives an address at 3 East 28th St, Floor 5, New York, NY 10016 and a copyright line reading Rutter, with no company suffix. We couldn't read the Google Drive PDFs to confirm the legal name.",
            "The API and status page live on rutterapi.com while the site and docs are on rutter.com. Both are the vendor's.",
            "A trust centre at trust.rutter.com holds the security documentation."
          ],
          "score": 75
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/rutter.json",
        "live": {
          "slug": "rutter",
          "probe": {
            "target": "https://production.rutterapi.com/versioned",
            "method": "get",
            "lastAt": "2026-10-04T22:35:30.726875039Z",
            "lastOk": true,
            "lastStatus": 401,
            "lastMs": 304,
            "lastNote": "asks for credentials",
            "authRequired": true,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 307,
            "p95ms24h": 360,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 256
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.rutterapi.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T22:34:08.002465045Z"
          },
          "securityTxt": {
            "url": "https://rutter.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:43.591485119Z"
          },
          "domain": {
            "domain": "rutter.com",
            "registered": "1996-10-28",
            "source": "https://rdap.verisign.com/com/v1/domain/rutter.com",
            "checkedAt": "2026-10-04T13:03:31.134242543Z"
          },
          "pages": [
            {
              "url": "https://docs.rutter.com/changelog",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:44:00.69234572Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "92fa990bcd51"
            },
            {
              "url": "https://www.rutter.com/pricing",
              "kind": "pricing",
              "status": 304,
              "checkedAt": "2026-10-04T15:52:01.742055638Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "4091577edbf3"
            },
            {
              "url": "https://drive.google.com/file/d/1uZ76Be9jAih5g8kj8bKEAApCnMb6TQVL/view",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:44:26.201246267Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "d009b71cc585"
            },
            {
              "url": "https://drive.google.com/file/d/1J77WNI4JS_WjFiXn9NgQVBy_N_unqpCn/view",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:44:23.771110708Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "ca761d70fc05"
            }
          ],
          "updatedAt": "2026-10-04T22:35:30.726875039Z"
        }
      },
      {
        "slug": "invoice-ninja",
        "name": "Invoice Ninja API",
        "vendor": "Invoice Ninja",
        "vendorUrl": "https://www.invoiceninja.com",
        "kind": "http-api",
        "category": "accounting",
        "summary": "Source-available invoicing platform (Laravel) you can self-host or use hosted at invoicing.co.",
        "url": "https://www.anchorterminal.com/tools/invoice-ninja",
        "markdownUrl": "https://www.anchorterminal.com/tools/invoice-ninja.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/invoice-ninja.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/invoice-ninja.json",
        "repo": "https://github.com/invoiceninja/invoiceninja",
        "license": "Elastic License 2.0",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://invoicing.co/api/v1",
        "packages": [],
        "auth": "api-key",
        "authNotes": "An API token from Settings, Account Management, Integrations, sent as `X-API-TOKEN`, plus `X-Requested-With: XMLHttpRequest` on every call. Self-hosted installs can also log in with email and password to get a token, and need `X-API-SECRET` on the login route when API_SECRET is set in .env. The demo at demo.invoiceninja.com accepts the token `TOKEN`.",
        "pricing": "freemium",
        "pricingNotes": "Hosted plans are Free (up to 5 clients, 1 user, unlimited invoices), Ninja Pro at $14 a month or $140 a year with unlimited clients and REST API access, Enterprise from $18 a month for 1 to 2 users up to $300 a month for 51 to 100 users, adding bank sync and PEPPOL e-invoicing, and Premium Business from $280 a year with developer support. Self-hosting is free under the Elastic License 2.0 with every Pro and Enterprise feature, and a white-label licence to remove the branding is $40 a year (https://invoiceninja.com/pricing-plans/).",
        "priceSummary": "$14 / mo",
        "where": "hosted",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": 10000,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://api-docs.invoicing.co/",
        "openapi": "https://github.com/invoiceninja/invoiceninja/blob/v5-stable/openapi/api-docs.yaml",
        "capabilities": [
          "accounting.invoices",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "self-hosted",
          "source-available",
          "freemium",
          "free-tier",
          "openapi",
          "webhooks",
          "status-page"
        ],
        "lastRelease": "2026-09-18",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 52.4,
          "grade": "D",
          "agentReady": false,
          "rank": 342,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 6,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 60,
            "maintenance": 83,
            "payments": 35,
            "reliability": 36,
            "schema": 66,
            "security": 48,
            "transparency": 65
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": -1,
          "negativeNotes": [
            "-1: two moderate stored XSS advisories published 22 and 23 March 2026, GHSA-98wm-cxpw-847p (invoice line items, CVSS 5.4, fixed in 5.13.4) and GHSA-xph7-9749-56mh (product notes). Fixed and disclosed in public, so the deduction is small (https://github.com/invoiceninja/invoiceninja/security/advisories)"
          ],
          "verdict": "OpenAPI 3 spec with 379 operations and curl and PHP examples on each path. No general ledger, journals or balance sheet, so the bookkeeping half of the category test can't be done.",
          "strengths": [
            "OpenAPI 3 spec with 379 operations and curl and PHP examples on each path",
            "Public demo endpoint with the token TOKEN, no account needed",
            "Self-hosting is free with every Pro and Enterprise feature",
            "16 tagged releases since 3 July, with PHPUnit CI across PHP 8.2 to 8.5",
            "Security advisories published on GitHub with fixed versions"
          ],
          "weaknesses": [
            "No general ledger, journals or balance sheet, so the bookkeeping half of the category test can't be done",
            "Rate limits aren't in the docs, only in the source",
            "Status page shows seven days and has no history page",
            "No scoped or read-only API tokens",
            "Hosted Free plan excludes the REST API"
          ],
          "agentNotes": [
            "Send X-Requested-With: XMLHttpRequest with X-API-TOKEN on every call",
            "Prototype against demo.invoiceninja.com with X-API-TOKEN: TOKEN before asking for real credentials",
            "Add ?mark_sent=true to the save to make an invoice live, or ?send_email=true to send it. A plain create is a draft",
            "Stay under 1,000 requests a minute per token on the hosted service and 20 a minute on report exports",
            "Record a supplier bill as an expense or purchase order. There's no bills resource"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 2.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "D",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 52.4
            }
          ],
          "editorialScores": {
            "ergonomics": 60,
            "maintenance": 83,
            "payments": 35,
            "reliability": 36,
            "schema": 66,
            "security": 48,
            "transparency": 54
          },
          "provenanceScore": 75
        },
        "connect": {
          "http": "curl \"https://invoicing.co/api/v1/invoices?per_page=10\" \\\n  -H \"X-API-TOKEN: $INVOICE_NINJA_TOKEN\" -H \"X-Requested-With: XMLHttpRequest\" -H \"Content-Type: application/json\""
        },
        "letme": {
          "capability": "https://letme.dev/accounting.invoices",
          "tool": "https://letme.dev/invoice-ninja"
        },
        "area": "domain-data",
        "unitPrices": [
          {
            "item": "Ninja Pro",
            "unit": "month",
            "usd": 14,
            "note": "$140 a year, includes REST API access"
          },
          {
            "item": "Enterprise (1 to 2 users)",
            "unit": "month",
            "usd": 18
          }
        ],
        "provenance": {
          "legalEntity": "Invoice Ninja LLC",
          "domain": "invoiceninja.com",
          "domainRegistered": "2013-09-29",
          "endpointOnVendorDomain": false,
          "terms": "https://invoiceninja.github.io/docs/legal/terms-of-service",
          "privacy": "https://invoiceninja.github.io/docs/legal/data-privacy",
          "statusPage": "https://status.invoiceninja.com",
          "changelog": "https://github.com/invoiceninja/invoiceninja/releases",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The hosted API lives on invoicing.co while the brand and terms are on invoiceninja.com. Both are named in the terms of service as Invoice Ninja LLC domains.",
            "The terms of service give no registered address or jurisdiction for Invoice Ninja LLC.",
            "Terms and privacy pages are published from the docs repository on GitHub Pages and their paths changed in 2026, so older links return 404.",
            "The status page runs on Oh Dear and monitors invoiceninja.com and invoicing.co."
          ],
          "score": 75
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/invoice-ninja.json",
        "live": {
          "slug": "invoice-ninja",
          "probe": {
            "target": "https://invoicing.co/api/v1",
            "method": "get",
            "lastAt": "2026-10-04T22:35:25.165560124Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 319,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 308,
            "p95ms24h": 358,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 256
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.invoiceninja.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T21:40:10.121347917Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "invoiceninja/invoiceninja",
              "version": "v5.13.43",
              "released": "2026-09-18",
              "seenAt": "2026-10-04T16:30:25.367276052Z"
            }
          ],
          "githubStars": 10214,
          "securityTxt": {
            "url": "https://invoiceninja.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:36.997657319Z"
          },
          "domain": {
            "domain": "invoiceninja.com",
            "registered": "2013-09-29",
            "source": "https://rdap.verisign.com/com/v1/domain/invoiceninja.com",
            "checkedAt": "2026-10-04T13:07:52.957286244Z"
          },
          "pages": [
            {
              "url": "https://invoiceninja.com/pricing-plans/",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:45:07.411119564Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "c58a0d69907d"
            },
            {
              "url": "https://invoiceninja.github.io/docs/legal/data-privacy",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:45:10.121396691Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "84bc25c802b0"
            },
            {
              "url": "https://invoiceninja.github.io/docs/legal/terms-of-service",
              "kind": "terms",
              "status": 304,
              "checkedAt": "2026-10-04T15:45:12.220569343Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "6f674e061225"
            }
          ],
          "updatedAt": "2026-10-04T22:35:25.165560124Z"
        }
      },
      {
        "slug": "quickbooks-online",
        "name": "QuickBooks Online API + MCP",
        "vendor": "Intuit",
        "vendorUrl": "https://developer.intuit.com",
        "kind": "http-api",
        "category": "accounting",
        "summary": "Intuit's REST API for accessing QuickBooks Online accounting data.",
        "url": "https://www.anchorterminal.com/tools/quickbooks-online",
        "markdownUrl": "https://www.anchorterminal.com/tools/quickbooks-online.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/quickbooks-online.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/quickbooks-online.json",
        "repo": "https://github.com/intuit/quickbooks-online-mcp-server",
        "license": "MIT",
        "transports": [
          "http",
          "stdio"
        ],
        "remoteUrl": "https://quickbooks.api.intuit.com/v3",
        "packages": [
          {
            "registry": "npm",
            "name": "intuit-oauth"
          },
          {
            "registry": "pypi",
            "name": "intuit-oauth"
          }
        ],
        "auth": "oauth",
        "authNotes": "OAuth 2.0 authorisation code with OpenID Connect. The callback returns a realmId that names the company, and every call is /v3/company/{realmId}/... with a Bearer token. Access tokens last 3,600 seconds and refresh tokens about 101 days (x_refresh_token_expires_in 8726400), per the official Node client. The sandbox uses the same flow against sandbox-quickbooks.api.intuit.com with an app's development keys.",
        "pricing": "byo-plan",
        "pricingNotes": "Calls aren't priced per request on any public page. Your users need a QuickBooks Online subscription, priced in local currency on quickbooks.intuit.com, and sandbox companies are free with a developer account. Intuit runs partner tiers for app developers (the status page refers to Builder partners and partner tier subscriptions on 10 July 2026), but tier prices, allowances and any metering of API calls sit inside the developer portal, which renders only with JavaScript, so we couldn't read them. Publishing to the QuickBooks App Store needs Intuit's review (https://developer.intuit.com/app/developer/qbo/docs/get-started).",
        "priceSummary": "Your plan",
        "where": "both",
        "x402": {
          "level": "no",
          "endpoints": []
        },
        "toolCount": 145,
        "popularity": {
          "githubStars": 145,
          "npmWeekly": 399820,
          "pypiWeekly": 259619,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://developer.intuit.com/app/developer/qbo/docs/get-started",
        "capabilities": [
          "accounting.ledger",
          "accounting.invoices",
          "accounting.bills",
          "accounting.reports"
        ],
        "tags": [
          "hosted",
          "byo-plan",
          "free-tier",
          "oauth",
          "mcp",
          "typescript",
          "python",
          "webhooks",
          "status-page",
          "closed-source"
        ],
        "lastRelease": "2026-09-17",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 49.3,
          "grade": "D",
          "agentReady": false,
          "rank": 369,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 7,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 68,
            "maintenance": 85,
            "payments": 30,
            "reliability": 45,
            "schema": 43,
            "security": 38,
            "transparency": 51
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "low",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Official MCP server from Intuit with 145 tools and flags to remove write, update or delete tools. Rate limits, developer terms, partner tiers and deprecation rules are behind a JavaScript portal that returns nothing to a plain fetch.",
          "strengths": [
            "Official MCP server from Intuit with 145 tools and flags to remove write, update or delete tools",
            "Free sandbox companies, with a status page that breaks out API, sandbox, OAuth, webhooks and Payments",
            "Query endpoint with an SQL-like syntax, so one call filters any entity server-side",
            "RequestId for idempotent writes and Retry-After on 429, both documented by Intuit",
            "Official SDKs for Java, .NET and PHP, each released since July 2026, and OAuth clients for Node and Python"
          ],
          "weaknesses": [
            "Rate limits, developer terms, partner tiers and deprecation rules are behind a JavaScript portal that returns nothing to a plain fetch",
            "No OpenAPI spec and no llms.txt. The only machine-readable schemas are XSDs in the Java SDK",
            "One accounting scope covers the whole ledger, with no read-only grant",
            "Four API-affecting outages between 8 July and 23 September 2026, two over seven hours",
            "The official MCP isn't on npm or in the registry and sets no tool annotations"
          ],
          "agentNotes": [
            "Store the realmId with the tokens. Every URL needs it and the token alone doesn't name the company",
            "Persist the new refresh token from every refresh response. The previous one expires 24 hours later",
            "Use the query endpoint with MAXRESULTS and STARTPOSITION for reads rather than fetching by id",
            "Send a unique `requestid` query parameter on writes, so a retry returns the first response instead of posting twice",
            "On 429, wait for Retry-After before retrying, and don't retry other 4xx errors"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 2,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "low",
              "grade": "D",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 49.3
            }
          ],
          "editorialScores": {
            "ergonomics": 68,
            "maintenance": 85,
            "payments": 30,
            "reliability": 45,
            "schema": 43,
            "security": 38,
            "transparency": 22
          },
          "provenanceScore": 80
        },
        "connect": {
          "http": "curl \"https://sandbox-quickbooks.api.intuit.com/v3/company/$QBO_REALM_ID/query?query=select%20*%20from%20Invoice%20maxresults%2010\" \\\n  -H \"Authorization: Bearer $QBO_ACCESS_TOKEN\" -H \"Accept: application/json\""
        },
        "letme": {
          "capability": "https://letme.dev/accounting.ledger",
          "tool": "https://letme.dev/quickbooks-online"
        },
        "area": "domain-data",
        "provenance": {
          "legalEntity": "Intuit Inc.",
          "domain": "intuit.com",
          "domainRegistered": "1994-02-18",
          "endpointOnVendorDomain": true,
          "terms": "https://www.intuit.com/legal/terms/",
          "privacy": "https://www.intuit.com/privacy/statement/",
          "statusPage": "https://status.developer.intuit.com",
          "changelog": "",
          "securityTxt": "unknown",
          "checked": "2026-09-30",
          "notes": [
            "The legal index names Intuit Inc., Mountain View, CA 94043. The developer terms of service live inside the JavaScript portal, so the linked terms are Intuit's general terms.",
            "www.intuit.com/.well-known/security.txt returned a 400 error, so we couldn't tell whether one exists. Intuit runs a security site at security.intuit.com.",
            "The privacy statement was last updated 9 March 2026."
          ],
          "score": 80
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/quickbooks-online.json",
        "live": {
          "slug": "quickbooks-online",
          "probe": {
            "target": "https://quickbooks.api.intuit.com/v3",
            "method": "get",
            "lastAt": "2026-10-04T22:35:29.713321562Z",
            "lastOk": true,
            "lastStatus": 400,
            "lastMs": 595,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 592,
            "p95ms24h": 633,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 256
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.developer.intuit.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T22:34:07.203984512Z"
          },
          "versions": [
            {
              "registry": "npm",
              "name": "intuit-oauth",
              "version": "4.2.5",
              "seenAt": "2026-10-04T16:37:54.869303662Z"
            },
            {
              "registry": "pypi",
              "name": "intuit-oauth",
              "version": "1.2.7",
              "released": "2026-07-22",
              "seenAt": "2026-10-04T16:37:55.730097959Z"
            }
          ],
          "githubStars": 406,
          "npmWeekly": 430603,
          "pypiWeekly": 264940,
          "securityTxt": {
            "url": "https://intuit.com/.well-known/security.txt",
            "state": "unknown",
            "checkedAt": "2026-10-04T15:16:02.319821055Z"
          },
          "domain": {
            "domain": "intuit.com",
            "registered": "1994-02-18",
            "source": "https://rdap.verisign.com/com/v1/domain/intuit.com",
            "checkedAt": "2026-10-04T13:07:40.944976852Z"
          },
          "pages": [
            {
              "url": "https://www.intuit.com/privacy/statement/",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:50:53.338786361Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "bdf88eaea616"
            },
            {
              "url": "https://www.intuit.com/legal/terms/",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:50:51.130631537Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "6dec63558567"
            }
          ],
          "updatedAt": "2026-10-04T22:35:29.713321562Z"
        }
      },
      {
        "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.6,
          "grade": "E",
          "agentReady": false,
          "rank": 397,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 8,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 61,
            "maintenance": 14,
            "payments": 30,
            "reliability": 35,
            "schema": 48,
            "security": 57,
            "transparency": 68
          },
          "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.",
          "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.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 45.6
            }
          ],
          "editorialScores": {
            "ergonomics": 61,
            "maintenance": 14,
            "payments": 30,
            "reliability": 35,
            "schema": 48,
            "security": 57,
            "transparency": 56
          },
          "provenanceScore": 80
        },
        "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": 80
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/freshbooks.json",
        "live": {
          "slug": "freshbooks",
          "probe": {
            "target": "https://api.freshbooks.com",
            "method": "get",
            "lastAt": "2026-10-04T22:35:23.667619099Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 123,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 138,
            "p95ms24h": 186,
            "samples24h": 272,
            "samples30d": 884,
            "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": 256,
                "ok": 256
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.freshbooks.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-04T22:33:55.865691186Z"
          },
          "versions": [
            {
              "registry": "github",
              "name": "freshbooks/freshbooks-python-sdk",
              "version": "release/1.2.1",
              "released": "2023-04-24",
              "seenAt": "2026-10-04T16:27:33.686534225Z"
            },
            {
              "registry": "npm",
              "name": "@freshbooks/api",
              "version": "4.1.0",
              "seenAt": "2026-10-04T16:27:30.852425352Z"
            },
            {
              "registry": "pypi",
              "name": "freshbooks-sdk",
              "version": "1.3.0",
              "released": "2024-10-08",
              "seenAt": "2026-10-04T16:27:33.500867221Z"
            }
          ],
          "githubStars": 11,
          "npmWeekly": 905,
          "pypiWeekly": 246,
          "securityTxt": {
            "url": "https://freshbooks.com/.well-known/security.txt",
            "state": "unknown",
            "checkedAt": "2026-10-04T15:15:40.438598204Z"
          },
          "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-04T15:50:23.777400508Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "98986299b19f"
            },
            {
              "url": "https://www.freshbooks.com/policies/privacy",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:50:19.717552449Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "12e269175e94"
            },
            {
              "url": "https://www.freshbooks.com/policies/terms-of-service",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:50:21.795401021Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "ca7450fe9735"
            }
          ],
          "updatedAt": "2026-10-04T22:35:23.667619099Z"
        }
      }
    ]
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/categories/accounting",
    "json": "https://www.anchorterminal.com/categories/accounting.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/categories/accounting.md",
    "slim": "https://www.anchorterminal.com/categories/accounting.min.md"
  },
  "markdown": "APIs for bookkeeping and invoicing: ledgers, invoices, bills, expenses and reports, straight from the accounting software or through one API across many. Compared on the objects covered, write access, sandboxes, rate limits and price.\n\n- Tools ranked: 8 · agent-ready (BB or better): 2 · accept x402: 0 · hosted endpoints: 8 · desk reviews by the panel: 16\n- JSON: https://www.anchorterminal.com/api/v1/tools.json (list) · https://www.anchorterminal.com/api/v1/rankings.json (ranked) · https://www.anchorterminal.com/api/v1/x402.json (payable) · https://www.anchorterminal.com/api/v1/capabilities.json (by capability)\n- Grades run AA, A, BB, B, C, D, E, F · methodology: https://www.anchorterminal.com/benchmark/\n\n- Capabilities in this category: accounting.ledger, accounting.invoices, accounting.bills, accounting.reports, accounting.unified\n- https://letme.dev/accounting.ledger picks the top-graded tool in this list and says how to call it direct; calling through letme comes later (https://www.anchorterminal.com/letme/index.md)\n\n## Ranking\n\n| # | Tool | Vendor | Kind | Category | Grade | Score | Confidence | x402 | Auth | Where | Reviews | Page |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 60 | Apideck Accounting API + MCP | Apideck | HTTP API | Accounting | BB | 73.2 | medium | no | API key | hosted + local | 3.5/5 (2) | https://www.anchorterminal.com/tools/apideck-accounting.md |\n| 100 | Merge Accounting API | Merge | HTTP API | Accounting | BB | 70.2 | medium | no | API key | hosted | 3.5/5 (2) | https://www.anchorterminal.com/tools/merge-accounting.md |\n| 143 | Xero API + MCP | Xero | HTTP API | Accounting | B | 67.4 | medium | no | OAuth | hosted + local | 3.5/5 (2) | https://www.anchorterminal.com/tools/xero.md |\n| 291 | FreeAgent API | FreeAgent | HTTP API | Accounting | C | 57.6 | medium | no | OAuth | hosted | 2.5/5 (2) | https://www.anchorterminal.com/tools/freeagent.md |\n| 311 | Rutter Accounting API | Rutter | HTTP API | Accounting | C | 55.8 | medium | no | API key | hosted | 3/5 (2) | https://www.anchorterminal.com/tools/rutter.md |\n| 342 | Invoice Ninja API | Invoice Ninja | HTTP API | Accounting | D | 52.4 | medium | no | API key | hosted | 2.5/5 (2) | https://www.anchorterminal.com/tools/invoice-ninja.md |\n| 369 | QuickBooks Online API + MCP | Intuit | HTTP API | Accounting | D | 49.3 | low | no | OAuth | hosted + local | 2/5 (2) | https://www.anchorterminal.com/tools/quickbooks-online.md |\n| 397 | FreshBooks API | FreshBooks | HTTP API | Accounting | E | 45.6 | medium | no | OAuth | hosted | 3/5 (2) | https://www.anchorterminal.com/tools/freshbooks.md |\n\nScores are from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/), with Performance and Task success pending. p95 latency and context cost come from our probes, which haven't run yet.\n\n## Summaries\n\n### 60. Apideck Accounting API + MCP, BB (73.2)\n\nUnified accounting API for invoices, bills, payments, journal entries and financial reports across platforms including QuickBooks, Xero and NetSuite. 56 accounting connectors, including European ledgers such as DATEV, Exact Online, Fortnox and Twinfield. No published rate limits of Apideck's own, only connector limits mirrored in headers.\n\n- Page: https://www.anchorterminal.com/tools/apideck-accounting · Markdown: https://www.anchorterminal.com/tools/apideck-accounting.md · JSON: https://www.anchorterminal.com/api/v1/tools/apideck-accounting.json\n- Capabilities: accounting.unified, accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://unify.apideck.com/accounting`\n\n### 100. Merge Accounting API, BB (70.2)\n\nUnified accounting API for invoices, payments, expenses, journal entries and financial statements across platforms including QuickBooks, Xero and NetSuite. 12 accounting platforms behind one set of common models, with writes. Launch jumps from free to $650 a month at the fourth linked account.\n\n- Page: https://www.anchorterminal.com/tools/merge-accounting · Markdown: https://www.anchorterminal.com/tools/merge-accounting.md · JSON: https://www.anchorterminal.com/api/v1/tools/merge-accounting.json\n- Capabilities: accounting.unified, accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://api.merge.dev/api/accounting/v1`\n\n### 143. Xero API + MCP, B (67.4)\n\nAccounting API for Xero organisations, with contacts, invoices, bills, payments, bank transactions, manual journals, the balance sheet, profit and loss and trial balance, plus payroll in some regions. Granular OAuth scopes, such as accounting.reports.profitandloss.read, required for apps created from 29 April 2026. Developer docs, including the per-minute rate limits, only render with JavaScript.\n\n- Page: https://www.anchorterminal.com/tools/xero · Markdown: https://www.anchorterminal.com/tools/xero.md · JSON: https://www.anchorterminal.com/api/v1/tools/xero.json\n- Capabilities: accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://api.xero.com/api.xro/2.0`\n\n### 291. FreeAgent API, C (57.6)\n\nREST API for FreeAgent, the UK small-business accounting product owned by NatWest Group. Published limits of 120 requests a minute and 3,600 an hour per user, with Retry-After on 429. No OAuth scopes, so a token can do anything the authorising user can.\n\n- Page: https://www.anchorterminal.com/tools/freeagent · Markdown: https://www.anchorterminal.com/tools/freeagent.md · JSON: https://www.anchorterminal.com/api/v1/tools/freeagent.json\n- Capabilities: accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://api.freeagent.com/v2`\n\n### 311. Rutter Accounting API, C (55.8)\n\nUnified API for accounting, commerce and payment platforms, aimed at lenders and financial software developers. Idempotency-Key header on writes, and prefer_sync writes that fall back to async after 30 seconds. Production prices are quote-only.\n\n- Page: https://www.anchorterminal.com/tools/rutter · Markdown: https://www.anchorterminal.com/tools/rutter.md · JSON: https://www.anchorterminal.com/api/v1/tools/rutter.json\n- Capabilities: accounting.unified, accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://production.rutterapi.com/versioned`\n\n### 342. Invoice Ninja API, D (52.4)\n\nSource-available invoicing platform (Laravel) you can self-host or use hosted at invoicing.co. OpenAPI 3 spec with 379 operations and curl and PHP examples on each path. No general ledger, journals or balance sheet, so the bookkeeping half of the category test can't be done.\n\n- Page: https://www.anchorterminal.com/tools/invoice-ninja · Markdown: https://www.anchorterminal.com/tools/invoice-ninja.md · JSON: https://www.anchorterminal.com/api/v1/tools/invoice-ninja.json\n- Capabilities: accounting.invoices, accounting.reports · endpoint: `https://invoicing.co/api/v1`\n\n### 369. QuickBooks Online API + MCP, D (49.3)\n\nIntuit's REST API for accessing QuickBooks Online accounting data. Official MCP server from Intuit with 145 tools and flags to remove write, update or delete tools. Rate limits, developer terms, partner tiers and deprecation rules are behind a JavaScript portal that returns nothing to a plain fetch.\n\n- Page: https://www.anchorterminal.com/tools/quickbooks-online · Markdown: https://www.anchorterminal.com/tools/quickbooks-online.md · JSON: https://www.anchorterminal.com/api/v1/tools/quickbooks-online.json\n- Capabilities: accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://quickbooks.api.intuit.com/v3`\n\n### 397. FreshBooks API, E (45.6)\n\nREST API for FreshBooks, the invoicing-first accounting product for freelancers and small firms. OAuth scopes split read and write per resource, such as user:invoices:read. Rate limits have no numbers, status code or headers.\n\n- Page: https://www.anchorterminal.com/tools/freshbooks · Markdown: https://www.anchorterminal.com/tools/freshbooks.md · JSON: https://www.anchorterminal.com/api/v1/tools/freshbooks.json\n- Capabilities: accounting.ledger, accounting.invoices, accounting.bills, accounting.reports · endpoint: `https://api.freshbooks.com`\n\n## How we test this category\n\nAn agent creates a customer and an invoice, records a payment, reads a profit and loss report and posts a bill in a sandbox company. We check which steps work, the rate limits and how errors come back. This test hasn't run yet, so Task success is pending and the grades here come from the categories assessed from public evidence.\n\n## Indexed, not reviewed (32)\n\nSorted into this category from public catalogues, with facts and our own checks but no score, grade or rank (https://www.anchorterminal.com/indexed/index.md).\n\n| Listing | Kind | What it does | Why it's here |\n| --- | --- | --- | --- |\n| [ai-netcafe](https://www.anchorterminal.com/tools/ainetcafe-ai-netcafe.md) | MCP server | Tables and ledgers checked by arithmetic, not by a model. 24 tools. MCP 2026-07-28 ready. | vendor's own |\n| [Attestwire](https://www.anchorterminal.com/tools/attestwire-en16931.md) | MCP server | EN 16931: validate invoice data, UBL/CII or PDF; emit XRechnung/Peppol XML, never a PDF. | vendor's own |\n| [basebalance.cloud — x402 RPC \u0026 MCP gateway](https://www.anchorterminal.com/tools/basebalance.md) | MCP server | USDC-gated Base JSON-RPC: free 10 req/min, $0.50 per 10k. Failover, cache, /mcp, ledger. | vendor's own, widely used |\n| [BeeL](https://www.anchorterminal.com/tools/beel-mcp.md) | MCP server | Spanish e-invoicing with VeriFactu (AEAT): issue invoices, manage customers, validate NIFs. | vendor's own |\n| [billingserv.com MCP server](https://www.anchorterminal.com/tools/billingserv-mcp.md) | MCP server | BillingServ MCP server for customers, invoices, orders, packages, licenses, and revenue reports. | vendor's own |\n| [burdenrateledger-tools](https://www.anchorterminal.com/tools/burdenrateledger-tools.md) | MCP server | BurdenRateLedger: the monthly US search demand across the tools this product ships, read from... | vendor's own |\n| [businys.app MCP server](https://www.anchorterminal.com/tools/businys-mcp-server.md) | MCP server | 221 MCP tools across 26 practices for independent professionals. Clients, invoices, contracts. | vendor's own |\n| [cnb](https://www.anchorterminal.com/tools/cz-agents-cnb.md) | MCP server | Official ČNB exchange rates — daily \u0026 historical CZK vs EUR, USD, 30+ currencies. For accounting. | vendor's own |\n| [Ekwo OS — open source accounting: ledger, invoices and VAT on your own Supabase or Postgres](https://www.anchorterminal.com/tools/ekwo-mcp.md) | MCP server | Double-entry books an agent keeps as the user: invoices, VAT returns, 107 country packs. | vendor's own |\n| [Factuarea](https://www.anchorterminal.com/tools/factuarea-mcp.md) | MCP server | Spanish invoicing with VeriFactu (AEAT): invoices, quotes, contacts, products, taxes and filings. | vendor's own |\n| [Frihet ERP](https://www.anchorterminal.com/tools/frihet-erp.md) | MCP server | AI-native ERP MCP: ES/EU fiscal compliance (VeriFactu/TicketBAI/Facturae), invoicing, tax, banking | vendor's own |\n| [gl-importer-mcp](https://www.anchorterminal.com/tools/synder-gl-importer-mcp.md) | MCP server | Import CSV/XLSX accounting data into QuickBooks Online or Xero via the Synder Importer API. | vendor's own |\n| [Holdings](https://www.anchorterminal.com/tools/getholdings-mcp.md) | MCP server | Let your AI send invoices and take payment — card or ACH. Free. | vendor's own |\n| [invoice](https://www.anchorterminal.com/tools/yaktool-invoice.md) | MCP server | Check invoice mandatory fields, validate a draft before issuing, and look up EN 16931 code lists. | vendor's own |\n| [invoicebox.ru MCP server](https://www.anchorterminal.com/tools/invoicebox-mcp-server.md) | MCP server | MCP-сервер Инвойсбокса: счета, отгрузки и возвраты по просьбе человека | vendor's own |\n| [InvoiceXML](https://www.anchorterminal.com/tools/invoicexml.md) | MCP server | Create, validate, convert \u0026 extract compliant e-invoices (UBL, Factur-X, ZUGFeRD, XRechnung) | vendor's own |\n| [llm-bus](https://www.anchorterminal.com/tools/llm-bus.md) | MCP server | Coordinate multiple AI agents over MCP: atomic claims, leases, shared ledger, handoffs, tasks. | vendor's own |\n| [Mandare](https://www.anchorterminal.com/tools/mandarelabs-mandare.md) | MCP server | Verify an agent fleet's tamper-evident ledger, check budgets, kill a runaway agent. Local-first. | vendor's own |\n| [market](https://www.anchorterminal.com/tools/sputnikx-market.md) | MCP server | Sputnik X: EU trade 63M+, LV customs, salary, sanctions, EU AI Act, SoulLedger + x402 USDC. | vendor's own |\n| [Norman MCP Server](https://www.anchorterminal.com/tools/norman-mcp-server.md) | MCP server | AI-powered bookkeeping and tax filing for entrepreneurs at the heart of the European economy. | vendor's own |\n| [parser](https://www.anchorterminal.com/tools/wrapper-agency-parser.md) | MCP server | Parse receipts \u0026 invoices into structured JSON. Pay per call in USDC (x402 on Base), no API key. | vendor's own |\n| [Particles](https://www.anchorterminal.com/tools/linkedparticles-particles.md) | MCP server | An append-only ledger of sourced, dated, confidence-scored claims your agent cites and you audit | vendor's own |\n| [pdfops-mcp](https://www.anchorterminal.com/tools/pdfops-mcp.md) | MCP server | Deterministic PDF tools for AI agents: inspect fields, fill forms, merge PDFs, invoices. | vendor's own |\n| [PolyDoc](https://www.anchorterminal.com/tools/polydoc-mcp.md) | MCP server | HTML/URL to PDF, screenshots, e-invoices. PDF/A and PDF/UA output with optional veraPDF verify. | vendor's own |\n| [Positif](https://www.anchorterminal.com/tools/positif.md) | MCP server | The agent switchboard: identity, policy, loop-guard, and an append-only audit ledger. | vendor's own |\n| [TaskTime Pro](https://www.anchorterminal.com/tools/tasktime-agent-bridge.md) | MCP server | First-party local TaskTime Pro tools for tasks, timers, expenses, invoices, reports, and planning. | vendor's own |\n| [The Neural Ledger Intelligence](https://www.anchorterminal.com/tools/theneuralledger-intelligence.md) | MCP server | Read-only global event and evidence intelligence with entities, assets, and impact paths. | vendor's own |\n| [Timbrix — CFDI 4.0 para México](https://www.anchorterminal.com/tools/timbrix-mcp.md) | MCP server | Official Timbrix MCP server: stamp, cancel, and query Mexican CFDI 4.0 invoices from AI agents. | vendor's own |\n| [US compliance and books health](https://www.anchorterminal.com/tools/medianfi-compliance.md) | MCP server | US company filing obligations, plus a 25-check bookkeeping diagnostic. Sourced, dated, no signup. | vendor's own |\n| [wyrd-scribe](https://www.anchorterminal.com/tools/wyrdmcp-wyrd-scribe.md) | MCP server | Creates new pages with provenance and records lineage in a ledger under .wyrd/. | vendor's own |\n| [x402receipts](https://www.anchorterminal.com/tools/x402receipts-mcp.md) | MCP server | Record x402 agent purchases as reconciled, auditable receipts; verify any receipt on the ledger. | vendor's own |\n| [yaktool](https://www.anchorterminal.com/tools/yaktool.md) | MCP server | 73 local deterministic tools: GTIN, feeds, CSV-XLSX, Digital Link QR, e-invoices. Rules cited. | vendor's own |\n\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Accounting \u0026 invoicing",
        "url": ""
      }
    ],
    "description": "8 accounting \u0026 invoicing listings ranked by the Anchor benchmark. Leader Apideck Accounting API + MCP (BB). APIs for bookkeeping and invoicing: ledgers, invoices, bills, expenses and reports, straight from the accounting software or through one API across many. Compared on the objects covered, write access, sandboxes, rate limits and price.",
    "facts": [
      "Apideck Accounting API + MCP BB",
      "Merge Accounting API BB",
      "Xero API + MCP B"
    ],
    "h1": "Accounting and invoicing APIs for AI agents",
    "image": "https://www.anchorterminal.com/assets/og/categories-accounting.png",
    "path": "/categories/accounting",
    "published": "",
    "section": "tools",
    "title": "Accounting and invoicing APIs for AI agents, ranked | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/categories/accounting"
  },
  "tokens": {
    "markdown": 4050,
    "slim": 480
  },
  "version": 1
}
