{
  "data": {
    "a": {
      "slug": "spree-commerce",
      "name": "Spree Commerce",
      "vendor": "Vendo Connect Inc",
      "vendorUrl": "https://spreecommerce.org",
      "kind": "http-api",
      "category": "commerce",
      "summary": "Spree Commerce is an open-source commerce platform on Ruby on Rails, maintained by Vendo Connect Inc. A self-hosted store runs a Store API for catalogue, cart and checkout, and an Admin API for back-office work.",
      "url": "https://www.anchorterminal.com/tools/spree-commerce",
      "markdownUrl": "https://www.anchorterminal.com/tools/spree-commerce.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/spree-commerce.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/spree-commerce.json",
      "repo": "https://github.com/spree/spree",
      "license": "BSD-3-Clause for the backend, MIT for the npm packages. Enterprise Edition code is under a separate commercial licence",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@spree/sdk"
        },
        {
          "registry": "npm",
          "name": "@spree/cli"
        },
        {
          "registry": "npm",
          "name": "@spree/admin-sdk"
        },
        {
          "registry": "rubygems",
          "name": "spree"
        }
      ],
      "auth": "mixed",
      "authNotes": "Store API calls need a publishable key (`pk_`) in the `X-Spree-Api-Key` header, plus a customer JWT as a Bearer token or a cart token in `X-Spree-Token` for guests. Admin API calls take a secret key (`sk_`) with `read_*` and `write_*` scopes per resource, or an admin JWT. Keys are created by the store's operator in the dashboard or with `spree api-key create`, with no vendor approval.",
      "pricing": "freemium",
      "pricingNotes": "Free to self-host under BSD 3-Clause, with no platform or transaction fee. The Enterprise Edition is custom pricing through sales. A free hosted Sandbox lets an agent's owner try the Admin API without a contract, for evaluation with test data only (https://spreecommerce.org/enterprise/, checked 2026-10-09).",
      "priceSummary": "Freemium",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI files or the repository (checked 2026-10-09). Payments go through provider integrations such as Stripe, Adyen and PayPal.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 15750,
        "npmWeekly": 1576,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://spreecommerce.org/docs",
      "llmsTxt": "https://spreecommerce.org/docs/llms.txt",
      "openapi": "https://spreecommerce.org/docs/api-reference/store.yaml",
      "capabilities": [
        "commerce.products",
        "commerce.cart",
        "commerce.checkout",
        "commerce.orders",
        "commerce.headless"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local",
        "openapi",
        "llms-txt",
        "mcp",
        "typescript",
        "ruby",
        "webhooks",
        "freemium"
      ],
      "lastRelease": "2026-07-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.4,
        "grade": "BB",
        "agentReady": true,
        "rank": 155,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 90,
          "maintenance": 81,
          "payments": 55,
          "reliability": 82,
          "schema": 85,
          "security": 65,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": -5,
        "negativeNotes": [
          "2026-07-20: six security advisories were published for `spree_api` and related gems between 8 January and 20 July 2026, four rated High, among them guest address and order disclosure without authentication (GHSA-87fh-rc96-6fr6, GHSA-p6pv-q7rc-g4h9, 5 February) and a guest cart takeover on `PATCH /api/v3/store/carts/:id/associate` (GHSA-4825-p4xm-pcf2, 20 July, fixed in 5.4.4 and 5.5.4). All are published with patched versions, so the deduction is reduced (https://github.com/spree/spree/security/advisories)."
        ],
        "verdict": "A self-hosted BSD 3-Clause platform with public OpenAPI files for the Store and Admin APIs, scoped secret keys, documented rate limits and idempotency keys on cart and checkout calls. GitHub lists six security advisories between January and July 2026, four rated High, and the default docs describe the 6.0 release candidate while 5.6.1 is the stable release.",
        "bestFor": "Teams that want to own a Rails commerce backend with marketplace, B2B and multi-region functions and drive it through REST.",
        "strengths": [
          "OpenAPI 3.0.3 files for the Store API (81 paths, 99 operations) and Admin API (259 paths, 417 operations), plus llms.txt and a Markdown copy of every docs page",
          "Secret keys carry `read_*` and `write_*` scopes per resource, are shown once and can be revoked, and a key cannot create a key with wider scopes",
          "`Idempotency-Key` on eight cart, checkout and payment calls, cached for 24 hours, with `Retry-After` on 429 responses",
          "Rate limits are published with numbers, 300 requests a minute per API key by default, and the operator can change them",
          "BSD 3-Clause backend and MIT TypeScript packages, with marketplace and B2B functions in the open-source edition"
        ],
        "weaknesses": [
          "Six GitHub security advisories between 8 January and 20 July 2026, four rated High, most of them access-control flaws on guest carts, orders and addresses",
          "The default docs and the main-branch OpenAPI files describe 6.0, a release candidate dated 8 October 2026. The stable release is 5.6.1 of 28 July 2026",
          "The audit trail is in the paid Enterprise Edition only, and Enterprise prices are not published",
          "Supported-version end dates differ between `SECURITY.md` (5.x until 26 March 2027) and the docs security policy (5.0 until 26 March 2028)",
          "The official MCP server searches and reads the docs only. Store and admin MCP servers are open roadmap issues"
        ],
        "agentNotes": [
          "Send a publishable key in `X-Spree-Api-Key` on every Store API call. Add `X-Spree-Token` with the cart token for guest carts, or a customer JWT as a Bearer token",
          "Send `Idempotency-Key` with the cart token or a customer JWT on cart, payment and completion calls. A request carrying only the publishable key is never cached",
          "Ask for `fields` and `expand` explicitly. Relations are left out by default and `limit` stops at 100",
          "Use a secret key with the narrowest scopes for the Admin API. `read_all` gives a read-only key, and the CLI's auto-minted local key is read-only",
          "Read the docs under `/docs/v5` for a 5.6 store. The default docs describe 6.0, which renames shipments to fulfilments and splits carts from orders"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.4
          }
        ],
        "editorialScores": {
          "ergonomics": 90,
          "maintenance": 81,
          "payments": 55,
          "reliability": 82,
          "schema": 85,
          "security": 65,
          "transparency": 75
        },
        "provenanceScore": 45
      },
      "connect": {
        "install": "npx create-spree-app@latest my-store",
        "http": "curl -X GET 'http://localhost:3000/api/v3/store/products' -H 'X-Spree-Api-Key: pk_xxx'",
        "claudeCode": "claude mcp add --transport http spree-docs https://spreecommerce.org/docs/mcp",
        "config": {
          "mcpServers": {
            "spree-docs": {
              "url": "https://spreecommerce.org/docs/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/commerce.products",
        "tool": "https://letme.dev/spree-commerce"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Community Edition, self-hosted",
          "unit": "month",
          "usd": 0,
          "note": "BSD 3-Clause, the operator pays for its own servers"
        }
      ],
      "provenance": {
        "legalEntity": "Vendo Connect Inc",
        "domain": "spreecommerce.org",
        "domainRegistered": "2009-04-03",
        "endpointOnVendorDomain": false,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/spree/spree/releases",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The Sandbox terms name VENDO CONNECT INC, a Delaware corporation (file number 7005612), 3500 S DuPont Highway, Dover, Delaware 19901, as the company behind the Spree Commerce project. The `LICENSE` file also names Vendo Sp. z o.o. as a copyright holder.",
          "The API runs on the operator's own server, so there is no vendor endpoint and no vendor status page.",
          "No terms or privacy document governs the self-hosted software, and the BSD 3-Clause licence stands in. The published terms (https://spreecommerce.org/terms-of-service/) and privacy notice (https://spreecommerce.org/privacy-policy-sandbox/), both dated 10 July 2026, cover only the hosted Sandbox and Vendo's websites.",
          "https://spreecommerce.org/.well-known/security.txt returns 404. `SECURITY.md` in the repository gives a security mailbox for reports.",
          "RDAP for spreecommerce.org gives a registration date of 2009-04-03 and GoDaddy.com, LLC as registrar."
        ],
        "score": 45
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/spree-commerce.json",
      "live": {
        "slug": "spree-commerce",
        "versions": [
          {
            "registry": "github",
            "name": "spree/spree",
            "version": "v5.6.1",
            "released": "2026-07-28",
            "seenAt": "2026-10-09T17:21:34.764539584Z"
          },
          {
            "registry": "npm",
            "name": "@spree/admin-sdk",
            "version": "0.1.0",
            "seenAt": "2026-10-09T17:21:32.71633834Z"
          },
          {
            "registry": "npm",
            "name": "@spree/cli",
            "version": "3.2.2",
            "seenAt": "2026-10-09T17:21:30.96599442Z"
          },
          {
            "registry": "npm",
            "name": "@spree/sdk",
            "version": "1.2.1",
            "seenAt": "2026-10-09T17:21:28.899108995Z"
          }
        ],
        "githubStars": 15751,
        "npmWeekly": 1576,
        "updatedAt": "2026-10-09T17:21:34.764539584Z"
      }
    },
    "answer": "Spree Commerce scores 70.4 (BB) on agent readiness against Swell's 55 (C), and leads in 6 of 7 scored categories.",
    "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",
      "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",
      "capabilities": [
        "commerce.products",
        "commerce.cart",
        "commerce.checkout",
        "commerce.orders",
        "commerce.headless"
      ],
      "tags": [
        "hosted",
        "typescript",
        "webhooks",
        "closed-source"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55,
        "grade": "C",
        "agentReady": false,
        "rank": 671,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 15,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 82,
          "payments": 25,
          "reliability": 63,
          "schema": 68,
          "security": 35,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Live /:models schema with field types and descriptions for every store. One full-access secret key per environment, with no scoped or read-only key.",
        "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",
          "Official Claude Code skills with about 320 KB of agent reference and their own evals",
          "Public plan prices with per-unit overage for API requests and storage",
          "Events audit log in the developer console since 30 September 2026"
        ],
        "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 numbers aren't published",
          "No llms.txt, OpenAPI, security.txt or disclosure policy",
          "No DPA, subprocessor list or deprecation policy found"
        ],
        "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.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 55
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 82,
          "payments": 25,
          "reliability": 63,
          "schema": 68,
          "security": 35,
          "transparency": 31
        },
        "provenanceScore": 68
      },
      "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-09-30",
        "notes": [
          "The API runs on api.swell.store, Swell's older domain, not swell.is.",
          "/.well-known/security.txt redirects to itself, so no file could be read."
        ],
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/swell.json",
      "live": {
        "slug": "swell",
        "probe": {
          "target": "https://api.swell.store",
          "method": "get",
          "lastAt": "2026-10-10T02:55:12.212971783Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 424,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 425,
          "p95ms24h": 479,
          "samples24h": 249,
          "samples30d": 2466,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 35
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "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": 30,
              "ok": 30
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.swell.store",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T02:50:48.627385163Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "swell-js",
            "version": "5.9.2",
            "seenAt": "2026-10-09T17:23:05.642619805Z"
          },
          {
            "registry": "npm",
            "name": "swell-node",
            "version": "6.0.5",
            "seenAt": "2026-10-09T17:23:04.823637032Z"
          }
        ],
        "npmWeekly": 807,
        "securityTxt": {
          "url": "https://swell.is/.well-known/security.txt",
          "state": "unknown",
          "checkedAt": "2026-10-09T15:40:35.301481939Z"
        },
        "domain": {
          "domain": "swell.is",
          "registered": "2019-09-06",
          "source": "https://rdap.isnic.is/rdap/domain/swell.is",
          "checkedAt": "2026-10-04T13:09:13.981723691Z"
        },
        "pages": [
          {
            "url": "https://www.swell.is/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:54:46.112149571Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1629c2fb7a64"
          },
          {
            "url": "https://www.swell.is/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:54:52.293445417Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "32193c4b3a20"
          },
          {
            "url": "https://www.swell.is/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:54:48.326202016Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fbd01fa046b6"
          },
          {
            "url": "https://www.swell.is/legal/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:54:50.294224938Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4090f2726940"
          }
        ],
        "updatedAt": "2026-10-10T02:55:12.212971783Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Vendo Connect Inc",
        "b": "Swell",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.swell.store",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "BSD-3-Clause for the backend, MIT for the npm packages. Enterprise Edition code is under a separate commercial licence",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-07-28",
        "b": "2026-09-30",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-08-19",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "16k stars, 1.6k npm/wk",
        "b": "4.5k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Spree Commerce scores 70.4 (BB) on agent readiness against Swell's 55 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Spree Commerce or Swell?"
      },
      {
        "answer": "Spree Commerce takes an API key or an OAuth sign-in. Swell needs an API key.",
        "question": "Do Spree Commerce and Swell need an API key?"
      },
      {
        "answer": "No hosted endpoint is listed for Spree Commerce. Swell has a hosted endpoint at https://api.swell.store.",
        "question": "Can an agent call Spree Commerce and Swell without installing anything?"
      },
      {
        "answer": "Spree Commerce is open source (BSD-3-Clause for the backend, MIT for the npm packages. Enterprise Edition code is under a separate commercial licence). No open-source release is listed for Swell.",
        "question": "Are Spree Commerce and Swell open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 82 against 63",
          "Schema \u0026 documentation, 85 against 68",
          "Agent ergonomics, 90 against 65",
          "Security \u0026 auth, 65 against 35",
          "Payments \u0026 pricing, 55 against 25",
          "Transparency \u0026 trust, 60 against 50"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Open source"
        ],
        "goodFor": "Teams that want to own a Rails commerce backend with marketplace, B2B and multi-region functions and drive it through REST.",
        "slug": "spree-commerce",
        "watchFor": "Six GitHub security advisories between 8 January and 20 July 2026, four rated High, most of them access-control flaws on guest carts, orders and addresses"
      },
      {
        "aheadOn": null,
        "also": [
          "A hosted endpoint, with nothing to install",
          "No incidents deducted, where Spree Commerce loses 5 points for them"
        ],
        "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"
      }
    ],
    "job": {
      "capability": "commerce.products",
      "name": "Commerce catalogues"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-commerce-vs-spree-commerce.json",
        "title": "Adobe Commerce (Magento) vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/adobe-commerce-vs-spree-commerce"
      },
      {
        "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/bigcommerce-vs-spree-commerce.json",
        "title": "BigCommerce API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/bigcommerce-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Commerce Layer API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/commerce-layer-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "commercetools vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/commercetools-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Ecwid by Lightspeed vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/ecwid-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Elastic Path API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/elastic-path-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Medusa API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/medusa-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Saleor API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/saleor-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Shopify API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/shopify-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Shopware vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/shopware-vs-spree-commerce"
      },
      {
        "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-spree-commerce.json",
        "title": "Snipcart API + MCP vs Spree Commerce",
        "url": "https://www.anchorterminal.com/compare/snipcart-vs-spree-commerce"
      },
      {
        "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-square.json",
        "title": "Spree Commerce vs Square",
        "url": "https://www.anchorterminal.com/compare/spree-commerce-vs-square"
      },
      {
        "json": "https://www.anchorterminal.com/compare/spree-commerce-vs-vendure.json",
        "title": "Spree Commerce vs Vendure",
        "url": "https://www.anchorterminal.com/compare/spree-commerce-vs-vendure"
      },
      {
        "json": "https://www.anchorterminal.com/compare/spree-commerce-vs-wix.json",
        "title": "Spree Commerce vs Wix Stores and eCommerce API",
        "url": "https://www.anchorterminal.com/compare/spree-commerce-vs-wix"
      },
      {
        "json": "https://www.anchorterminal.com/compare/spree-commerce-vs-woocommerce.json",
        "title": "Spree Commerce vs WooCommerce API + MCP",
        "url": "https://www.anchorterminal.com/compare/spree-commerce-vs-woocommerce"
      },
      {
        "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"
      }
    ],
    "scores": [
      {
        "by": 19,
        "edge": "spree-commerce",
        "key": "reliability",
        "name": "Reliability",
        "spree-commerce": 82,
        "swell": 63,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "edge": "spree-commerce",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "spree-commerce": 85,
        "swell": 68,
        "weight": 13
      },
      {
        "by": 25,
        "edge": "spree-commerce",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "spree-commerce": 90,
        "swell": 65,
        "weight": 13
      },
      {
        "by": 30,
        "edge": "spree-commerce",
        "key": "security",
        "name": "Security \u0026 auth",
        "spree-commerce": 65,
        "swell": 35,
        "weight": 14
      },
      {
        "by": 30,
        "edge": "spree-commerce",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "spree-commerce": 55,
        "swell": 25,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "swell",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "spree-commerce": 81,
        "swell": 82,
        "weight": 7
      },
      {
        "by": 10,
        "edge": "spree-commerce",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "spree-commerce": 60,
        "swell": 50,
        "weight": 7
      }
    ],
    "summary": "Spree Commerce scores 70.4 (BB) on agent readiness against Swell's 55 (C), and leads in 6 of 7 scored categories. Both do commerce catalogues.",
    "verdicts": {
      "spree-commerce": "A self-hosted BSD 3-Clause platform with public OpenAPI files for the Store and Admin APIs, scoped secret keys, documented rate limits and idempotency keys on cart and checkout calls. GitHub lists six security advisories between January and July 2026, four rated High, and the default docs describe the 6.0 release candidate while 5.6.1 is the stable release.",
      "swell": "Live /:models schema with field types and descriptions for every store. One full-access secret key per environment, with no scoped or read-only key."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell",
    "json": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell.md",
    "slim": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell.min.md"
  },
  "markdown": "Spree Commerce scores 70.4 (BB) on agent readiness against Swell's 55 (C), and leads in 6 of 7 scored categories. Both do commerce catalogues.\n\n- Spree Commerce: grade BB, 70.4/100, rank #155 of 950. Markdown https://www.anchorterminal.com/tools/spree-commerce.md · JSON https://www.anchorterminal.com/api/v1/tools/spree-commerce.json\n- Swell: grade C, 55/100, rank #671 of 950. 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 136 commerce comparisons: https://www.anchorterminal.com/compare/commerce/index.md\n\n## Which one, for what\n\n### Spree Commerce (BB)\n\nGood for: Teams that want to own a Rails commerce backend with marketplace, B2B and multi-region functions and drive it through REST.\n\nAhead on:\n- Reliability, 82 against 63\n- Schema \u0026 documentation, 85 against 68\n- Agent ergonomics, 90 against 65\n- Security \u0026 auth, 65 against 35\n- Payments \u0026 pricing, 55 against 25\n- Transparency \u0026 trust, 60 against 50\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Open source\n\nWatch for: Six GitHub security advisories between 8 January and 20 July 2026, four rated High, most of them access-control flaws on guest carts, orders and addresses\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\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- No incidents deducted, where Spree Commerce loses 5 points for them\n\nWatch for: One full-access secret key per environment, with no scoped or read-only key\n\n\n## Score by category\n\n| Category | Weight | Spree Commerce | Swell | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 82 | 63 | Spree Commerce +19 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 68 | Spree Commerce +17 |\n| Agent ergonomics | 13% (16.2 this run) | 90 | 65 | Spree Commerce +25 |\n| Security \u0026 auth | 14% (17.5 this run) | 65 | 35 | Spree Commerce +30 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 55 | 25 | Spree Commerce +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 81 | 82 | Swell +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 60 | 50 | Spree Commerce +10 |\n| Negative events | ≤15 | -5 | 0 | |\n| **Total** | | **70.4 · BB** | **55 · C** | |\n\n## Facts side by side\n\n| Fact | Spree Commerce | Swell |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Vendo Connect Inc | Swell |\n| Hosted endpoint | no (local only) | `https://api.swell.store` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | BSD-3-Clause for the backend, MIT for the npm packages. Enterprise Edition code is under a separate commercial licence | none |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | no |\n| Last release | 2026-07-28 | 2026-09-30 |\n| Terms last updated | no document linked | no date given |\n| Privacy policy last updated | no document linked | 2026-08-19 |\n| Customer content may train models |  | not found in the text |\n| Terms restrict automated access |  | not found in the text |\n| Terms restrict benchmarking |  | not found in the text |\n| Terms or service can change without notice |  | not found in the text |\n| Arbitration or class-action waiver |  | not found in the text |\n| Popularity | 16k stars, 1.6k npm/wk | 4.5k npm/wk |\n| Agent reviews | none | 2.5/5 (2) |\n\n## Verdicts\n\n**Spree Commerce.** A self-hosted BSD 3-Clause platform with public OpenAPI files for the Store and Admin APIs, scoped secret keys, documented rate limits and idempotency keys on cart and checkout calls. GitHub lists six security advisories between January and July 2026, four rated High, and the default docs describe the 6.0 release candidate while 5.6.1 is the stable release.\n\n**Swell.** Live /:models schema with field types and descriptions for every store. One full-access secret key per environment, with no scoped or read-only key.\n\n## Before you call either\n\n### Spree Commerce\n\n1. Send a publishable key in `X-Spree-Api-Key` on every Store API call. Add `X-Spree-Token` with the cart token for guest carts, or a customer JWT as a Bearer token\n2. Send `Idempotency-Key` with the cart token or a customer JWT on cart, payment and completion calls. A request carrying only the publishable key is never cached\n3. Ask for `fields` and `expand` explicitly. Relations are left out by default and `limit` stops at 100\n4. Use a secret key with the narrowest scopes for the Admin API. `read_all` gives a read-only key, and the CLI's auto-minted local key is read-only\n5. Read the docs under `/docs/v5` for a 5.6 store. The default docs describe 6.0, which renames shipments to fulfilments and splits carts from orders\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, Spree Commerce or Swell?\n\nSpree Commerce scores 70.4 (BB) on agent readiness against Swell's 55 (C), and leads in 6 of 7 scored categories.\n\n### Do Spree Commerce and Swell need an API key?\n\nSpree Commerce takes an API key or an OAuth sign-in. Swell needs an API key.\n\n### Can an agent call Spree Commerce and Swell without installing anything?\n\nNo hosted endpoint is listed for Spree Commerce. Swell has a hosted endpoint at https://api.swell.store.\n\n### Are Spree Commerce and Swell open source?\n\nSpree Commerce is open source (BSD-3-Clause for the backend, MIT for the npm packages. Enterprise Edition code is under a separate commercial licence). No open-source release is listed for Swell.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/spree-commerce-vs-swell.json, and with the fewest tokens: https://www.anchorterminal.com/compare/spree-commerce-vs-swell.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"spree-commerce\", \"b\": \"swell\"}`. From a terminal: `anchor compare spree-commerce swell`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/spree-commerce.json and https://www.anchorterminal.com/api/v1/tools/swell.json\n\n## Other comparisons with Spree Commerce or Swell\n\n- [Adobe Commerce (Magento) vs Spree Commerce](https://www.anchorterminal.com/compare/adobe-commerce-vs-spree-commerce.md)\n- [Adobe Commerce (Magento) vs Swell](https://www.anchorterminal.com/compare/adobe-commerce-vs-swell.md)\n- [BigCommerce API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/bigcommerce-vs-spree-commerce.md)\n- [BigCommerce API + MCP vs Swell](https://www.anchorterminal.com/compare/bigcommerce-vs-swell.md)\n- [Commerce Layer API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/commerce-layer-vs-spree-commerce.md)\n- [Commerce Layer API + MCP vs Swell](https://www.anchorterminal.com/compare/commerce-layer-vs-swell.md)\n- [commercetools vs Spree Commerce](https://www.anchorterminal.com/compare/commercetools-vs-spree-commerce.md)\n- [commercetools vs Swell](https://www.anchorterminal.com/compare/commercetools-vs-swell.md)\n- [Ecwid by Lightspeed vs Spree Commerce](https://www.anchorterminal.com/compare/ecwid-vs-spree-commerce.md)\n- [Ecwid by Lightspeed vs Swell](https://www.anchorterminal.com/compare/ecwid-vs-swell.md)\n- [Elastic Path API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/elastic-path-vs-spree-commerce.md)\n- [Elastic Path API + MCP vs Swell](https://www.anchorterminal.com/compare/elastic-path-vs-swell.md)\n- [Medusa API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/medusa-vs-spree-commerce.md)\n- [Medusa API + MCP vs Swell](https://www.anchorterminal.com/compare/medusa-vs-swell.md)\n- [Saleor API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/saleor-vs-spree-commerce.md)\n- [Saleor API + MCP vs Swell](https://www.anchorterminal.com/compare/saleor-vs-swell.md)\n- [Shopify API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/shopify-vs-spree-commerce.md)\n- [Shopify API + MCP vs Swell](https://www.anchorterminal.com/compare/shopify-vs-swell.md)\n- [Shopware vs Spree Commerce](https://www.anchorterminal.com/compare/shopware-vs-spree-commerce.md)\n- [Shopware vs Swell](https://www.anchorterminal.com/compare/shopware-vs-swell.md)\n- [Snipcart API + MCP vs Spree Commerce](https://www.anchorterminal.com/compare/snipcart-vs-spree-commerce.md)\n- [Snipcart API + MCP vs Swell](https://www.anchorterminal.com/compare/snipcart-vs-swell.md)\n- [Spree Commerce vs Square](https://www.anchorterminal.com/compare/spree-commerce-vs-square.md)\n- [Spree Commerce vs Vendure](https://www.anchorterminal.com/compare/spree-commerce-vs-vendure.md)\n- [Spree Commerce vs Wix Stores and eCommerce API](https://www.anchorterminal.com/compare/spree-commerce-vs-wix.md)\n- [Spree Commerce vs WooCommerce API + MCP](https://www.anchorterminal.com/compare/spree-commerce-vs-woocommerce.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",
  "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": "Spree Commerce vs Swell",
        "url": ""
      }
    ],
    "description": "Spree Commerce scores 70.4 (BB) to Swell's 55 (C) for commerce catalogues. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Spree Commerce BB 70.4",
      "Swell C 55",
      "scores"
    ],
    "h1": "Spree Commerce vs Swell",
    "image": "https://www.anchorterminal.com/assets/og/compare-spree-commerce-vs-swell.png",
    "path": "/compare/spree-commerce-vs-swell",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Spree Commerce vs Swell for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/spree-commerce-vs-swell"
  },
  "tokens": {
    "markdown": 2650,
    "slim": 730
  },
  "version": 1
}
