{
  "data": {
    "a": {
      "slug": "bcms",
      "name": "BCMS",
      "vendor": "Becomes tech, LLC",
      "vendorUrl": "https://www.thebcms.com",
      "kind": "http-api",
      "category": "cms",
      "summary": "BCMS is a hosted headless CMS from Becomes tech, LLC. People edit structured content in a dashboard, and agents work with templates, entries, media and languages through a REST API, a JavaScript client, a CLI and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/bcms",
      "markdownUrl": "https://www.anchorterminal.com/tools/bcms.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bcms.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bcms.json",
      "dns": "bcms.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://app.thebcms.com/api/v3/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@thebcms/client"
        }
      ],
      "auth": "api-key",
      "authNotes": "Three-part keys (keyId.secret.instanceId) created in the dashboard and scoped to templates and media, with schema tools only for keys allowed them. The MCP endpoint takes the key only as the `mcpKey` query parameter, and the REST examples pass `apiKey` in the query string. The docs advise a key per person, client and environment and regular rotation.",
      "pricing": "paid",
      "pricingNotes": "Hobby $5 a month ($4 billed yearly) with 2 seats, 100 entries and 500 MB of media; Pro $50 a month ($33 yearly) with 5 seats, then $15 a seat a month, and unlimited entries; Enterprise by quote. Every plan starts with a 14-day free trial with no card. No self-hosted edition.",
      "priceSummary": "$5 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, the docs, the MCP page or pricing.md (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 45,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 396,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://www.thebcms.com/docs",
      "llmsTxt": "https://www.thebcms.com/llms.txt",
      "capabilities": [
        "cms.content",
        "cms.assets",
        "cms.localisation",
        "cms.schema",
        "cms.publish"
      ],
      "tags": [
        "hosted",
        "mcp",
        "remote-mcp",
        "llms-txt",
        "no-card",
        "closed-source",
        "webhooks",
        "typescript",
        "cli"
      ],
      "lastRelease": "2026-03-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 33.5,
        "grade": "F",
        "agentReady": false,
        "rank": 1383,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 17,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 36,
          "maintenance": 16,
          "payments": 30,
          "reliability": 15,
          "schema": 50,
          "security": 39,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "BCMS gives agents 45 MCP tools over templates, entries, statuses, history and media, with keys scoped per template and agent guidance in llms.txt, from $5 a month. The MCP key can only travel in the URL, and no status page, rate limits, changelog or security policy were found.",
        "bestFor": "Small sites and agencies that want a cheap hosted CMS an agent can edit.",
        "strengths": [
          "Remote MCP server covering templates, entries, statuses, entry history, media, languages and trash",
          "Keys scoped to the templates and media an agent needs, with schema tools gated separately",
          "llms.txt that says when to use BCMS and when not to, plus a public SKILL.md",
          "Entry history and trash readable through MCP, so an agent can trace and recover changes",
          "14-day trial with no card, then plans from $5 a month"
        ],
        "weaknesses": [
          "The MCP key is accepted only as a URL query parameter",
          "No status page, documented rate limits, SLA or changelog found",
          "No security.txt, disclosure policy or certification found",
          "The JavaScript client hasn't been released since March 2026",
          "No self-hosted edition; the open-source repository has been unmaintained since October 2024"
        ],
        "agentNotes": [
          "Keep the MCP URL out of logs and shared config, since the key is inside it",
          "Call get-all-templates first and mutate only once you have template and entry ids",
          "Ask for a key scoped to the templates the task needs, without schema permission unless it changes the model",
          "List and confirm entry ids with the user before calling delete-entries",
          "Use the bcms-content CLI for scripted runs that need JSON output and exit codes"
        ],
        "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": 33.5
          }
        ],
        "editorialScores": {
          "ergonomics": 36,
          "maintenance": 16,
          "payments": 30,
          "reliability": 15,
          "schema": 50,
          "security": 39,
          "transparency": 48
        },
        "provenanceScore": 56,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @thebcms/client",
        "claudeCode": "claude mcp add --transport http bcms \"https://app.thebcms.com/api/v3/mcp?mcpKey=YOUR_MCP_KEY_HERE\"",
        "config": {
          "mcpServers": {
            "bcms": {
              "url": "https://app.thebcms.com/api/v3/mcp?mcpKey=YOUR_MCP_KEY_HERE"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cms.content",
        "tool": "https://letme.dev/bcms"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Hobby plan",
          "unit": "month",
          "usd": 5,
          "note": "$4 a month billed yearly; 2 seats, 100 entries"
        },
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 50,
          "note": "$33 a month billed yearly; 5 seats"
        },
        {
          "item": "Extra Pro seat",
          "unit": "seat-month",
          "usd": 15,
          "note": "$120 a year on yearly billing"
        }
      ],
      "provenance": {
        "legalEntity": "Becomes tech, LLC",
        "domain": "thebcms.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.thebcms.com/terms-of-use/",
        "privacy": "https://www.thebcms.com/privacy-policy/",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms and privacy policy, both effective 30 July 2026, name Becomes tech, LLC, a Delaware LLC. The terms forbid scraping or crawling that burdens or abuses the services, except through the documented APIs within rate limits.",
          "www.thebcms.com/robots.txt allows all. app.thebcms.com/robots.txt disallows all paths.",
          "www.thebcms.com/.well-known/security.txt returned 404 and no status page was found.",
          "RDAP gave no registration date for thebcms.com through rdap.org."
        ],
        "score": 56
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bcms.json",
      "live": {
        "slug": "bcms",
        "probe": {
          "target": "https://app.thebcms.com/api/v3/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:13.025269198Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 197,
          "authRequired": false,
          "uptime24h": 99.5,
          "uptime30d": 99.5,
          "p50ms24h": 141,
          "p95ms24h": 393,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 186
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@thebcms/client",
            "version": "2.0.3",
            "seenAt": "2026-11-06T23:10:32.023184196Z"
          }
        ],
        "npmWeekly": 396,
        "securityTxt": {
          "url": "https://thebcms.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:49.817334601Z"
        },
        "llmsTxt": {
          "url": "https://www.thebcms.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:42.21650798Z"
        },
        "pages": [
          {
            "url": "https://www.thebcms.com/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:35.490295236Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "abae80fa615e"
          },
          {
            "url": "https://www.thebcms.com/terms-of-use/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:37.777884178Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "58d8ef9074aa"
          }
        ],
        "mcpTools": {
          "url": "https://app.thebcms.com/api/v3/mcp?mcpKey=YOUR_MCP_KEY_HERE",
          "checkedAt": "2026-11-07T01:42:42.874889438Z",
          "status": "error",
          "note": "initialize: no JSON-RPC answer",
          "changedAt": "2026-11-07T01:42:42.874889438Z"
        },
        "updatedAt": "2026-11-07T18:20:13.025269198Z"
      }
    },
    "answer": "ButterCMS scores 51.4 (D) on agent readiness against BCMS's 33.5 (F), and leads in 4 of 7 scored categories. BCMS leads on security \u0026 auth and payments \u0026 pricing.",
    "b": {
      "slug": "buttercms",
      "name": "ButterCMS",
      "vendor": "ButterCMS LLC",
      "vendorUrl": "https://buttercms.com",
      "kind": "http-api",
      "category": "cms",
      "summary": "ButterCMS is a hosted headless CMS with pages, collections and a blog engine. Agents read content through a REST Read API and create, update, publish and delete it through a REST Write API sold as a paid add-on.",
      "url": "https://www.anchorterminal.com/tools/buttercms",
      "markdownUrl": "https://www.anchorterminal.com/tools/buttercms.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/buttercms.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/buttercms.json",
      "dns": "buttercms.grade.anchorterminal.com",
      "repo": "https://github.com/ButterCMS/buttercms-js",
      "license": "Proprietary service under ButterCMS's terms of service. The SDKs and starter projects on GitHub are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.buttercms.com/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "buttercms"
        },
        {
          "registry": "pypi",
          "name": "buttercms-python"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve for reads, paid add-on for writes. A person signs up in a browser and copies the read token from Settings. The write token exists only after the Write API add-on is bought under Settings, Billing, or enabled by support, and one docs page says this needs verification. The read token goes in the `auth_token` query parameter or an `Authorization: Token` header. The write token is accepted in the header only. There is one token of each kind per account, with no scopes, and the docs say tokens are rotated by contacting support. No OAuth, app review or sales approval for the listed plans.",
      "pricing": "freemium",
      "pricingNotes": "The Free plan needs no card and includes 50,000 API calls a month, but not the Write API. Writing needs Advanced ($249 a month, $224 billed yearly) or Professional ($399, $359 billed yearly) plus the Write API add-on, whose price is not published, with 2,000 or 5,000 write calls a month. Enterprise includes it and is sold through sales. Every plan has a 14-day trial (https://buttercms.com/pricing/, checked 2026-10-09).",
      "priceSummary": "$79 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the OpenAPI files or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 6929,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://buttercms.com/docs/api/overview",
      "llmsTxt": "https://buttercms.com/docs/llms.txt",
      "openapi": "https://buttercms.com/docs/api/openapi/openapi.yaml",
      "capabilities": [
        "cms.content",
        "cms.publish",
        "cms.assets",
        "cms.localisation"
      ],
      "tags": [
        "official",
        "hosted",
        "closed-source",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "free-tier",
        "no-card",
        "status-page",
        "javascript",
        "python",
        "php",
        "ruby"
      ],
      "lastRelease": "2025-09-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.4,
        "grade": "D",
        "agentReady": false,
        "rank": 1021,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 14,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 17,
          "payments": 20,
          "reliability": 82,
          "schema": 78,
          "security": 31,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -2,
        "negativeNotes": [
          "9 October 2026. The docs page on AI tools showed `butter.page.update(...)` as the way to write through the JavaScript SDK, while the published SDK 3.0.3 has list, retrieve and search methods only and the SDK overview says to call REST for writes. By 4 November 2026 the page calls the Write API directly and says the SDK's Page resource is read-only; the term stays within the 12 months, as agentos's corrected claims did (https://buttercms.com/docs/build-your-app/third-party-integrations/ai-tools-integration.md, https://github.com/ButterCMS/buttercms-js). 2 points."
        ],
        "verdict": "The Read and Write APIs have a public OpenAPI 3.1 file, Markdown docs and a status page with no incident since October 2025. The Write API is a paid add-on from the $249 plan, capped at 2,000 or 5,000 calls a month. Writes answer 202 with no identifier, and no SDK has had a release since September 2025.",
        "bestFor": "A team already on a paid ButterCMS plan that wants an agent to draft and publish pages, collection items and blog posts in small volumes.",
        "strengths": [
          "Public OpenAPI 3.1 files for the Read and Write APIs (28 operations in the combined file), a docs llms.txt and a Markdown copy of every docs page",
          "status.buttercms.com lists three components and no incident since 20 October 2025",
          "Writes create drafts unless `status` is `published`, and the write token is separate from the read token and accepted only in a header",
          "Media fields take a URL and the service copies the file into the media library, so one request creates an entry with its image",
          "Free plan with no card and 50,000 API calls a month for reading, and dollar prices for four plans on the pricing page"
        ],
        "weaknesses": [
          "The Write API is a paid add-on on Advanced ($249 a month) and Professional ($399), capped at 2,000 and 5,000 write calls a month. Its price is not published",
          "Create and update calls answer 202 with `{\"status\": \"pending\"}` and no identifier, and there are no idempotency keys",
          "One read token and one write token per account, with no scopes. The docs say rotation is done by contacting support",
          "Page types and collections cannot be created through the API, pages cannot be deleted through it, and it has no version or rollback operation",
          "The terms are an undated website Terms of Service, the privacy policy dates from 15 August 2022 and covers the website, and a DPA is on request for Enterprise only",
          "No API changelog or deprecation policy was found. No SDK has had a release since JavaScript 3.0.3 on 4 September 2025, and that SDK has no write methods"
        ],
        "agentNotes": [
          "End every path with a slash. A missing slash returns a 301, and the vendor counts the redirect and the retry as two API calls",
          "Send the write token only as `Authorization: Token \u003ctoken\u003e`. The `auth_token` query parameter works for reads only",
          "On page creation send every field key of the page type, with empty strings for fields left blank",
          "A 202 means queued, not saved. Read the entry back with `preview=1` to confirm, and check a slug exists before retrying a create",
          "Call the REST API directly for writes. The JavaScript SDK 3.0.3 has list, retrieve and search methods only"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.4
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 17,
          "payments": 20,
          "reliability": 82,
          "schema": 78,
          "security": 31,
          "transparency": 26
        },
        "provenanceScore": 78,
        "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": {
        "install": "npm install buttercms --save",
        "http": "curl -H \"Authorization: Token your_api_token\" \\\n     \"https://api.buttercms.com/v2/posts/\""
      },
      "letme": {
        "capability": "https://letme.dev/cms.content",
        "tool": "https://letme.dev/buttercms"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Basic",
          "unit": "month",
          "usd": 79,
          "note": "billed monthly, $71 billed yearly, 100,000 API calls, no Write API"
        },
        {
          "item": "Advanced",
          "unit": "month",
          "usd": 249,
          "note": "billed monthly, $224 billed yearly, 500,000 API calls, Write API add-on priced separately (up to 2,000 write calls)"
        },
        {
          "item": "Professional",
          "unit": "month",
          "usd": 399,
          "note": "billed monthly, $359 billed yearly, 1M API calls, Write API add-on priced separately (up to 5,000 write calls)"
        }
      ],
      "provenance": {
        "legalEntity": "ButterCMS LLC",
        "domain": "buttercms.com",
        "domainRegistered": "2015-03-24",
        "endpointOnVendorDomain": true,
        "terms": "https://buttercms.com/terms/",
        "privacy": "https://buttercms.com/privacy/",
        "statusPage": "https://status.buttercms.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The privacy policy (last modified 15 August 2022) names ButterCMS LLC. The terms name only Butter and ButterCMS, carry no date, give a San Francisco postal address for DMCA notices and choose Michigan law.",
          "The terms are written as website Terms of Service and define the Website to include the services on it. The Write API's OpenAPI file names this page as its licence, so it is the only published contract for the API. No separate service agreement, API terms or SLA document was found.",
          "The privacy policy covers information collected on the website and says nothing about content stored in the CMS. The docs say a data processing agreement is available to Enterprise customers on request.",
          "A status page post about a DNS outage on 9 September 2024 says ButterCMS was acquired by Tiugo Technologies, and the site's careers link goes to Tiugo's recruiting page.",
          "The API answers at api.buttercms.com and the dashboard at app.buttercms.com.",
          "buttercms.com/.well-known/security.txt returns 404. The docs give security@buttercms.com for vulnerability reports.",
          "RDAP for buttercms.com gives a registration date of 2015-03-24 and Amazon Registrar, Inc. as registrar.",
          "No API changelog was found on the site or in the docs index. The JavaScript SDK repository has a CHANGELOG.md."
        ],
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/buttercms.json",
      "live": {
        "slug": "buttercms",
        "probe": {
          "target": "https://api.buttercms.com/v2",
          "method": "get",
          "lastAt": "2026-11-07T18:20:15.818598204Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "too many redirects",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 239,
          "samples30d": 7205,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 0
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 0
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 0
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 0
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 0
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 0
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 0
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 0
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 0
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 0
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 0
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 0
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 0
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 0
            }
          ],
          "outages": [
            {
              "start": "2026-10-09T15:43:00.096294667Z",
              "end": "0001-01-01T00:00:00Z",
              "note": "too many redirects"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.buttercms.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:20:37.678717104Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "ButterCMS/buttercms-js",
            "version": "v3.0.3",
            "released": "2025-09-04",
            "seenAt": "2026-11-06T23:13:00.320392722Z"
          },
          {
            "registry": "npm",
            "name": "buttercms",
            "version": "3.0.3",
            "seenAt": "2026-11-06T23:12:59.922427706Z"
          },
          {
            "registry": "pypi",
            "name": "buttercms-python",
            "version": "2.1.1",
            "released": "2024-05-07",
            "seenAt": "2026-11-06T23:13:00.12522511Z"
          }
        ],
        "githubStars": 164,
        "npmWeekly": 9389,
        "pypiWeekly": 301,
        "securityTxt": {
          "url": "https://buttercms.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:49.204405911Z"
        },
        "llmsTxt": {
          "url": "https://buttercms.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:45.80373153Z"
        },
        "domain": {
          "domain": "buttercms.com",
          "registered": "2015-03-24",
          "source": "https://rdap.verisign.com/com/v1/domain/buttercms.com",
          "checkedAt": "2026-11-01T14:13:03.897204984Z"
        },
        "pages": [
          {
            "url": "https://buttercms.com/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:00:36.294009426Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9ba825b44b86"
          },
          {
            "url": "https://buttercms.com/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:00:38.426465317Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "908b6461f1b9"
          },
          {
            "url": "https://buttercms.com/terms/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:00:40.417468366Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8862b63c94a5"
          }
        ],
        "github": {
          "repo": "buttercms/buttercms-js",
          "checkedAt": "2026-11-02T08:37:25.410869031Z",
          "stars": 164,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2025-11-13T15:53:09Z",
          "openIssues": 2,
          "openPRs": 1,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "ci": {
            "branch": "master",
            "runs": 2,
            "success": 1,
            "failure": 0,
            "other": 1,
            "latest": "skipped",
            "latestAt": "2025-11-13T15:53:02Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 2,
            "medianDays": 13
          }
        },
        "updatedAt": "2026-11-07T18:20:15.818598204Z"
      }
    },
    "edges": [
      {
        "by": 67,
        "category": "reliability",
        "leads": "buttercms",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on BCMS Cloud with the hosted lines. No status page was found (0) and no incident history could be read (5). The terms refer to rate limits, but no numbers were found in the docs (0). No 429 or retry guidance was found (0). No SLA; Enterprise is by quote (0). The MCP server card says version 3.0.0 and nothing is labelled beta (10). 0+5+0+0+0+10 = 15.",
          "b": "Graded on the hosted Read and Write APIs. Public status page on Atlassian Statuspage with CDN, API and Login Page components and a history feed (20). The feed's newest incidents are two on 20 October 2025, so the 90 days to 4 November 2026 are clean (30). Limits are published as monthly quotas by plan, from 50,000 calls on Free to 1M on Professional, with 2,000 or 5,000 write calls on the add-on. No per-second limit is published (10 of 15, a partial kept from the 9 October check). Free and trial accounts get a 429 that the docs say may carry `Retry-After`, the docs show exponential backoff for 5xx errors, and the bulk-operations page says to check whether content exists before creating it to avoid duplicates during retries. There are no idempotency keys, so safe-retry guidance without keys (12). The pricing page lists an SLA on Enterprise with no SLA document or figure, which this run reads as 0. The v2 API is generally available (10)."
        },
        "scores": {
          "a": 15,
          "b": 82
        }
      },
      {
        "by": 28,
        "category": "schema",
        "leads": "buttercms",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "The docs link an OpenAPI reference at app.thebcms.com/open-api-docs, but that host's robots.txt disallows every path, so it wasn't read. The MCP tool schemas need a session (10 of 25). llms.txt, docs llms.txt, llms-full.txt, Markdown pages and a public SKILL.md (10). llms.txt says when to use BCMS and when not to, and the MCP page gives each tool group's purpose (12 of 20). Input typing couldn't be checked (5 of 15). Curl and JavaScript examples, and troubleshooting for 403 and permission errors (7 of 15). API v3 paths and a 3.0.0 server card, with no changelog found (6 of 15). 10+10+12+5+7+6 = 50.",
          "b": "Public OpenAPI 3.1 files for the whole API, the Read API, the Write API and webhooks, linked from the docs index. The combined file has 28 operations on 4 November 2026, 18 reads and 10 writes (25). A docs llms.txt and a Markdown copy of every docs page (10). All operations have a description, and the write descriptions state field rules, defaults and what the API cannot do. The docs say when to use an SDK and when to call REST (16 of 20). Request bodies have required fields and 40 enums in the combined file, but the `fields` object depends on each account's page types and no endpoint returns those types (9 of 15). 328 examples in the combined file and a page of status codes with causes and sample bodies (13 of 15). The version is in the `/v2` path. No API changelog was found (5 of 15)."
        },
        "scores": {
          "a": 50,
          "b": 78
        }
      },
      {
        "by": 28,
        "category": "ergonomics",
        "leads": "buttercms",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "45 MCP tools, more than 30 (5). We added 3 because keys without schema permission hide the schema tools (8 of 25). No pagination or filter parameters were found in the docs read (6 of 20). Error guidance covers 403 and permission errors only (8 of 20). Annotations weren't readable; entry history and trash give a way back, and the docs say to list and confirm ids before deletes (6 of 20). One JavaScript client and a CLI (8 of 15). 8+6+8+6+8 = 36.",
          "b": "Responses are sized with `page_size`, a `fields` selection, `exclude_body` on posts and `levels` for reference depth (20 of 25). Page and offset pagination with `meta.count`, filters on field values and `order` (20). Errors are documented with causes, but bodies come in three shapes (`detail`, a field map, `error`) with no stable codes, and a write answers 202 with `status: pending` and no identifier, so the result has to be read back (11 of 20). No idempotency keys. Page and post slugs are unique, which limits duplicates, and collection items have no such guard (4 of 20). Writes default to draft, but page creation needs every field key of the page type. Ten SDKs are listed and the docs say to call REST for writes (9 of 15)."
        },
        "scores": {
          "a": 36,
          "b": 64
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "bcms",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Plan and seat prices are public; no per-call prices (10). 14-day trial with no card on every plan (20). Signup with GitHub or Google in a browser, keys made in the dashboard (0). 0+10+20+0 = 30.",
          "b": "No x402, MPP or L402 (0). Four plans have public dollar prices, the Write API add-on's price is not published and Enterprise is through sales (10). The Free plan needs no card and covers the Read API. Writing needs a paid plan and the add-on, and we did not establish whether the 14-day trial includes it (10 of 20). A person signs up in a browser, and the write token needs a purchase or a request to support (0)."
        },
        "scores": {
          "a": 30,
          "b": 20
        }
      },
      {
        "by": 8,
        "category": "security",
        "leads": "bcms",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Keys are scoped per template and media and can be revoked and rotated (25), less 10 because the MCP key is accepted only as `?mcpKey=` in the URL and REST examples pass `apiKey` the same way (15 of 30). Scoped keys, schema tools gated by key, and scoped delete permission; no approval step (12 of 20). Entries hold text written by people and no prompt-injection guidance was found (3 of 15). Entry history and log history (2 days on Hobby, 30 on Pro) let the operator see what an agent changed (9 of 15). No security.txt, disclosure policy or certification was found (0). 15+12+3+9+0 = 39.",
          "b": "One read token and one write token per account, with no scopes, and the docs say rotation is done by contacting support (20 for plain revocable keys, less the fixed 10 because the read token is documented as an `auth_token` query parameter, 10 of 30). That token also returns drafts with `preview=1`. The read token is a read-only credential and writes default to draft. No approval step for API writes was found, and approval workflows are listed on Enterprise (10 of 20). The API returns stored content, and no guidance on treating it as untrusted input was found (3 of 15). Audit logs and access logs are listed as Enterprise functions, and versions record who saved them (6 of 15). A responsible-disclosure section in the docs gives security@buttercms.com and says reports get a prompt response, with no stated time, and the security page describes penetration tests. No security.txt, no bug bounty, and the certifications listed are those of the AWS and Heroku data centres (7 of 20)."
        },
        "scores": {
          "a": 39,
          "b": 31
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Becomes tech, LLC",
        "b": "ButterCMS LLC",
        "name": "Vendor"
      },
      {
        "a": "https://app.thebcms.com/api/v3/mcp",
        "b": "https://api.buttercms.com/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary service under ButterCMS's terms of service. The SDKs and starter projects on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "45",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-03-16",
        "b": "2025-09-04",
        "name": "Last release"
      },
      {
        "a": "2026-07-30",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-07-30",
        "b": "2022-08-15",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "396 npm/wk",
        "b": "6.9k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "ButterCMS scores 51.4 (D) on agent readiness against BCMS's 33.5 (F), and leads in 4 of 7 scored categories. BCMS leads on security \u0026 auth and payments \u0026 pricing.",
        "question": "Which is better for AI agents, BCMS or ButterCMS?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do BCMS and ButterCMS need an API key?"
      },
      {
        "answer": "Yes. BCMS has a hosted endpoint at https://app.thebcms.com/api/v3/mcp and ButterCMS at https://api.buttercms.com/v2.",
        "question": "Can an agent call BCMS and ButterCMS without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 39 against 31",
          "Payments \u0026 pricing, 30 against 20"
        ],
        "also": null,
        "goodFor": "Small sites and agencies that want a cheap hosted CMS an agent can edit.",
        "slug": "bcms",
        "watchFor": "The MCP key is accepted only as a URL query parameter"
      },
      {
        "aheadOn": [
          "Reliability, 82 against 15",
          "Schema \u0026 documentation, 78 against 50",
          "Agent ergonomics, 64 against 36"
        ],
        "also": null,
        "goodFor": "A team already on a paid ButterCMS plan that wants an agent to draft and publish pages, collection items and blog posts in small volumes.",
        "slug": "buttercms",
        "watchFor": "The Write API is a paid add-on on Advanced ($249 a month) and Professional ($399), capped at 2,000 and 5,000 write calls a month. Its price is not published"
      }
    ],
    "history": {
      "bcms": null,
      "buttercms": [
        {
          "causes": [
            "method"
          ],
          "date": "2026-11-04",
          "delta": -2,
          "from": 53.4,
          "fromGrade": "D",
          "to": 51.4,
          "toGrade": "D"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 53.3,
          "fromGrade": "D",
          "to": 53.4,
          "toGrade": "D"
        }
      ]
    },
    "job": {
      "capability": "cms.content",
      "name": "Content management"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-contentstack.json",
        "title": "BCMS vs Contentstack",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-contentstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-cosmic.json",
        "title": "BCMS vs Cosmic",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-cosmic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-datocms.json",
        "title": "BCMS vs DatoCMS",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-datocms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-directus.json",
        "title": "BCMS vs Directus",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-directus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-dotcms.json",
        "title": "BCMS vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-ghost.json",
        "title": "BCMS vs Ghost",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-ghost"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-hygraph.json",
        "title": "BCMS vs Hygraph",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-hygraph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-kontent-ai.json",
        "title": "BCMS vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-payload.json",
        "title": "BCMS vs Payload",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-payload"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-prismic.json",
        "title": "BCMS vs Prismic",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-prismic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-sanity.json",
        "title": "BCMS vs Sanity",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-sanity"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-storyblok.json",
        "title": "BCMS vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-strapi.json",
        "title": "BCMS vs Strapi",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-webflow.json",
        "title": "BCMS vs Webflow",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-webflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-wordpress.json",
        "title": "BCMS vs WordPress",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-wordpress"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-contentstack.json",
        "title": "ButterCMS vs Contentstack",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-contentstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-cosmic.json",
        "title": "ButterCMS vs Cosmic",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-cosmic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-datocms.json",
        "title": "ButterCMS vs DatoCMS",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-datocms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-directus.json",
        "title": "ButterCMS vs Directus",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-directus"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-dotcms.json",
        "title": "ButterCMS vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-ghost.json",
        "title": "ButterCMS vs Ghost",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-ghost"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-hygraph.json",
        "title": "ButterCMS vs Hygraph",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-hygraph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai.json",
        "title": "ButterCMS vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-payload.json",
        "title": "ButterCMS vs Payload",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-payload"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-prismic.json",
        "title": "ButterCMS vs Prismic",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-prismic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-sanity.json",
        "title": "ButterCMS vs Sanity",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-sanity"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-storyblok.json",
        "title": "ButterCMS vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-strapi.json",
        "title": "ButterCMS vs Strapi",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-webflow.json",
        "title": "ButterCMS vs Webflow",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-webflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-wordpress.json",
        "title": "ButterCMS vs WordPress",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-wordpress"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bcms": 15,
        "buttercms": 82,
        "by": 67,
        "edge": "buttercms",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bcms": 50,
        "buttercms": 78,
        "by": 28,
        "edge": "buttercms",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "bcms": 36,
        "buttercms": 64,
        "by": 28,
        "edge": "buttercms",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "bcms": 39,
        "buttercms": 31,
        "by": 8,
        "edge": "bcms",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "bcms": 30,
        "buttercms": 20,
        "by": 10,
        "edge": "bcms",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bcms": 16,
        "buttercms": 17,
        "by": 1,
        "edge": "buttercms",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "bcms": 52,
        "buttercms": 52,
        "by": 0,
        "edge": "",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "ButterCMS scores 51.4 (D) on agent readiness against BCMS's 33.5 (F), and leads in 4 of 7 scored categories. BCMS leads on security \u0026 auth and payments \u0026 pricing. Both do content management.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "bcms": "BCMS gives agents 45 MCP tools over templates, entries, statuses, history and media, with keys scoped per template and agent guidance in llms.txt, from $5 a month. The MCP key can only travel in the URL, and no status page, rate limits, changelog or security policy were found.",
      "buttercms": "The Read and Write APIs have a public OpenAPI 3.1 file, Markdown docs and a status page with no incident since October 2025. The Write API is a paid add-on from the $249 plan, capped at 2,000 or 5,000 calls a month. Writes answer 202 with no identifier, and no SDK has had a release since September 2025."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bcms-vs-buttercms",
    "json": "https://www.anchorterminal.com/compare/bcms-vs-buttercms.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bcms-vs-buttercms.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bcms-vs-buttercms.min.md"
  },
  "markdown": "ButterCMS scores 51.4 (D) on agent readiness against BCMS's 33.5 (F), and leads in 4 of 7 scored categories. BCMS leads on security \u0026 auth and payments \u0026 pricing. Both do content management.\n\n- BCMS: grade F, 33.5/100, rank #1383 of 1486. Markdown https://www.anchorterminal.com/tools/bcms.md · JSON https://www.anchorterminal.com/api/v1/tools/bcms.json\n- ButterCMS: grade D, 51.4/100, rank #1021 of 1486. Markdown https://www.anchorterminal.com/tools/buttercms.md · JSON https://www.anchorterminal.com/api/v1/tools/buttercms.json\n- Best headless CMS and website publishing for AI agents: https://www.anchorterminal.com/best/cms/index.md\n- All 136 cms comparisons: https://www.anchorterminal.com/compare/cms/index.md\n\n## Which one, for what\n\n### BCMS (F)\n\nGood for: Small sites and agencies that want a cheap hosted CMS an agent can edit.\n\nAhead on:\n- Security \u0026 auth, 39 against 31\n- Payments \u0026 pricing, 30 against 20\n\nWatch for: The MCP key is accepted only as a URL query parameter\n\n### ButterCMS (D)\n\nGood for: A team already on a paid ButterCMS plan that wants an agent to draft and publish pages, collection items and blog posts in small volumes.\n\nAhead on:\n- Reliability, 82 against 15\n- Schema \u0026 documentation, 78 against 50\n- Agent ergonomics, 64 against 36\n\nWatch for: The Write API is a paid add-on on Advanced ($249 a month) and Professional ($399), capped at 2,000 and 5,000 write calls a month. Its price is not published\n\n\n## Why the edge\n\n### Reliability: ButterCMS +67\n\n- BCMS (15): Graded on BCMS Cloud with the hosted lines. No status page was found (0) and no incident history could be read (5). The terms refer to rate limits, but no numbers were found in the docs (0). No 429 or retry guidance was found (0). No SLA; Enterprise is by quote (0). The MCP server card says version 3.0.0 and nothing is labelled beta (10). 0+5+0+0+0+10 = 15.\n- ButterCMS (82): Graded on the hosted Read and Write APIs. Public status page on Atlassian Statuspage with CDN, API and Login Page components and a history feed (20). The feed's newest incidents are two on 20 October 2025, so the 90 days to 4 November 2026 are clean (30). Limits are published as monthly quotas by plan, from 50,000 calls on Free to 1M on Professional, with 2,000 or 5,000 write calls on the add-on. No per-second limit is published (10 of 15, a partial kept from the 9 October check). Free and trial accounts get a 429 that the docs say may carry `Retry-After`, the docs show exponential backoff for 5xx errors, and the bulk-operations page says to check whether content exists before creating it to avoid duplicates during retries. There are no idempotency keys, so safe-retry guidance without keys (12). The pricing page lists an SLA on Enterprise with no SLA document or figure, which this run reads as 0. The v2 API is generally available (10).\n\n### Schema \u0026 documentation: ButterCMS +28\n\n- BCMS (50): The docs link an OpenAPI reference at app.thebcms.com/open-api-docs, but that host's robots.txt disallows every path, so it wasn't read. The MCP tool schemas need a session (10 of 25). llms.txt, docs llms.txt, llms-full.txt, Markdown pages and a public SKILL.md (10). llms.txt says when to use BCMS and when not to, and the MCP page gives each tool group's purpose (12 of 20). Input typing couldn't be checked (5 of 15). Curl and JavaScript examples, and troubleshooting for 403 and permission errors (7 of 15). API v3 paths and a 3.0.0 server card, with no changelog found (6 of 15). 10+10+12+5+7+6 = 50.\n- ButterCMS (78): Public OpenAPI 3.1 files for the whole API, the Read API, the Write API and webhooks, linked from the docs index. The combined file has 28 operations on 4 November 2026, 18 reads and 10 writes (25). A docs llms.txt and a Markdown copy of every docs page (10). All operations have a description, and the write descriptions state field rules, defaults and what the API cannot do. The docs say when to use an SDK and when to call REST (16 of 20). Request bodies have required fields and 40 enums in the combined file, but the `fields` object depends on each account's page types and no endpoint returns those types (9 of 15). 328 examples in the combined file and a page of status codes with causes and sample bodies (13 of 15). The version is in the `/v2` path. No API changelog was found (5 of 15).\n\n### Agent ergonomics: ButterCMS +28\n\n- BCMS (36): 45 MCP tools, more than 30 (5). We added 3 because keys without schema permission hide the schema tools (8 of 25). No pagination or filter parameters were found in the docs read (6 of 20). Error guidance covers 403 and permission errors only (8 of 20). Annotations weren't readable; entry history and trash give a way back, and the docs say to list and confirm ids before deletes (6 of 20). One JavaScript client and a CLI (8 of 15). 8+6+8+6+8 = 36.\n- ButterCMS (64): Responses are sized with `page_size`, a `fields` selection, `exclude_body` on posts and `levels` for reference depth (20 of 25). Page and offset pagination with `meta.count`, filters on field values and `order` (20). Errors are documented with causes, but bodies come in three shapes (`detail`, a field map, `error`) with no stable codes, and a write answers 202 with `status: pending` and no identifier, so the result has to be read back (11 of 20). No idempotency keys. Page and post slugs are unique, which limits duplicates, and collection items have no such guard (4 of 20). Writes default to draft, but page creation needs every field key of the page type. Ten SDKs are listed and the docs say to call REST for writes (9 of 15).\n\n### Payments \u0026 pricing: BCMS +10\n\n- BCMS (30): No x402, MPP or L402 (0). Plan and seat prices are public; no per-call prices (10). 14-day trial with no card on every plan (20). Signup with GitHub or Google in a browser, keys made in the dashboard (0). 0+10+20+0 = 30.\n- ButterCMS (20): No x402, MPP or L402 (0). Four plans have public dollar prices, the Write API add-on's price is not published and Enterprise is through sales (10). The Free plan needs no card and covers the Read API. Writing needs a paid plan and the add-on, and we did not establish whether the 14-day trial includes it (10 of 20). A person signs up in a browser, and the write token needs a purchase or a request to support (0).\n\n### Security \u0026 auth: BCMS +8\n\n- BCMS (39): Keys are scoped per template and media and can be revoked and rotated (25), less 10 because the MCP key is accepted only as `?mcpKey=` in the URL and REST examples pass `apiKey` the same way (15 of 30). Scoped keys, schema tools gated by key, and scoped delete permission; no approval step (12 of 20). Entries hold text written by people and no prompt-injection guidance was found (3 of 15). Entry history and log history (2 days on Hobby, 30 on Pro) let the operator see what an agent changed (9 of 15). No security.txt, disclosure policy or certification was found (0). 15+12+3+9+0 = 39.\n- ButterCMS (31): One read token and one write token per account, with no scopes, and the docs say rotation is done by contacting support (20 for plain revocable keys, less the fixed 10 because the read token is documented as an `auth_token` query parameter, 10 of 30). That token also returns drafts with `preview=1`. The read token is a read-only credential and writes default to draft. No approval step for API writes was found, and approval workflows are listed on Enterprise (10 of 20). The API returns stored content, and no guidance on treating it as untrusted input was found (3 of 15). Audit logs and access logs are listed as Enterprise functions, and versions record who saved them (6 of 15). A responsible-disclosure section in the docs gives security@buttercms.com and says reports get a prompt response, with no stated time, and the security page describes penetration tests. No security.txt, no bug bounty, and the certifications listed are those of the AWS and Heroku data centres (7 of 20).\n\n## Score by category\n\n| Category | Weight | BCMS | ButterCMS | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 15 | 82 | ButterCMS +67 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 50 | 78 | ButterCMS +28 |\n| Agent ergonomics | 13% (16.2 this run) | 36 | 64 | ButterCMS +28 |\n| Security \u0026 auth | 14% (17.5 this run) | 39 | 31 | BCMS +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 20 | BCMS +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 16 | 17 | ButterCMS +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 52 | 52 | even |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **33.5 · F** | **51.4 · D** | |\n\n## Facts side by side\n\n| Fact | BCMS | ButterCMS |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Becomes tech, LLC | ButterCMS LLC |\n| Hosted endpoint | `https://app.thebcms.com/api/v3/mcp` | `https://api.buttercms.com/v2` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | none | Proprietary service under ButterCMS's terms of service. The SDKs and starter projects on GitHub are MIT |\n| Tools exposed | 45 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-03-16 | 2025-09-04 |\n| Terms last updated | 2026-07-30 | no date given |\n| Privacy policy last updated | 2026-07-30 | 2022-08-15 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 396 npm/wk | 6.9k npm/wk |\n\n## How the scores have moved\n\n### BCMS\n\nNo score change since it was listed.\n\n### ButterCMS\n\n- -2.0 on 4 November 2026: checklist\n- +0.1 on 28 October 2026: new evidence\n\n## Verdicts\n\n**BCMS.** BCMS gives agents 45 MCP tools over templates, entries, statuses, history and media, with keys scoped per template and agent guidance in llms.txt, from $5 a month. The MCP key can only travel in the URL, and no status page, rate limits, changelog or security policy were found.\n\n**ButterCMS.** The Read and Write APIs have a public OpenAPI 3.1 file, Markdown docs and a status page with no incident since October 2025. The Write API is a paid add-on from the $249 plan, capped at 2,000 or 5,000 calls a month. Writes answer 202 with no identifier, and no SDK has had a release since September 2025.\n\n## Before you call either\n\n### BCMS\n\n1. Keep the MCP URL out of logs and shared config, since the key is inside it\n2. Call get-all-templates first and mutate only once you have template and entry ids\n3. Ask for a key scoped to the templates the task needs, without schema permission unless it changes the model\n4. List and confirm entry ids with the user before calling delete-entries\n5. Use the bcms-content CLI for scripted runs that need JSON output and exit codes\n\n### ButterCMS\n\n1. End every path with a slash. A missing slash returns a 301, and the vendor counts the redirect and the retry as two API calls\n2. Send the write token only as `Authorization: Token \u003ctoken\u003e`. The `auth_token` query parameter works for reads only\n3. On page creation send every field key of the page type, with empty strings for fields left blank\n4. A 202 means queued, not saved. Read the entry back with `preview=1` to confirm, and check a slug exists before retrying a create\n5. Call the REST API directly for writes. The JavaScript SDK 3.0.3 has list, retrieve and search methods only\n\n## Questions\n\n### Which is better for AI agents, BCMS or ButterCMS?\n\nButterCMS scores 51.4 (D) on agent readiness against BCMS's 33.5 (F), and leads in 4 of 7 scored categories. BCMS leads on security \u0026 auth and payments \u0026 pricing.\n\n### Do BCMS and ButterCMS need an API key?\n\nBoth need an API key.\n\n### Can an agent call BCMS and ButterCMS without installing anything?\n\nYes. BCMS has a hosted endpoint at https://app.thebcms.com/api/v3/mcp and ButterCMS at https://api.buttercms.com/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bcms-vs-buttercms.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bcms-vs-buttercms.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bcms\", \"b\": \"buttercms\"}`. From a terminal: `anchor compare bcms buttercms`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bcms.json and https://www.anchorterminal.com/api/v1/tools/buttercms.json\n\n## Other comparisons with BCMS or ButterCMS\n\n- [BCMS vs Contentstack](https://www.anchorterminal.com/compare/bcms-vs-contentstack.md)\n- [BCMS vs Cosmic](https://www.anchorterminal.com/compare/bcms-vs-cosmic.md)\n- [BCMS vs DatoCMS](https://www.anchorterminal.com/compare/bcms-vs-datocms.md)\n- [BCMS vs Directus](https://www.anchorterminal.com/compare/bcms-vs-directus.md)\n- [BCMS vs dotCMS](https://www.anchorterminal.com/compare/bcms-vs-dotcms.md)\n- [BCMS vs Ghost](https://www.anchorterminal.com/compare/bcms-vs-ghost.md)\n- [BCMS vs Hygraph](https://www.anchorterminal.com/compare/bcms-vs-hygraph.md)\n- [BCMS vs Kontent.ai](https://www.anchorterminal.com/compare/bcms-vs-kontent-ai.md)\n- [BCMS vs Payload](https://www.anchorterminal.com/compare/bcms-vs-payload.md)\n- [BCMS vs Prismic](https://www.anchorterminal.com/compare/bcms-vs-prismic.md)\n- [BCMS vs Sanity](https://www.anchorterminal.com/compare/bcms-vs-sanity.md)\n- [BCMS vs Storyblok](https://www.anchorterminal.com/compare/bcms-vs-storyblok.md)\n- [BCMS vs Strapi](https://www.anchorterminal.com/compare/bcms-vs-strapi.md)\n- [BCMS vs Webflow](https://www.anchorterminal.com/compare/bcms-vs-webflow.md)\n- [BCMS vs WordPress](https://www.anchorterminal.com/compare/bcms-vs-wordpress.md)\n- [ButterCMS vs Contentstack](https://www.anchorterminal.com/compare/buttercms-vs-contentstack.md)\n- [ButterCMS vs Cosmic](https://www.anchorterminal.com/compare/buttercms-vs-cosmic.md)\n- [ButterCMS vs DatoCMS](https://www.anchorterminal.com/compare/buttercms-vs-datocms.md)\n- [ButterCMS vs Directus](https://www.anchorterminal.com/compare/buttercms-vs-directus.md)\n- [ButterCMS vs dotCMS](https://www.anchorterminal.com/compare/buttercms-vs-dotcms.md)\n- [ButterCMS vs Ghost](https://www.anchorterminal.com/compare/buttercms-vs-ghost.md)\n- [ButterCMS vs Hygraph](https://www.anchorterminal.com/compare/buttercms-vs-hygraph.md)\n- [ButterCMS vs Kontent.ai](https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai.md)\n- [ButterCMS vs Payload](https://www.anchorterminal.com/compare/buttercms-vs-payload.md)\n- [ButterCMS vs Prismic](https://www.anchorterminal.com/compare/buttercms-vs-prismic.md)\n- [ButterCMS vs Sanity](https://www.anchorterminal.com/compare/buttercms-vs-sanity.md)\n- [ButterCMS vs Storyblok](https://www.anchorterminal.com/compare/buttercms-vs-storyblok.md)\n- [ButterCMS vs Strapi](https://www.anchorterminal.com/compare/buttercms-vs-strapi.md)\n- [ButterCMS vs Webflow](https://www.anchorterminal.com/compare/buttercms-vs-webflow.md)\n- [ButterCMS vs WordPress](https://www.anchorterminal.com/compare/buttercms-vs-wordpress.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-07",
    "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": "BCMS vs ButterCMS",
        "url": ""
      }
    ],
    "description": "ButterCMS scores 51.4 (D) to BCMS's 33.5 (F) for content management. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "BCMS F 33.5",
      "ButterCMS D 51.4",
      "scores"
    ],
    "h1": "BCMS vs ButterCMS",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bcms-vs-buttercms",
    "published": "2026-10-01",
    "section": "tools",
    "title": "BCMS vs ButterCMS for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/bcms-vs-buttercms"
  },
  "tokens": {
    "markdown": 4000,
    "slim": 2180
  },
  "version": 1
}
