{
  "data": {
    "a": {
      "slug": "pennylane",
      "name": "Pennylane",
      "vendor": "Pennylane SAS",
      "vendorUrl": "https://www.pennylane.com",
      "kind": "http-api",
      "category": "accounting",
      "summary": "Pennylane is a French accounting and invoicing platform for companies and accounting firms. Its Company and Firm REST APIs cover invoices, supplier invoices, ledger entries, transactions and exports. A hosted read-only MCP server exposes the same books to AI assistants.",
      "url": "https://www.anchorterminal.com/tools/pennylane",
      "markdownUrl": "https://www.anchorterminal.com/tools/pennylane.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pennylane.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pennylane.json",
      "license": "Proprietary service under Pennylane's API agreement and customer terms",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://app.pennylane.com/api/external/v2",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Bearer token on every call. Companies generate a Company API token under Settings, Connectivity, Developers, which needs the Essentiel plan or above and an admin role. Each token is tied to one company, is read only or read and write, expires after 1, 6 or 12 months or never, and can be deleted. Firms generate Firm API tokens. Integration partners use the OAuth 2.0 authorisation code grant after the Partnerships team issues a client ID and secret, with 24-hour access tokens and rotating 90-day refresh tokens. The MCP server uses OAuth 2.1 with PKCE and dynamic client registration, and the user signs in through a browser.",
      "pricing": "paid",
      "pricingNotes": "API and MCP access for companies needs the Essentiel plan or above, listed at 24 euros a month before VAT for one user on the pricing tab for sole traders and single-shareholder companies. Premium is 79 euros. Each plan has a 15-day trial with no commitment, and a sandbox can be created inside an account. Whether the trial needs a card and the prices for other company types were not established. Accounting firms get the MCP at no extra cost (https://www.pennylane.com/fr/tarifs, checked 2026-10-09).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the MCP docs or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 31,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://pennylane.readme.io/docs/api-overview",
      "llmsTxt": "https://pennylane.readme.io/llms.txt",
      "capabilities": [
        "accounting.ledger",
        "accounting.invoices",
        "accounting.bills",
        "accounting.reports"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "oauth",
        "openapi",
        "mcp",
        "llms-txt",
        "webhooks",
        "status-page"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 297,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 66,
          "maintenance": 65,
          "payments": 20,
          "reliability": 75,
          "schema": 85,
          "security": 68,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "The v2 API has per-resource read and write scopes, an OpenAPI definition on every reference page, llms.txt and a breaking-change process that ran over 24 weeks. Access needs a paid Essentiel plan or partner approval, creation endpoints are not idempotent, and the API agreement lets Pennylane change or revoke the API without notice.",
        "bestFor": "An agent working on the books of French companies or an accounting firm's client portfolio, with French chart of accounts, FEC export, Factur-X e-invoicing and VAT returns.",
        "strengths": [
          "Scopes split each resource into `:readonly` and `:all`, for company tokens, firm tokens and OAuth apps",
          "Hosted MCP server at `https://mcp.pennylane.com/mcp` with 31 read-only tools, OAuth 2.1 with PKCE and dynamic client registration",
          "OpenAPI 3.0.1 definitions on each reference page, an llms.txt index and Markdown twins of every docs page",
          "The 2026 breaking changes ran in three phases over 24 weeks with an opt-in header, ending 1 July 2026",
          "ISO 27001 certificate published, EU hosting on AWS in Ireland, and a dated sub-processor list with 30 days' notice of additions"
        ],
        "weaknesses": [
          "The API agreement allows changes, suspension or revocation with or without notice and supplies the API as is",
          "Creation endpoints do not enforce idempotency, except supplier invoice imports",
          "API and MCP access for companies starts at the Essentiel plan, and OAuth apps need approval from the Partnerships team",
          "No official SDK was found, and the MCP server is not in the official MCP registry",
          "No security.txt, bug bounty or published disclosure policy was found",
          "The API agreement grants Pennylane an exclusive licence over API integrations and their source code on request"
        ],
        "agentNotes": [
          "Call `GET https://app.pennylane.com/api/external/v2/me` first to confirm the token, user and company context",
          "Stay under 25 requests per 5 seconds per token and wait for the `retry-after` value on a 429",
          "Do not retry a create after a timeout without checking first. Only supplier invoice imports are deduplicated",
          "Send `filter` and `sort` again with every `cursor`. The cursor stores position only",
          "Send amounts as strings such as \"120.00\", and ask for `:readonly` scopes when the task only reads",
          "Use the MCP server for reads only. It cannot create, edit or delete, and firm connections need `company_id`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 66,
          "maintenance": 65,
          "payments": 20,
          "reliability": 75,
          "schema": 85,
          "security": 68,
          "transparency": 71
        },
        "provenanceScore": 80
      },
      "connect": {
        "http": "curl https://app.pennylane.com/api/external/v2/me \\\n  -H \"Authorization: Bearer $PENNYLANE_API_TOKEN\"",
        "claudeCode": "claude mcp add --transport http pennylane https://mcp.pennylane.com/mcp",
        "config": {
          "mcpServers": {
            "pennylane": {
              "url": "https://mcp.pennylane.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/accounting.ledger",
        "tool": "https://letme.dev/pennylane"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Pennylane SAS",
        "domain": "pennylane.com",
        "domainRegistered": "1998-09-23",
        "endpointOnVendorDomain": true,
        "terms": "https://pennylane.readme.io/page/api-contract-terms",
        "privacy": "https://www.pennylane.com/fr/legal/privacy",
        "statusPage": "https://status.pennylane.com",
        "changelog": "https://pennylane.readme.io/changelog",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The legal notice (updated 8 September 2026) names Pennylane, a société par actions simplifiée, SIREN 880 265 921 RCS Paris, 2-4 rue Jules Lefebvre, 75009 Paris. Pennylane GmbH sells the product in Germany.",
          "The API agreement (API Contract terms, last updated January 2024) governs API use and is cited by clause 26.9 of the customer terms. It gives a registered office in Cherbourg-en-Cotentin, which differs from the Paris address in the customer terms and legal notice.",
          "The customer terms for companies (version of 16 December 2025) are a PDF linked from https://www.pennylane.com/fr/conditions-generales, with the data processing agreement and the SLA as annexes.",
          "The privacy policy (updated 30 January 2026) covers processing where Pennylane is controller. Processing as processor is governed by the data processing agreement annexed to the customer terms.",
          "www.pennylane.com/.well-known/security.txt returns 404.",
          "The API answers on app.pennylane.com and the MCP server on mcp.pennylane.com. The API docs are hosted on pennylane.readme.io.",
          "RDAP for pennylane.com gives a registration date of 1998-09-23."
        ],
        "score": 80
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pennylane.json",
      "live": {
        "slug": "pennylane",
        "probe": {
          "target": "https://app.pennylane.com/api/external/v2",
          "method": "get",
          "lastAt": "2026-10-10T03:53:37.679578065Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 66,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 106,
          "p95ms24h": 605,
          "samples24h": 125,
          "samples30d": 125,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 40,
              "ok": 40
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pennylane.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T03:58:41.816495556Z"
        },
        "pages": [
          {
            "url": "https://pennylane.readme.io/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:43:10.597188172Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "baba0cf1ecaa"
          },
          {
            "url": "https://www.pennylane.com/fr/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:52:57.370338236Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2e89b0e31f0b"
          },
          {
            "url": "https://pennylane.readme.io/page/api-contract-terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:43:13.114667877Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7815b7f4ccf6"
          }
        ],
        "updatedAt": "2026-10-10T03:58:41.816495556Z"
      }
    },
    "answer": "Pennylane scores 66.3 (B) on agent readiness against QuickBooks Online API + MCP's 49.2 (D), and leads in 4 of 7 scored categories. QuickBooks Online API + MCP leads on payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "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.2,
        "grade": "D",
        "agentReady": false,
        "rank": 798,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 11,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 85,
          "payments": 30,
          "reliability": 45,
          "schema": 43,
          "security": 38,
          "transparency": 49
        },
        "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.",
        "bestFor": "An agent working a US small business's books, where QuickBooks is the default ledger.",
        "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.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 49.2
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 85,
          "payments": 30,
          "reliability": 45,
          "schema": 43,
          "security": 38,
          "transparency": 22
        },
        "provenanceScore": 75
      },
      "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": 75
      },
      "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-10T03:53:39.55077347Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 590,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 597,
          "p95ms24h": 669,
          "samples24h": 249,
          "samples30d": 2274,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 40,
              "ok": 40
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.developer.intuit.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T03:58:44.664975421Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "intuit-oauth",
            "version": "4.2.5",
            "seenAt": "2026-10-09T17:15:41.799911385Z"
          },
          {
            "registry": "pypi",
            "name": "intuit-oauth",
            "version": "1.2.7",
            "released": "2026-07-22",
            "seenAt": "2026-10-09T17:15:42.773579045Z"
          }
        ],
        "githubStars": 416,
        "npmWeekly": 286497,
        "pypiWeekly": 285421,
        "securityTxt": {
          "url": "https://intuit.com/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-10-09T15:39:51.100954339Z"
        },
        "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-08T18:28:33.729989472Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdf88eaea616"
          },
          {
            "url": "https://www.intuit.com/legal/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:51:13.789079066Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6dec63558567"
          }
        ],
        "updatedAt": "2026-10-10T03:58:44.664975421Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Pennylane SAS",
        "b": "Intuit",
        "name": "Vendor"
      },
      {
        "a": "https://app.pennylane.com/api/external/v2",
        "b": "https://quickbooks.api.intuit.com/v3",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Your plan",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Pennylane's API agreement and customer terms",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "31",
        "b": "145",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-09-17",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-03-09",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "145 stars, 400k npm/wk, 260k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pennylane scores 66.3 (B) on agent readiness against QuickBooks Online API + MCP's 49.2 (D), and leads in 4 of 7 scored categories. QuickBooks Online API + MCP leads on payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Pennylane or QuickBooks Online API + MCP?"
      },
      {
        "answer": "Pennylane takes an API key or an OAuth sign-in. QuickBooks Online API + MCP uses an OAuth sign-in.",
        "question": "Do Pennylane and QuickBooks Online API + MCP need an API key?"
      },
      {
        "answer": "Yes. Pennylane has a hosted endpoint at https://app.pennylane.com/api/external/v2 and QuickBooks Online API + MCP at https://quickbooks.api.intuit.com/v3.",
        "question": "Can an agent call Pennylane and QuickBooks Online API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 45",
          "Schema \u0026 documentation, 85 against 43",
          "Security \u0026 auth, 68 against 38",
          "Transparency \u0026 trust, 76 against 49"
        ],
        "also": null,
        "goodFor": "An agent working on the books of French companies or an accounting firm's client portfolio, with French chart of accounts, FEC export, Factur-X e-invoicing and VAT returns.",
        "slug": "pennylane",
        "watchFor": "The API agreement allows changes, suspension or revocation with or without notice and supplies the API as is"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 85 against 65"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "An agent working a US small business's books, where QuickBooks is the default ledger.",
        "slug": "quickbooks-online",
        "watchFor": "Rate limits, developer terms, partner tiers and deprecation rules are behind a JavaScript portal that returns nothing to a plain fetch"
      }
    ],
    "job": {
      "capability": "accounting.ledger",
      "name": "Accounting ledgers"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-pennylane.json",
        "title": "Apideck Accounting API + MCP vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apideck-accounting-vs-quickbooks-online.json",
        "title": "Apideck Accounting API + MCP vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/apideck-accounting-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-pennylane.json",
        "title": "Codat vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/codat-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/codat-vs-quickbooks-online.json",
        "title": "Codat vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/codat-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freeagent-vs-pennylane.json",
        "title": "FreeAgent API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freeagent-vs-quickbooks-online.json",
        "title": "FreeAgent API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/freeagent-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-pennylane.json",
        "title": "FreshBooks API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/freshbooks-vs-quickbooks-online.json",
        "title": "FreshBooks API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/freshbooks-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/merge-accounting-vs-pennylane.json",
        "title": "Merge Accounting API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/merge-accounting-vs-quickbooks-online.json",
        "title": "Merge Accounting API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/merge-accounting-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-pennylane.json",
        "title": "Odoo External API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/odoo-vs-quickbooks-online.json",
        "title": "Odoo External API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/odoo-vs-quickbooks-online"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pennylane-vs-rutter.json",
        "title": "Pennylane vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pennylane-vs-xero.json",
        "title": "Pennylane vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.json",
        "title": "Pennylane vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/pennylane-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/quickbooks-online-vs-rutter.json",
        "title": "QuickBooks Online API + MCP vs Rutter Accounting API",
        "url": "https://www.anchorterminal.com/compare/quickbooks-online-vs-rutter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/quickbooks-online-vs-xero.json",
        "title": "QuickBooks Online API + MCP vs Xero API + MCP",
        "url": "https://www.anchorterminal.com/compare/quickbooks-online-vs-xero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/quickbooks-online-vs-zoho-books.json",
        "title": "QuickBooks Online API + MCP vs Zoho Books",
        "url": "https://www.anchorterminal.com/compare/quickbooks-online-vs-zoho-books"
      },
      {
        "json": "https://www.anchorterminal.com/compare/invoice-ninja-vs-pennylane.json",
        "title": "Invoice Ninja API vs Pennylane",
        "url": "https://www.anchorterminal.com/compare/invoice-ninja-vs-pennylane"
      },
      {
        "json": "https://www.anchorterminal.com/compare/invoice-ninja-vs-quickbooks-online.json",
        "title": "Invoice Ninja API vs QuickBooks Online API + MCP",
        "url": "https://www.anchorterminal.com/compare/invoice-ninja-vs-quickbooks-online"
      }
    ],
    "scores": [
      {
        "by": 30,
        "edge": "pennylane",
        "key": "reliability",
        "name": "Reliability",
        "pennylane": 75,
        "quickbooks-online": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 42,
        "edge": "pennylane",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "pennylane": 85,
        "quickbooks-online": 43,
        "weight": 13
      },
      {
        "by": 2,
        "edge": "quickbooks-online",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "pennylane": 66,
        "quickbooks-online": 68,
        "weight": 13
      },
      {
        "by": 30,
        "edge": "pennylane",
        "key": "security",
        "name": "Security \u0026 auth",
        "pennylane": 68,
        "quickbooks-online": 38,
        "weight": 14
      },
      {
        "by": 10,
        "edge": "quickbooks-online",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "pennylane": 20,
        "quickbooks-online": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 20,
        "edge": "quickbooks-online",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "pennylane": 65,
        "quickbooks-online": 85,
        "weight": 7
      },
      {
        "by": 27,
        "edge": "pennylane",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "pennylane": 76,
        "quickbooks-online": 49,
        "weight": 7
      }
    ],
    "summary": "Pennylane scores 66.3 (B) on agent readiness against QuickBooks Online API + MCP's 49.2 (D), and leads in 4 of 7 scored categories. QuickBooks Online API + MCP leads on payments \u0026 pricing and maintenance \u0026 community. Both do accounting ledgers.",
    "verdicts": {
      "pennylane": "The v2 API has per-resource read and write scopes, an OpenAPI definition on every reference page, llms.txt and a breaking-change process that ran over 24 weeks. Access needs a paid Essentiel plan or partner approval, creation endpoints are not idempotent, and the API agreement lets Pennylane change or revoke the API without notice.",
      "quickbooks-online": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online",
    "json": "https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online.md",
    "slim": "https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online.min.md"
  },
  "markdown": "Pennylane scores 66.3 (B) on agent readiness against QuickBooks Online API + MCP's 49.2 (D), and leads in 4 of 7 scored categories. QuickBooks Online API + MCP leads on payments \u0026 pricing and maintenance \u0026 community. Both do accounting ledgers.\n\n- Pennylane: grade B, 66.3/100, rank #297 of 950. Markdown https://www.anchorterminal.com/tools/pennylane.md · JSON https://www.anchorterminal.com/api/v1/tools/pennylane.json\n- QuickBooks Online API + MCP: grade D, 49.2/100, rank #798 of 950. Markdown https://www.anchorterminal.com/tools/quickbooks-online.md · JSON https://www.anchorterminal.com/api/v1/tools/quickbooks-online.json\n- Best accounting and invoicing APIs for AI agents: https://www.anchorterminal.com/best/accounting/index.md\n- All 66 accounting comparisons: https://www.anchorterminal.com/compare/accounting/index.md\n\n## Which one, for what\n\n### Pennylane (B)\n\nGood for: An agent working on the books of French companies or an accounting firm's client portfolio, with French chart of accounts, FEC export, Factur-X e-invoicing and VAT returns.\n\nAhead on:\n- Reliability, 75 against 45\n- Schema \u0026 documentation, 85 against 43\n- Security \u0026 auth, 68 against 38\n- Transparency \u0026 trust, 76 against 49\n\nWatch for: The API agreement allows changes, suspension or revocation with or without notice and supplies the API as is\n\n### QuickBooks Online API + MCP (D)\n\nGood for: An agent working a US small business's books, where QuickBooks is the default ledger.\n\nAhead on:\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 85 against 65\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: Rate limits, developer terms, partner tiers and deprecation rules are behind a JavaScript portal that returns nothing to a plain fetch\n\n\n## Score by category\n\n| Category | Weight | Pennylane | QuickBooks Online API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 45 | Pennylane +30 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 43 | Pennylane +42 |\n| Agent ergonomics | 13% (16.2 this run) | 66 | 68 | QuickBooks Online API + MCP +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 68 | 38 | Pennylane +30 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | QuickBooks Online API + MCP +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 65 | 85 | QuickBooks Online API + MCP +20 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 76 | 49 | Pennylane +27 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **49.2 · D** | |\n\n## Facts side by side\n\n| Fact | Pennylane | QuickBooks Online API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Pennylane SAS | Intuit |\n| Hosted endpoint | `https://app.pennylane.com/api/external/v2` | `https://quickbooks.api.intuit.com/v3` |\n| Transports | HTTP | HTTP, stdio |\n| Auth | OAuth or key | OAuth |\n| Pricing | Paid | Your plan |\n| x402 | no | no |\n| Licence | Proprietary service under Pennylane's API agreement and customer terms | MIT |\n| Tools exposed | 31 | 145 |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | no |\n| Last release | 2026-09-30 | 2026-09-17 |\n| Terms last updated | no date given | couldn't be read |\n| Privacy policy last updated | no date given | 2026-03-09 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | not found in the text | couldn't be read |\n| Terms restrict benchmarking | yes | couldn't be read |\n| Terms or service can change without notice | yes | couldn't be read |\n| Arbitration or class-action waiver | not found in the text | couldn't be read |\n| Popularity | none | 145 stars, 400k npm/wk, 260k PyPI/wk |\n| Agent reviews | none | 2/5 (2) |\n\n## Verdicts\n\n**Pennylane.** The v2 API has per-resource read and write scopes, an OpenAPI definition on every reference page, llms.txt and a breaking-change process that ran over 24 weeks. Access needs a paid Essentiel plan or partner approval, creation endpoints are not idempotent, and the API agreement lets Pennylane change or revoke the API without notice.\n\n**QuickBooks Online API + MCP.** 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## Before you call either\n\n### Pennylane\n\n1. Call `GET https://app.pennylane.com/api/external/v2/me` first to confirm the token, user and company context\n2. Stay under 25 requests per 5 seconds per token and wait for the `retry-after` value on a 429\n3. Do not retry a create after a timeout without checking first. Only supplier invoice imports are deduplicated\n4. Send `filter` and `sort` again with every `cursor`. The cursor stores position only\n5. Send amounts as strings such as \"120.00\", and ask for `:readonly` scopes when the task only reads\n6. Use the MCP server for reads only. It cannot create, edit or delete, and firm connections need `company_id`\n\n### QuickBooks Online API + MCP\n\n1. Store the realmId with the tokens. Every URL needs it and the token alone doesn't name the company\n2. Persist the new refresh token from every refresh response. The previous one expires 24 hours later\n3. Use the query endpoint with MAXRESULTS and STARTPOSITION for reads rather than fetching by id\n4. Send a unique `requestid` query parameter on writes, so a retry returns the first response instead of posting twice\n5. On 429, wait for Retry-After before retrying, and don't retry other 4xx errors\n\n## Questions\n\n### Which is better for AI agents, Pennylane or QuickBooks Online API + MCP?\n\nPennylane scores 66.3 (B) on agent readiness against QuickBooks Online API + MCP's 49.2 (D), and leads in 4 of 7 scored categories. QuickBooks Online API + MCP leads on payments \u0026 pricing and maintenance \u0026 community.\n\n### Do Pennylane and QuickBooks Online API + MCP need an API key?\n\nPennylane takes an API key or an OAuth sign-in. QuickBooks Online API + MCP uses an OAuth sign-in.\n\n### Can an agent call Pennylane and QuickBooks Online API + MCP without installing anything?\n\nYes. Pennylane has a hosted endpoint at https://app.pennylane.com/api/external/v2 and QuickBooks Online API + MCP at https://quickbooks.api.intuit.com/v3.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online.json, and with the fewest tokens: https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"pennylane\", \"b\": \"quickbooks-online\"}`. From a terminal: `anchor compare pennylane quickbooks-online`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/pennylane.json and https://www.anchorterminal.com/api/v1/tools/quickbooks-online.json\n\n## Other comparisons with Pennylane or QuickBooks Online API + MCP\n\n- [Apideck Accounting API + MCP vs Pennylane](https://www.anchorterminal.com/compare/apideck-accounting-vs-pennylane.md)\n- [Apideck Accounting API + MCP vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/apideck-accounting-vs-quickbooks-online.md)\n- [Codat vs Pennylane](https://www.anchorterminal.com/compare/codat-vs-pennylane.md)\n- [Codat vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/codat-vs-quickbooks-online.md)\n- [FreeAgent API vs Pennylane](https://www.anchorterminal.com/compare/freeagent-vs-pennylane.md)\n- [FreeAgent API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/freeagent-vs-quickbooks-online.md)\n- [FreshBooks API vs Pennylane](https://www.anchorterminal.com/compare/freshbooks-vs-pennylane.md)\n- [FreshBooks API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/freshbooks-vs-quickbooks-online.md)\n- [Merge Accounting API vs Pennylane](https://www.anchorterminal.com/compare/merge-accounting-vs-pennylane.md)\n- [Merge Accounting API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/merge-accounting-vs-quickbooks-online.md)\n- [Odoo External API vs Pennylane](https://www.anchorterminal.com/compare/odoo-vs-pennylane.md)\n- [Odoo External API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/odoo-vs-quickbooks-online.md)\n- [Pennylane vs Rutter Accounting API](https://www.anchorterminal.com/compare/pennylane-vs-rutter.md)\n- [Pennylane vs Xero API + MCP](https://www.anchorterminal.com/compare/pennylane-vs-xero.md)\n- [Pennylane vs Zoho Books](https://www.anchorterminal.com/compare/pennylane-vs-zoho-books.md)\n- [QuickBooks Online API + MCP vs Rutter Accounting API](https://www.anchorterminal.com/compare/quickbooks-online-vs-rutter.md)\n- [QuickBooks Online API + MCP vs Xero API + MCP](https://www.anchorterminal.com/compare/quickbooks-online-vs-xero.md)\n- [QuickBooks Online API + MCP vs Zoho Books](https://www.anchorterminal.com/compare/quickbooks-online-vs-zoho-books.md)\n- [Invoice Ninja API vs Pennylane](https://www.anchorterminal.com/compare/invoice-ninja-vs-pennylane.md)\n- [Invoice Ninja API vs QuickBooks Online API + MCP](https://www.anchorterminal.com/compare/invoice-ninja-vs-quickbooks-online.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Pennylane vs QuickBooks Online API + MCP",
        "url": ""
      }
    ],
    "description": "Pennylane scores 66.3 (B) to QuickBooks Online's 49.2 (D) for accounting ledgers. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pennylane B 66.3",
      "QuickBooks Online API + MCP D 49.2",
      "scores"
    ],
    "h1": "Pennylane vs QuickBooks Online API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/compare-pennylane-vs-quickbooks-online.png",
    "path": "/compare/pennylane-vs-quickbooks-online",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pennylane vs QuickBooks Online for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/pennylane-vs-quickbooks-online"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 780
  },
  "version": 1
}
