{
  "data": {
    "a": {
      "slug": "doola-mcp",
      "name": "doola MCP",
      "vendor": "doola",
      "vendorUrl": "https://doola.com",
      "kind": "mcp",
      "category": "commerce",
      "summary": "doola's hosted MCP server lets an agent form a US LLC or C-Corp in any state or DC from a conversation, covering entity type, name, members, ownership and the state filing, and check on existing doola companies.",
      "url": "https://www.anchorterminal.com/tools/doola-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/doola-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/doola-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/doola-mcp.json",
      "dns": "doola-mcp.grade.anchorterminal.com",
      "repo": "https://github.com/doolahq/plugins",
      "license": "Proprietary service. The plugin repository's MIT licence covers the manifests",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.doola.com",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth with a doola account on the first tool call; tokens are held by the client and can be revoked in doola's account settings.",
      "pricing": "paid",
      "pricingNotes": "Formation plans from $297 a year plus state fees (renewing at $300), up to $1,999 a year plus state fees. The MCP server itself is free to connect (checked 2026-11-07).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the MCP docs or pricing page (checked 2026-11-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-07"
      },
      "docsUrl": "https://doola.com",
      "registryName": "io.github.doolahq/doola",
      "capabilities": [
        "legal.company-formation",
        "commerce.checkout"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "remote-mcp",
        "oauth",
        "paid",
        "mcp-registry"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 28,
        "grade": "F",
        "agentReady": false,
        "rank": 1430,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 20,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 23,
          "maintenance": 70,
          "payments": 10,
          "reliability": 15,
          "schema": 26,
          "security": 36,
          "transparency": 38
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-07"
        },
        "negative": 0,
        "verdict": "doola's MCP server takes on a real legal task, forming a US company end to end from a chat, behind OAuth. Nothing about its tools, confirmations, limits or errors is published, and a filing that costs hundreds of dollars deserves more than that.",
        "bestFor": "Founders, including non-US founders, who want an agent to form a US company for them.",
        "strengths": [
          "Forms a US LLC or C-Corp in any state from a conversation",
          "OAuth with revocation in account settings",
          "Plugins for Claude Code, Grok Build and Cursor",
          "Official registry entry and a public plugin repository"
        ],
        "weaknesses": [
          "No published tool list, schemas or errors",
          "No documented confirmation before a paid filing",
          "No free tier; formation from $297 a year plus state fees",
          "Status page unreachable and no llms.txt"
        ],
        "agentNotes": [
          "Confirm the entity type, state, name, members and price with the user before filing",
          "A filing is a paid legal act; never retry one without checking its status first",
          "Use the status tools on existing companies before starting a new formation"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 28
          }
        ],
        "editorialScores": {
          "ergonomics": 23,
          "maintenance": 70,
          "payments": 10,
          "reliability": 15,
          "schema": 26,
          "security": 36,
          "transparency": 30
        },
        "provenanceScore": 46,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-07",
            "maintenance": "2026-11-07",
            "payments": "2026-11-07",
            "reliability": "2026-11-07",
            "schema": "2026-11-07",
            "security": "2026-11-07",
            "transparency": "2026-11-07"
          },
          "last": "2026-11-07",
          "oldest": "2026-11-07",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude plugin marketplace add doolahq/plugins \u0026\u0026 claude plugin install doola@doola",
        "config": {
          "mcpServers": {
            "doola": {
              "url": "https://mcp.doola.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/legal.company-formation",
        "tool": "https://letme.dev/doola-mcp"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "doola",
        "domain": "doola.com",
        "domainRegistered": "",
        "domainNote": "Not looked up: RDAP isn't requested under the 1 November 2026 rules.",
        "endpointOnVendorDomain": true,
        "terms": "https://doola.com/terms-of-service",
        "privacy": "https://doola.com/privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-07",
        "notes": [
          "Terms last updated July 2026. The plugin repository's licence names doola."
        ],
        "score": 46
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/doola-mcp.json",
      "live": {
        "slug": "doola-mcp",
        "probe": {
          "target": "https://mcp.doola.com",
          "method": "mcp-initialize",
          "lastAt": "2026-11-08T00:55:37.012153631Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 176,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 113,
          "p95ms24h": 201,
          "samples24h": 63,
          "samples30d": 63,
          "days": [
            {
              "date": "2026-11-07",
              "probes": 53,
              "ok": 53
            },
            {
              "date": "2026-11-08",
              "probes": 10,
              "ok": 10
            }
          ]
        },
        "githubStars": 0,
        "updatedAt": "2026-11-08T00:55:37.012153631Z"
      }
    },
    "answer": "Swell scores 55.4 (C) on agent readiness against doola MCP's 28 (F), and leads in every scored category.",
    "b": {
      "slug": "swell",
      "name": "Swell",
      "vendor": "Swell",
      "vendorUrl": "https://www.swell.is",
      "kind": "http-api",
      "category": "commerce",
      "summary": "Hosted headless commerce platform with a REST Backend API (products, carts, orders, subscriptions, coupons, promotions, custom models) and a Frontend API for storefronts.",
      "url": "https://www.anchorterminal.com/tools/swell",
      "markdownUrl": "https://www.anchorterminal.com/tools/swell.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/swell.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/swell.json",
      "dns": "swell.grade.anchorterminal.com",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.swell.store",
      "packages": [
        {
          "registry": "npm",
          "name": "swell-node"
        },
        {
          "registry": "npm",
          "name": "swell-js"
        }
      ],
      "auth": "api-key",
      "authNotes": "Backend API uses HTTP Basic auth with the store ID as username and a secret key as password. sk_test_ keys hit the test environment, sk_live_ keys hit live data. The Frontend API (swell-js) uses a public key. Official libraries use a custom wire protocol on port 8443.",
      "pricing": "paid",
      "pricingNotes": "Billed yearly, Starter $29 a month (2 admins, $50K yearly sales), Basic $79 ($250K), Standard $299 ($1M), Unlimited $2,250 ($5M), Custom above $10M. Above the sales ceiling Swell takes 2, 1.5, 1 or 0.4 per cent. Monthly API requests 100K, 500K and 2M on the first three plans, then $5 per extra 100K; function calls and storage are metered the same way. Monthly billing costs more (the page shows 25 per cent off for yearly). Free trial on every plan (https://www.swell.is/pricing).",
      "priceSummary": "$29 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 in the docs, pricing or AI page (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 4510,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://developers.swell.is",
      "llmsTxt": "https://developers.swell.is/llms.txt",
      "capabilities": [
        "commerce.products",
        "commerce.cart",
        "commerce.checkout",
        "commerce.orders",
        "commerce.headless"
      ],
      "tags": [
        "hosted",
        "typescript",
        "webhooks",
        "closed-source",
        "llms-txt"
      ],
      "lastRelease": "2026-11-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55.4,
        "grade": "C",
        "agentReady": false,
        "rank": 873,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 15,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 82,
          "payments": 25,
          "reliability": 67,
          "schema": 71,
          "security": 42,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-11-02, -3. Swell's official skills changelog (0.12.0) describes hosted platform fixes with no security advisory, among them that Swell now \"withholds a shopper's session from another origin's writes\" and that a route never gets the shopper's session cookies from another origin. The earlier skill text said a POST from another site reached a storefront handler with the session cookie and told developers to check `Origin` themselves. A released fix of a described flaw in the hosted product with no advisory takes -3 in this run (https://github.com/swellstores/skills/blob/main/CHANGELOG.md, https://github.com/swellstores/skills/commit/9b510775cfb0619aa5d18d9f68e76c09b8f4e40d)."
        ],
        "verdict": "Swell's REST API covers carts, coupons, subscriptions and orders, with a live /:models schema, llms.txt and Markdown docs, and a named sub-processor list. Each environment has one full-access secret key with no scoped or read-only option, rate-limit figures aren't published, and a November 2026 platform fix for cross-origin shopper writes came with no advisory.",
        "bestFor": "Developers who want a hosted headless store with a flexible data model and an agent that writes server-side.",
        "strengths": [
          "Live /:models schema with field types and descriptions for every store",
          "Carts, coupons, promotions, subscriptions and orders in one REST API",
          "llms.txt with every docs page as Markdown, plus official Claude Code skills with their own evals",
          "Public plan prices with per-unit overage for API requests and storage",
          "A DPA with ten named sub-processors and an email route for vulnerability reports"
        ],
        "weaknesses": [
          "One full-access secret key per environment, with no scoped or read-only key",
          "Invalid writes return HTTP 200 with an errors object",
          "Rate-limit figures aren't published, and the listed SLA document is closed to crawlers",
          "No OpenAPI file, security.txt, bug bounty or SOC 2 report",
          "A cross-origin shopper-session flaw fixed on 2 November 2026 came with no advisory"
        ],
        "agentNotes": [
          "Call GET /:models once and cache it. It's the ground truth for custom fields",
          "Check `result.errors` after every write. A failed validation still returns 200",
          "Use `$set` to replace an array. A plain PUT merges arrays by element id and never shrinks them",
          "Use an sk_test_ key while testing. A bare sk_ prefix is live",
          "Keep `expand` and `include` small. Each level past the first three points adds rate-limit weight"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 55.4
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 82,
          "payments": 25,
          "reliability": 67,
          "schema": 71,
          "security": 42,
          "transparency": 51
        },
        "provenanceScore": 69,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl \"https://api.swell.store/products?limit=5\" -u \"$SWELL_STORE_ID:$SWELL_SECRET_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/commerce.products",
        "tool": "https://letme.dev/swell"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 29,
          "note": "billed yearly, up to $50K sales a year, 100K API requests a month"
        },
        {
          "item": "Basic",
          "unit": "month",
          "usd": 79,
          "note": "billed yearly, up to $250K sales, 500K API requests"
        },
        {
          "item": "Standard",
          "unit": "month",
          "usd": 299,
          "note": "billed yearly, up to $1M sales, 2M API requests"
        },
        {
          "item": "Unlimited",
          "unit": "month",
          "usd": 2250,
          "note": "billed yearly, up to $5M sales"
        },
        {
          "item": "Fee above Starter ceiling",
          "unit": "pct",
          "usd": 2,
          "note": "on sales over $50K in a trailing 12 months"
        },
        {
          "item": "Fee above Basic ceiling",
          "unit": "pct",
          "usd": 1.5,
          "note": "on sales over $250K"
        },
        {
          "item": "Fee above Standard ceiling",
          "unit": "pct",
          "usd": 1,
          "note": "on sales over $1M"
        },
        {
          "item": "Fee above Unlimited ceiling",
          "unit": "pct",
          "usd": 0.4,
          "note": "on sales over $5M"
        },
        {
          "item": "Extra API requests",
          "unit": "1k-requests",
          "usd": 0.05,
          "note": "$5 per 100K over the plan quota"
        }
      ],
      "provenance": {
        "legalEntity": "Swell Commerce Corp.",
        "domain": "swell.is",
        "domainRegistered": "2019-09-06",
        "endpointOnVendorDomain": false,
        "terms": "https://www.swell.is/legal/terms-of-service",
        "privacy": "https://www.swell.is/legal/privacy-policy",
        "statusPage": "https://status.swell.store/",
        "changelog": "https://www.swell.is/changelog",
        "securityTxt": "none",
        "checked": "2026-11-04",
        "notes": [
          "The API runs on api.swell.store, Swell's older domain, not swell.is.",
          "/.well-known/security.txt redirects to itself (308 on 4 November), so no file could be read.",
          "The privacy policy was last modified on 3 November 2026. The Data Processing Addendum at https://www.swell.is/legal/data-processing-addendum lists sub-processors, and the Security and Privacy page at https://www.swell.is/legal/security gives an email route for vulnerability reports.",
          "www.swell.is/robots.txt disallows /sla and /legal/service-level-agreement, so the SLA document wasn't read."
        ],
        "score": 69
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/swell.json",
      "live": {
        "slug": "swell",
        "probe": {
          "target": "https://api.swell.store",
          "method": "get",
          "lastAt": "2026-11-08T00:56:07.885457915Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 453,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 99.92,
          "p50ms24h": 462,
          "p95ms24h": 3357,
          "samples24h": 244,
          "samples30d": 7704,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 242
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 248
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-08",
              "probes": 10,
              "ok": 10
            }
          ],
          "outages": [
            {
              "start": "2026-10-12T10:02:29.409688852Z",
              "end": "2026-10-12T10:26:37.293317913Z",
              "note": "HTTP 503 server error"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.swell.store",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-08T00:55:36.740623182Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "swell-js",
            "version": "5.9.3",
            "seenAt": "2026-11-07T00:09:49.501217763Z"
          },
          {
            "registry": "npm",
            "name": "swell-node",
            "version": "6.0.5",
            "seenAt": "2026-11-07T00:09:48.655071641Z"
          }
        ],
        "npmWeekly": 1012,
        "securityTxt": {
          "url": "https://swell.is/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-11-07T16:01:43.433770744Z"
        },
        "llmsTxt": {
          "url": "https://developers.swell.is/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:05.461712856Z"
        },
        "domain": {
          "domain": "swell.is",
          "registered": "2019-09-06",
          "source": "https://rdap.isnic.is/rdap/domain/swell.is",
          "checkedAt": "2026-11-01T14:16:20.762617625Z"
        },
        "pages": [
          {
            "url": "https://www.swell.is/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:19.624012511Z",
            "changedAt": "2026-11-06T13:55:46.815245842Z",
            "fingerprint": "1d997542ed16"
          },
          {
            "url": "https://www.swell.is/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:25.9243507Z",
            "changedAt": "2026-11-06T13:55:53.620990549Z",
            "fingerprint": "b5f441baa729"
          },
          {
            "url": "https://www.swell.is/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:21.876018433Z",
            "changedAt": "2026-11-06T13:55:49.173308067Z",
            "fingerprint": "fb5203f4afbc"
          },
          {
            "url": "https://www.swell.is/legal/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:23.945900525Z",
            "changedAt": "2026-11-06T13:55:51.279171124Z",
            "fingerprint": "ff1e6c044a51"
          }
        ],
        "updatedAt": "2026-11-08T00:56:07.885457915Z"
      }
    },
    "edges": [
      {
        "by": 52,
        "category": "reliability",
        "leads": "swell",
        "name": "Reliability",
        "reasons": {
          "a": "status.doola.com wasn't reachable (0). No history (5). No rate limits found (0). No retry or idempotency guidance for filings (0). No SLA found (0). Not labelled beta (10). 0 + 5 + 0 + 0 + 0 + 10 = 15.",
          "b": "Atlassian Statuspage at status.swell.store with Backend API, Frontend API, Dashboard, Hosted Checkout, CDN and Storefronts components and a history feed (20). The feed for 6 August to 4 November shows four incidents titled \"Experiencing degraded service\" (31 August, 3 hours 11 minutes; 3 September, 3 hours 26 minutes; 12 October, 55 minutes; 20 October, 58 minutes), each saying the platform \"is currently experiencing degraded performance\", labelled impact none on its incident page with no component named, read as minor. Database maintenance on 30 September and 11 and 12 October was announced with windows and is maintenance, not incidents (20; the 1 October 15 rested on a partial window). Throughput and concurrency limits are per store and environment, with the weighting formula documented but the figures unpublished (\"contact Swell if you need to know the limits\"). Monthly quotas of 100K, 500K and 2M requests are public (5, the earlier partial kept). Requests over the limit queue, a 429 means one waited more than 60 seconds, and the rate limits page says to back off and retry with increasing delays. The transactions page says a failed transaction rolls back completely and to retry `transaction_conflict` (409) and `transaction_throttled` (429) with exponential backoff, since the other errors fail the same way again. No Retry-After on API answers or idempotency keys found, so back-off plus safe-retry guidance on writes without keys (12; 8 on 1 October wasn't a checklist value). The pricing page lists a \"100% uptime SLA\" on Unlimited, but robots.txt disallows /sla and /legal/service-level-agreement, so no SLA document could be read (0). Generally available (10). 20 + 20 + 5 + 12 + 0 + 10 = 67."
        },
        "scores": {
          "a": 15,
          "b": 67
        }
      },
      {
        "by": 45,
        "category": "schema",
        "leads": "swell",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No tool list or schemas published; tools not read without sign-in (10 of 25). No llms.txt found (0). The README describes the flow, not the tools (5 of 20). Inputs not verifiable (3 of 15). Install examples only (3 of 15). Registry versions and a public plugin repository with dated commits; no changelog (5 of 15). 10 + 0 + 5 + 3 + 3 + 5 = 26.",
          "b": "No OpenAPI file. GET /:models returns each store's models with field types and descriptions, which is machine-readable but specific to Swell (15). developers.swell.is/llms.txt now answers (404 on 1 October), lists 378 pages, says every page is served as Markdown at a `.md` address and links llms-full.txt (10). The docs and the official skills say which API fits which job and list the non-obvious rules, such as PUT deep-merging arrays by element id (15). Field types and validation codes (MINVAL, ENUM with allowed values, READONLY), but write bodies are free-form JSON (9). Status codes and validation objects documented with examples (13). Monthly dated changelog with no API versioning (9). 15 + 10 + 15 + 9 + 13 + 9 = 71."
        },
        "scores": {
          "a": 26,
          "b": 71
        }
      },
      {
        "by": 42,
        "category": "ergonomics",
        "leads": "swell",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Tool count not published (5). Nothing on paging or output size (5 of 20). No documented errors (0). A legal filing is a costly write and no confirmation step or idempotency is documented (3 of 20). Plugins for Claude Code, Grok Build and Cursor and one URL (10 of 15). 5 + 5 + 0 + 3 + 10 = 23.",
          "b": "`limit` (Frontend API maximum raised to 1,000 in December 2025) and `expand` and `include` controls, with heavier expands costing rate-limit weight. Field selection not confirmed (15). Page envelopes with `count`, `page` and `page_count`, plus `where` operators, sort and search (20). Validation errors carry a code per field, but invalid writes return HTTP 200 with an `errors` object, so an agent that doesn't check them reports success (15). No idempotency keys. Transactions roll back only on request errors, and there's no undo for merges (5). Official JavaScript libraries only (swell-node and swell-js), with simple Basic auth (10)."
        },
        "scores": {
          "a": 23,
          "b": 65
        }
      },
      {
        "by": 22,
        "category": "transparency",
        "leads": "swell",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Plugin repository MIT (copyright 2026 doola); service closed under terms updated July 2026 (15). Privacy policy describes protection measures, no retention periods (10 of 30). No deprecation policy (0). Subprocessors not found (5 of 20). 15 + 10 + 0 + 5 = 30.",
          "b": "Closed platform with published terms, and MIT SDKs and skills (15). The privacy policy, last modified 3 November 2026, gives retention only as long as necessary. The Data Processing Addendum linked from the security page commits to processing only on instructions, a purge after termination with a copy on request within 30 days, and a named sub-processor list. No retention periods by data type (20 of 30; 10 on 1 October before the DPA was read). No deprecation policy or dated notices found (0). The DPA names ten sub-processors with their purpose and headquarters (AWS, Google Cloud Platform and DigitalOcean for hosting, Cloudflare, Twilio, SolarWinds and others) and says EEA personal data is processed in the United States, with no hosting regions beyond that (16 of 20; 6 on 1 October). 15 + 20 + 0 + 16 = 51."
        },
        "scores": {
          "a": 38,
          "b": 60
        }
      },
      {
        "by": 15,
        "category": "payments",
        "leads": "swell",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No machine payment protocol (0). Plan prices public (10). No free tier (0). A person signs up and approves OAuth (0). 0 + 10 + 0 + 0 = 10.",
          "b": "No x402, MPP or L402 (0). Plan prices are public with per-unit overage, $5 per extra 100K API requests and $5 per extra GB, plus 2 to 0.4 per cent above each sales ceiling (15). No free plan. A free trial on every plan, with the card requirement not stated (10). A person signs up in the browser (0)."
        },
        "scores": {
          "a": 10,
          "b": 25
        }
      },
      {
        "by": 12,
        "category": "maintenance",
        "leads": "swell",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Plugin repository commit and registry update on 3 November and 28 October 2026 (30). Several dated merges in 90 days (20 of 20). Repository issues not read (0). Official registry entry io.github.doolahq/doola (15). Plugin manifests published by a registry workflow (5 of 10). 30 + 20 + 0 + 15 + 5 = 70. Registry presence read from Anchor Terminal's own daily import of the official MCP registry (/api/v1/registry.json, 6 November 2026), not the registry's API.",
          "b": "Re-read from depth-200 clones and the changelog on 4 November. swell-js v5.9.3 was tagged on 3 November 2026, the day before (30). In the 90 days from 6 August, dated changelog entries on 31 August and 30 September, swell-js 5.8.2 (24 September), 5.9.0 (28 September), 5.9.1 (29 September), 5.9.2 (7 October) and 5.9.3, and the official skills plugin from 0.7.0 (8 October) to 0.12.0 (2 November) (20). Monthly changelog and email and chat support on every plan (12, kept). swell-js is current; swell-node's last tag is still 6.0.5 from 18 May 2026. No Swell MCP server in the registry (12, kept). Test workflows in both SDK repositories (8). 30 + 20 + 12 + 12 + 8 = 82."
        },
        "scores": {
          "a": 70,
          "b": 82
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "doola",
        "b": "Swell",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.doola.com",
        "b": "https://api.swell.store",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service. The plugin repository's MIT licence covers the manifests",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.doolahq/doola",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "none",
        "b": "2026-11-03",
        "name": "Last release"
      },
      {
        "a": "not read yet",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "not read yet",
        "b": "2026-08-19",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "4.5k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Swell scores 55.4 (C) on agent readiness against doola MCP's 28 (F), and leads in every scored category.",
        "question": "Which is better for AI agents, doola MCP or Swell?"
      },
      {
        "answer": "doola MCP uses an OAuth sign-in. Swell needs an API key.",
        "question": "Do doola MCP and Swell need an API key?"
      },
      {
        "answer": "Yes. doola MCP has a hosted endpoint at https://mcp.doola.com and Swell at https://api.swell.store.",
        "question": "Can an agent call doola MCP and Swell without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "No incidents deducted, where Swell loses 3 points for them"
        ],
        "goodFor": "Founders, including non-US founders, who want an agent to form a US company for them.",
        "slug": "doola-mcp",
        "watchFor": "No published tool list, schemas or errors"
      },
      {
        "aheadOn": [
          "Reliability, 67 against 15",
          "Schema \u0026 documentation, 71 against 26",
          "Agent ergonomics, 65 against 23",
          "Security \u0026 auth, 42 against 36",
          "Payments \u0026 pricing, 25 against 10",
          "Maintenance \u0026 community, 82 against 70",
          "Transparency \u0026 trust, 60 against 38"
        ],
        "also": null,
        "goodFor": "Developers who want a hosted headless store with a flexible data model and an agent that writes server-side.",
        "slug": "swell",
        "watchFor": "One full-access secret key per environment, with no scoped or read-only key"
      }
    ],
    "history": {
      "doola-mcp": null,
      "swell": [
        {
          "causes": [
            "security",
            "product",
            "evidence"
          ],
          "date": "2026-11-04",
          "delta": 0.4,
          "from": 55,
          "fromGrade": "C",
          "to": 55.4,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.1,
          "from": 55.1,
          "fromGrade": "C",
          "to": 55,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "commerce.checkout",
      "name": "Commerce checkout"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-commerce-vs-swell.json",
        "title": "Adobe Commerce (Magento) vs Swell",
        "url": "https://www.anchorterminal.com/compare/adobe-commerce-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentzon-vs-swell.json",
        "title": "Agentzon vs Swell",
        "url": "https://www.anchorterminal.com/compare/agentzon-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bigcommerce-vs-swell.json",
        "title": "BigCommerce API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/bigcommerce-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commerce-layer-vs-swell.json",
        "title": "Commerce Layer API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/commerce-layer-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commercetools-vs-swell.json",
        "title": "commercetools vs Swell",
        "url": "https://www.anchorterminal.com/compare/commercetools-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ecwid-vs-swell.json",
        "title": "Ecwid by Lightspeed vs Swell",
        "url": "https://www.anchorterminal.com/compare/ecwid-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/elastic-path-vs-swell.json",
        "title": "Elastic Path API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/elastic-path-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/medusa-vs-swell.json",
        "title": "Medusa API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/medusa-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/saleor-vs-swell.json",
        "title": "Saleor API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shopify-vs-swell.json",
        "title": "Shopify API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/shopify-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shopware-vs-swell.json",
        "title": "Shopware vs Swell",
        "url": "https://www.anchorterminal.com/compare/shopware-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/snipcart-vs-swell.json",
        "title": "Snipcart API + MCP vs Swell",
        "url": "https://www.anchorterminal.com/compare/snipcart-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell.json",
        "title": "Spree Commerce vs Swell",
        "url": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/square-vs-swell.json",
        "title": "Square vs Swell",
        "url": "https://www.anchorterminal.com/compare/square-vs-swell"
      },
      {
        "json": "https://www.anchorterminal.com/compare/swell-vs-vendure.json",
        "title": "Swell vs Vendure",
        "url": "https://www.anchorterminal.com/compare/swell-vs-vendure"
      },
      {
        "json": "https://www.anchorterminal.com/compare/swell-vs-wix.json",
        "title": "Swell vs Wix Stores and eCommerce API",
        "url": "https://www.anchorterminal.com/compare/swell-vs-wix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/swell-vs-woocommerce.json",
        "title": "Swell vs WooCommerce API + MCP",
        "url": "https://www.anchorterminal.com/compare/swell-vs-woocommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-commerce-vs-doola-mcp.json",
        "title": "Adobe Commerce (Magento) vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-commerce-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentzon-vs-doola-mcp.json",
        "title": "Agentzon vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/agentzon-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bigcommerce-vs-doola-mcp.json",
        "title": "BigCommerce API + MCP vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/bigcommerce-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commerce-layer-vs-doola-mcp.json",
        "title": "Commerce Layer API + MCP vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/commerce-layer-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/commercetools-vs-doola-mcp.json",
        "title": "commercetools vs doola MCP",
        "url": "https://www.anchorterminal.com/compare/commercetools-vs-doola-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-elastic-path.json",
        "title": "doola MCP vs Elastic Path API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-elastic-path"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-fabric.json",
        "title": "doola MCP vs Fabric",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-fabric"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-medusa.json",
        "title": "doola MCP vs Medusa API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-medusa"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.json",
        "title": "doola MCP vs Saleor API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-saleor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopify.json",
        "title": "doola MCP vs Shopify API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopware.json",
        "title": "doola MCP vs Shopware",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-shopware"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-snipcart.json",
        "title": "doola MCP vs Snipcart API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-snipcart"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-spree-commerce.json",
        "title": "doola MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-spree-commerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-square.json",
        "title": "doola MCP vs Square",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-square"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-vendure.json",
        "title": "doola MCP vs Vendure",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-vendure"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-wix.json",
        "title": "doola MCP vs Wix Stores and eCommerce API",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-wix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-woocommerce.json",
        "title": "doola MCP vs WooCommerce API + MCP",
        "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-woocommerce"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fabric-vs-swell.json",
        "title": "Fabric vs Swell",
        "url": "https://www.anchorterminal.com/compare/fabric-vs-swell"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 52,
        "doola-mcp": 15,
        "edge": "swell",
        "key": "reliability",
        "name": "Reliability",
        "swell": 67,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 45,
        "doola-mcp": 26,
        "edge": "swell",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "swell": 71,
        "weight": 13
      },
      {
        "by": 42,
        "doola-mcp": 23,
        "edge": "swell",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "swell": 65,
        "weight": 13
      },
      {
        "by": 6,
        "doola-mcp": 36,
        "edge": "swell",
        "key": "security",
        "name": "Security \u0026 auth",
        "swell": 42,
        "weight": 14
      },
      {
        "by": 15,
        "doola-mcp": 10,
        "edge": "swell",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "swell": 25,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "doola-mcp": 70,
        "edge": "swell",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "swell": 82,
        "weight": 7
      },
      {
        "by": 22,
        "doola-mcp": 38,
        "edge": "swell",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "swell": 60,
        "weight": 7
      }
    ],
    "summary": "Swell scores 55.4 (C) on agent readiness against doola MCP's 28 (F), and leads in every scored category. Both do commerce checkout.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "doola-mcp": "doola's MCP server takes on a real legal task, forming a US company end to end from a chat, behind OAuth. Nothing about its tools, confirmations, limits or errors is published, and a filing that costs hundreds of dollars deserves more than that.",
      "swell": "Swell's REST API covers carts, coupons, subscriptions and orders, with a live /:models schema, llms.txt and Markdown docs, and a named sub-processor list. Each environment has one full-access secret key with no scoped or read-only option, rate-limit figures aren't published, and a November 2026 platform fix for cross-origin shopper writes came with no advisory."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell",
    "json": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell.min.md"
  },
  "markdown": "Swell scores 55.4 (C) on agent readiness against doola MCP's 28 (F), and leads in every scored category. Both do commerce checkout.\n\n- doola MCP: grade F, 28/100, rank #1430 of 1510. Markdown https://www.anchorterminal.com/tools/doola-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/doola-mcp.json\n- Swell: grade C, 55.4/100, rank #873 of 1510. Markdown https://www.anchorterminal.com/tools/swell.md · JSON https://www.anchorterminal.com/api/v1/tools/swell.json\n- Best commerce platforms and checkout APIs for AI agents: https://www.anchorterminal.com/best/commerce/index.md\n- All 189 commerce comparisons: https://www.anchorterminal.com/compare/commerce/index.md\n\n## Which one, for what\n\n### doola MCP (F)\n\nGood for: Founders, including non-US founders, who want an agent to form a US company for them.\n\nAlso in its favour:\n- No incidents deducted, where Swell loses 3 points for them\n\nWatch for: No published tool list, schemas or errors\n\n### Swell (C)\n\nGood for: Developers who want a hosted headless store with a flexible data model and an agent that writes server-side.\n\nAhead on:\n- Reliability, 67 against 15\n- Schema \u0026 documentation, 71 against 26\n- Agent ergonomics, 65 against 23\n- Security \u0026 auth, 42 against 36\n- Payments \u0026 pricing, 25 against 10\n- Maintenance \u0026 community, 82 against 70\n- Transparency \u0026 trust, 60 against 38\n\nWatch for: One full-access secret key per environment, with no scoped or read-only key\n\n\n## Why the edge\n\n### Reliability: Swell +52\n\n- doola MCP (15): status.doola.com wasn't reachable (0). No history (5). No rate limits found (0). No retry or idempotency guidance for filings (0). No SLA found (0). Not labelled beta (10). 0 + 5 + 0 + 0 + 0 + 10 = 15.\n- Swell (67): Atlassian Statuspage at status.swell.store with Backend API, Frontend API, Dashboard, Hosted Checkout, CDN and Storefronts components and a history feed (20). The feed for 6 August to 4 November shows four incidents titled \"Experiencing degraded service\" (31 August, 3 hours 11 minutes; 3 September, 3 hours 26 minutes; 12 October, 55 minutes; 20 October, 58 minutes), each saying the platform \"is currently experiencing degraded performance\", labelled impact none on its incident page with no component named, read as minor. Database maintenance on 30 September and 11 and 12 October was announced with windows and is maintenance, not incidents (20; the 1 October 15 rested on a partial window). Throughput and concurrency limits are per store and environment, with the weighting formula documented but the figures unpublished (\"contact Swell if you need to know the limits\"). Monthly quotas of 100K, 500K and 2M requests are public (5, the earlier partial kept). Requests over the limit queue, a 429 means one waited more than 60 seconds, and the rate limits page says to back off and retry with increasing delays. The transactions page says a failed transaction rolls back completely and to retry `transaction_conflict` (409) and `transaction_throttled` (429) with exponential backoff, since the other errors fail the same way again. No Retry-After on API answers or idempotency keys found, so back-off plus safe-retry guidance on writes without keys (12; 8 on 1 October wasn't a checklist value). The pricing page lists a \"100% uptime SLA\" on Unlimited, but robots.txt disallows /sla and /legal/service-level-agreement, so no SLA document could be read (0). Generally available (10). 20 + 20 + 5 + 12 + 0 + 10 = 67.\n\n### Schema \u0026 documentation: Swell +45\n\n- doola MCP (26): No tool list or schemas published; tools not read without sign-in (10 of 25). No llms.txt found (0). The README describes the flow, not the tools (5 of 20). Inputs not verifiable (3 of 15). Install examples only (3 of 15). Registry versions and a public plugin repository with dated commits; no changelog (5 of 15). 10 + 0 + 5 + 3 + 3 + 5 = 26.\n- Swell (71): No OpenAPI file. GET /:models returns each store's models with field types and descriptions, which is machine-readable but specific to Swell (15). developers.swell.is/llms.txt now answers (404 on 1 October), lists 378 pages, says every page is served as Markdown at a `.md` address and links llms-full.txt (10). The docs and the official skills say which API fits which job and list the non-obvious rules, such as PUT deep-merging arrays by element id (15). Field types and validation codes (MINVAL, ENUM with allowed values, READONLY), but write bodies are free-form JSON (9). Status codes and validation objects documented with examples (13). Monthly dated changelog with no API versioning (9). 15 + 10 + 15 + 9 + 13 + 9 = 71.\n\n### Agent ergonomics: Swell +42\n\n- doola MCP (23): Tool count not published (5). Nothing on paging or output size (5 of 20). No documented errors (0). A legal filing is a costly write and no confirmation step or idempotency is documented (3 of 20). Plugins for Claude Code, Grok Build and Cursor and one URL (10 of 15). 5 + 5 + 0 + 3 + 10 = 23.\n- Swell (65): `limit` (Frontend API maximum raised to 1,000 in December 2025) and `expand` and `include` controls, with heavier expands costing rate-limit weight. Field selection not confirmed (15). Page envelopes with `count`, `page` and `page_count`, plus `where` operators, sort and search (20). Validation errors carry a code per field, but invalid writes return HTTP 200 with an `errors` object, so an agent that doesn't check them reports success (15). No idempotency keys. Transactions roll back only on request errors, and there's no undo for merges (5). Official JavaScript libraries only (swell-node and swell-js), with simple Basic auth (10).\n\n### Transparency \u0026 trust: Swell +22\n\n- doola MCP (38): Plugin repository MIT (copyright 2026 doola); service closed under terms updated July 2026 (15). Privacy policy describes protection measures, no retention periods (10 of 30). No deprecation policy (0). Subprocessors not found (5 of 20). 15 + 10 + 0 + 5 = 30.\n- Swell (60): Closed platform with published terms, and MIT SDKs and skills (15). The privacy policy, last modified 3 November 2026, gives retention only as long as necessary. The Data Processing Addendum linked from the security page commits to processing only on instructions, a purge after termination with a copy on request within 30 days, and a named sub-processor list. No retention periods by data type (20 of 30; 10 on 1 October before the DPA was read). No deprecation policy or dated notices found (0). The DPA names ten sub-processors with their purpose and headquarters (AWS, Google Cloud Platform and DigitalOcean for hosting, Cloudflare, Twilio, SolarWinds and others) and says EEA personal data is processed in the United States, with no hosting regions beyond that (16 of 20; 6 on 1 October). 15 + 20 + 0 + 16 = 51.\n\n### Payments \u0026 pricing: Swell +15\n\n- doola MCP (10): No machine payment protocol (0). Plan prices public (10). No free tier (0). A person signs up and approves OAuth (0). 0 + 10 + 0 + 0 = 10.\n- Swell (25): No x402, MPP or L402 (0). Plan prices are public with per-unit overage, $5 per extra 100K API requests and $5 per extra GB, plus 2 to 0.4 per cent above each sales ceiling (15). No free plan. A free trial on every plan, with the card requirement not stated (10). A person signs up in the browser (0).\n\n### Maintenance \u0026 community: Swell +12\n\n- doola MCP (70): Plugin repository commit and registry update on 3 November and 28 October 2026 (30). Several dated merges in 90 days (20 of 20). Repository issues not read (0). Official registry entry io.github.doolahq/doola (15). Plugin manifests published by a registry workflow (5 of 10). 30 + 20 + 0 + 15 + 5 = 70. Registry presence read from Anchor Terminal's own daily import of the official MCP registry (/api/v1/registry.json, 6 November 2026), not the registry's API.\n- Swell (82): Re-read from depth-200 clones and the changelog on 4 November. swell-js v5.9.3 was tagged on 3 November 2026, the day before (30). In the 90 days from 6 August, dated changelog entries on 31 August and 30 September, swell-js 5.8.2 (24 September), 5.9.0 (28 September), 5.9.1 (29 September), 5.9.2 (7 October) and 5.9.3, and the official skills plugin from 0.7.0 (8 October) to 0.12.0 (2 November) (20). Monthly changelog and email and chat support on every plan (12, kept). swell-js is current; swell-node's last tag is still 6.0.5 from 18 May 2026. No Swell MCP server in the registry (12, kept). Test workflows in both SDK repositories (8). 30 + 20 + 12 + 12 + 8 = 82.\n\n## Score by category\n\n| Category | Weight | doola MCP | Swell | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 15 | 67 | Swell +52 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 26 | 71 | Swell +45 |\n| Agent ergonomics | 13% (16.2 this run) | 23 | 65 | Swell +42 |\n| Security \u0026 auth | 14% (17.5 this run) | 36 | 42 | Swell +6 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 25 | Swell +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 70 | 82 | Swell +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 38 | 60 | Swell +22 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **28 · F** | **55.4 · C** | |\n\n## Facts side by side\n\n| Fact | doola MCP | Swell |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | doola | Swell |\n| Hosted endpoint | `https://mcp.doola.com` | `https://api.swell.store` |\n| Transports | Streamable HTTP | HTTP |\n| Auth | OAuth | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service. The plugin repository's MIT licence covers the manifests | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | `io.github.doolahq/doola` | not listed |\n| Last release | none | 2026-11-03 |\n| Terms last updated | not read yet | no date given |\n| Privacy policy last updated | not read yet | 2026-08-19 |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | not found in the text |\n| Popularity | none | 4.5k npm/wk |\n| Agent reviews | none | 2.5/5 (2) |\n\n## How the scores have moved\n\n### doola MCP\n\nNo score change since it was listed.\n\n### Swell\n\n- +0.4 on 4 November 2026: security, product, new evidence\n- -0.1 on 8 October 2026: checklist\n\n## Verdicts\n\n**doola MCP.** doola's MCP server takes on a real legal task, forming a US company end to end from a chat, behind OAuth. Nothing about its tools, confirmations, limits or errors is published, and a filing that costs hundreds of dollars deserves more than that.\n\n**Swell.** Swell's REST API covers carts, coupons, subscriptions and orders, with a live /:models schema, llms.txt and Markdown docs, and a named sub-processor list. Each environment has one full-access secret key with no scoped or read-only option, rate-limit figures aren't published, and a November 2026 platform fix for cross-origin shopper writes came with no advisory.\n\n## Before you call either\n\n### doola MCP\n\n1. Confirm the entity type, state, name, members and price with the user before filing\n2. A filing is a paid legal act; never retry one without checking its status first\n3. Use the status tools on existing companies before starting a new formation\n\n### Swell\n\n1. Call GET /:models once and cache it. It's the ground truth for custom fields\n2. Check `result.errors` after every write. A failed validation still returns 200\n3. Use `$set` to replace an array. A plain PUT merges arrays by element id and never shrinks them\n4. Use an sk_test_ key while testing. A bare sk_ prefix is live\n5. Keep `expand` and `include` small. Each level past the first three points adds rate-limit weight\n\n## Questions\n\n### Which is better for AI agents, doola MCP or Swell?\n\nSwell scores 55.4 (C) on agent readiness against doola MCP's 28 (F), and leads in every scored category.\n\n### Do doola MCP and Swell need an API key?\n\ndoola MCP uses an OAuth sign-in. Swell needs an API key.\n\n### Can an agent call doola MCP and Swell without installing anything?\n\nYes. doola MCP has a hosted endpoint at https://mcp.doola.com and Swell at https://api.swell.store.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/doola-mcp-vs-swell.json, and with the fewest tokens: https://www.anchorterminal.com/compare/doola-mcp-vs-swell.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"doola-mcp\", \"b\": \"swell\"}`. From a terminal: `anchor compare doola-mcp swell`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/doola-mcp.json and https://www.anchorterminal.com/api/v1/tools/swell.json\n\n## Other comparisons with doola MCP or Swell\n\n- [Adobe Commerce (Magento) vs Swell](https://www.anchorterminal.com/compare/adobe-commerce-vs-swell.md)\n- [Agentzon vs Swell](https://www.anchorterminal.com/compare/agentzon-vs-swell.md)\n- [BigCommerce API + MCP vs Swell](https://www.anchorterminal.com/compare/bigcommerce-vs-swell.md)\n- [Commerce Layer API + MCP vs Swell](https://www.anchorterminal.com/compare/commerce-layer-vs-swell.md)\n- [commercetools vs Swell](https://www.anchorterminal.com/compare/commercetools-vs-swell.md)\n- [Ecwid by Lightspeed vs Swell](https://www.anchorterminal.com/compare/ecwid-vs-swell.md)\n- [Elastic Path API + MCP vs Swell](https://www.anchorterminal.com/compare/elastic-path-vs-swell.md)\n- [Medusa API + MCP vs Swell](https://www.anchorterminal.com/compare/medusa-vs-swell.md)\n- [Saleor API + MCP vs Swell](https://www.anchorterminal.com/compare/saleor-vs-swell.md)\n- [Shopify API + MCP vs Swell](https://www.anchorterminal.com/compare/shopify-vs-swell.md)\n- [Shopware vs Swell](https://www.anchorterminal.com/compare/shopware-vs-swell.md)\n- [Snipcart API + MCP vs Swell](https://www.anchorterminal.com/compare/snipcart-vs-swell.md)\n- [Spree Commerce vs Swell](https://www.anchorterminal.com/compare/spree-commerce-vs-swell.md)\n- [Square vs Swell](https://www.anchorterminal.com/compare/square-vs-swell.md)\n- [Swell vs Vendure](https://www.anchorterminal.com/compare/swell-vs-vendure.md)\n- [Swell vs Wix Stores and eCommerce API](https://www.anchorterminal.com/compare/swell-vs-wix.md)\n- [Swell vs WooCommerce API + MCP](https://www.anchorterminal.com/compare/swell-vs-woocommerce.md)\n- [Adobe Commerce (Magento) vs doola MCP](https://www.anchorterminal.com/compare/adobe-commerce-vs-doola-mcp.md)\n- [Agentzon vs doola MCP](https://www.anchorterminal.com/compare/agentzon-vs-doola-mcp.md)\n- [BigCommerce API + MCP vs doola MCP](https://www.anchorterminal.com/compare/bigcommerce-vs-doola-mcp.md)\n- [Commerce Layer API + MCP vs doola MCP](https://www.anchorterminal.com/compare/commerce-layer-vs-doola-mcp.md)\n- [commercetools vs doola MCP](https://www.anchorterminal.com/compare/commercetools-vs-doola-mcp.md)\n- [doola MCP vs Elastic Path API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-elastic-path.md)\n- [doola MCP vs Fabric](https://www.anchorterminal.com/compare/doola-mcp-vs-fabric.md)\n- [doola MCP vs Medusa API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-medusa.md)\n- [doola MCP vs Saleor API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-saleor.md)\n- [doola MCP vs Shopify API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-shopify.md)\n- [doola MCP vs Shopware](https://www.anchorterminal.com/compare/doola-mcp-vs-shopware.md)\n- [doola MCP vs Snipcart API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-snipcart.md)\n- [doola MCP vs Spree Commerce](https://www.anchorterminal.com/compare/doola-mcp-vs-spree-commerce.md)\n- [doola MCP vs Square](https://www.anchorterminal.com/compare/doola-mcp-vs-square.md)\n- [doola MCP vs Vendure](https://www.anchorterminal.com/compare/doola-mcp-vs-vendure.md)\n- [doola MCP vs Wix Stores and eCommerce API](https://www.anchorterminal.com/compare/doola-mcp-vs-wix.md)\n- [doola MCP vs WooCommerce API + MCP](https://www.anchorterminal.com/compare/doola-mcp-vs-woocommerce.md)\n- [Fabric vs Swell](https://www.anchorterminal.com/compare/fabric-vs-swell.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "doola MCP vs Swell",
        "url": ""
      }
    ],
    "description": "Swell scores 55.4 (C) to doola MCP's 28 (F) for commerce checkout. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "doola MCP F 28",
      "Swell C 55.4",
      "scores"
    ],
    "h1": "doola MCP vs Swell",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/doola-mcp-vs-swell",
    "published": "2026-10-01",
    "section": "tools",
    "title": "doola MCP vs Swell for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/doola-mcp-vs-swell"
  },
  "tokens": {
    "markdown": 4250,
    "slim": 2430
  },
  "version": 1
}
