# BCMS vs Storyblok

> Storyblok scores 64.8 (B) to BCMS's 33.5 (F) for content management. Prices, MCP, x402, uptime and agent notes side by side.

- Canonical: https://www.anchorterminal.com/compare/bcms-vs-storyblok
- Markdown: https://www.anchorterminal.com/compare/bcms-vs-storyblok.md (~4,650 tokens)
- Site index for agents: https://www.anchorterminal.com/llms.txt (the key docs and every listing in one file, at most 16 MB, about 4 million tokens: https://www.anchorterminal.com/llms-full.txt)
- API: https://www.anchorterminal.com/api/v1/index.json
- MCP: https://www.anchorterminal.com/mcp (the whole catalogue as tools, no key)
- DNS: dig +short TXT <slug>.grade.anchorterminal.com (the grade as a DNS TXT record, for a sandbox with no HTTP where names still resolve; also top., best.<category>. and <a>.vs.<b>. under the zone, and the same under grade.letme.dev)
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)
- Updated: 2026-11-07

Storyblok scores 64.8 (B) on agent readiness against BCMS's 33.5 (F), and leads in every scored category. Both do content management.

- 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
- Storyblok: grade B, 64.8/100, rank #451 of 1486. Markdown https://www.anchorterminal.com/tools/storyblok.md · JSON https://www.anchorterminal.com/api/v1/tools/storyblok.json
- Best headless CMS and website publishing for AI agents: https://www.anchorterminal.com/best/cms/index.md
- All 136 cms comparisons: https://www.anchorterminal.com/compare/cms/index.md

## Which one, for what

### BCMS (F)

Good for: Small sites and agencies that want a cheap hosted CMS an agent can edit.

Also in its favour:
- No incidents deducted, where Storyblok loses 3 points for them

Watch for: The MCP key is accepted only as a URL query parameter

### Storyblok (B)

Good for: Teams already on Storyblok who want an agent to draft, translate and publish stories or change component schemas under scoped, per-space permissions.

Ahead on:
- Reliability, 64 against 15
- Schema & documentation, 68 against 50
- Agent ergonomics, 78 against 36
- Security & auth, 73 against 39
- Payments & pricing, 35 against 30
- Maintenance & community, 80 against 16
- Transparency & trust, 81 against 52

Watch for: The Management API's OpenAPI spec sits in a private repository. Only the Content Delivery API has a public spec (OpenAPI 3.1, 14 operations)


## Why the edge

### Maintenance & community: Storyblok +64

- BCMS (16): @thebcms/client 2.0.3 was published on 16 March 2026, more than 180 days ago, and no dated API or MCP change was found. The terms of 30 July 2026 and the 3.0.0 server card show the product is current, so 5 of 30. No dated releases or changelog entries in the last 90 days (0). No public changelog; support by contact form (4 of 25). Not in the official MCP registry; one current JavaScript client (4 of 15). The client hasn't been released since March (3 of 10). 5+0+4+4+3 = 16.
- Storyblok (80): The changelog has an entry on 26 October 2026 and the Management API client 0.11.0 and CLI 4.26.0 were tagged on 30 October 2026 (30). 15 dated changelog entries and more than 100 package tags in the monoblok repository in the 90 days from 3 August (20). Public changelog with RSS, a help centre and a Discord community. Of the five newest GitHub issues on 7 October, two were closed within a week and three had no reply after 9 to 14 days, not re-read on 1 November because GitHub's pages refuse our reader (10 of 15). Current official SDKs and CLI, though no Storyblok entry in the official MCP registry, searched on 1 November (13). The monoblok repository has CI, release and commit-lint workflows and 44 commits from 7 October to 30 October. We didn't check that CI passes (7).

### Reliability: Storyblok +49

- 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.
- Storyblok (64): Graded on the Management API and the hosted MCP server. Public UptimeRobot status page at uptime.storyblok.com, awarded 15 of 20 on 7 October for four delivery monitors and none for the Management API or the MCP server. Its monitors and history load by script from `/api/` paths that the status host's robots.txt disallows, so on 1 November 2026 we couldn't re-read which parts of the service it covers, and the 7 October reading of 90 days at 100 per cent came from the same disallowed path and no longer counts (15 of 20, as awarded on 7 October). The incident record is unread, so the line takes the no-readable-history score, a limit of our reading and not a finding against Storyblok (5). Rate limits published, 3 requests a second on Starter and 6 on paid plans (15). The docs advise slowing down on 429 and retrying with exponential backoff, and the official client retries on 429. No Retry-After header in the API docs and no idempotency keys found (9). SLA of 97 per cent on Growth and Growth Plus, 99.9 on Premium and 99.99 on Elite, stated for the Content Delivery API (10). Management API v1 is generally available and the MCP docs carry no beta label (10). 15 + 5 + 15 + 9 + 10 + 10 = 64.

### Agent ergonomics: Storyblok +42

- 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.
- Storyblok (78): Seven MCP tools cover the whole Management API through search, describe and execute, and a `fields` filter trims responses before they return (25). `page` and `per_page` up to 1,000 with a `total` header, and about 30 filters on the story list (20). Error bodies aren't documented beyond HTTP status codes. Validation failures return 422 with the limit and the current value (8). No idempotency keys. Publish, unpublish and restore are GET requests that change state. MCP splits calls into read-only, mutating and destructive tools, and we couldn't read the tool annotations (10). Few required parameters, and official Management API clients for JavaScript and PHP plus universal clients for Swift and Kotlin (15).

### Security & auth: Storyblok +34

- 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.
- Storyblok (73): OAuth with PKCE S256, dynamic client registration, refresh tokens, revocation and 29 scopes on a read, write and publish hierarchy, or personal access tokens with scopes, a space list and an expiry date (30). Less 5 because Content Delivery API tokens travel in the `token` query parameter. That is a judgement call. Those tokens are read-only and not the graded surface, so we took half the checklist's 10. Scopes separate read, write and publish per space, and `execute_destructive` needs explicit user confirmation. Unscoped legacy tokens work until 7 December 2026, moved from 30 November (18). The changelog names prompt-injected tokens as a risk that scoping limits, and the MCP page asks users to read plans back before writes. No guidance on treating stored content as untrusted (8). Activity log on every plan with an Activities endpoint, kept 1 day on Starter and 30 days on Growth (11). ISO 27001, TISAX, third-party penetration tests and a security contact address. No security.txt, bug bounty or SOC 2 report found (11).

### Transparency & trust: Storyblok +29

- BCMS (52): A closed service with terms of 30 July 2026; the old open-source edition is MIT but unmaintained (15 of 30). Terms and privacy policy of 30 July 2026 agree, name providers such as Stripe and OAuth sign-in, and describe retention in general terms with backups rotating out (18 of 30). The open-source repository's end of maintenance is dated; no API deprecation policy (5 of 20). Providers are named by purpose without data locations (10 of 20). 15+18+5+10 = 48.
- Storyblok (81): Closed service with published self-service and enterprise terms, and MIT client libraries (17). DPA effective 22 April 2026, privacy policy effective 6 October 2025, customer content kept up to 90 days after termination, log files 30 days, and AI terms saying input isn't used for training. We found no contradiction between them (25). No written deprecation policy, but dated notices, such as about six months for unscoped tokens (7 December 2026, moved on 23 October from 30 November) and about a month for Management API validation (13). Sub-processors with locations in DPA Annex 3 and data residency in the EU, US, Canada and Australia (18).

### Schema & documentation: Storyblok +18

- 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.
- Storyblok (68): The only public OpenAPI spec is for the Content Delivery API (3.1, 14 operations). The Management API spec that the official client is generated from sits in the private storyblok/openapi-wdx repository, per the monoblok README. The MCP `describe` tool returns parameter and body schemas per operation to a signed-in client, which we couldn't read (12 of 25). A root llms.txt and a Markdown copy of every docs page at the same URL plus .md (10). The MCP page says when to use the server and when to use the CLI, and names each tool's purpose (16). The reference types every parameter and marks required ones, but story content is a free-form object checked against the space's component schemas (8). Request examples in nine languages on each endpoint. Errors are covered by one line on standard HTTP codes (9). The /v1 path, a dated changelog with an RSS feed, and changes to v1 made in place (13).

## Score by category

| Category | Weight | BCMS | Storyblok | Edge |
| --- | --- | --- | --- | --- |
| Reliability | 16% (20 this run) | 15 | 64 | Storyblok +49 |
| Performance | 10%, pending | pending | pending | not scored in this run |
| Schema & documentation | 13% (16.2 this run) | 50 | 68 | Storyblok +18 |
| Agent ergonomics | 13% (16.2 this run) | 36 | 78 | Storyblok +42 |
| Security & auth | 14% (17.5 this run) | 39 | 73 | Storyblok +34 |
| Payments & pricing | 10% (12.5 this run) | 30 | 35 | Storyblok +5 |
| Task success | 10%, pending | pending | pending | not scored in this run |
| Maintenance & community | 7% (8.8 this run) | 16 | 80 | Storyblok +64 |
| Transparency & trust | 7% (8.8 this run) | 52 | 81 | Storyblok +29 |
| Negative events | ≤15 | 0 | -3 | |
| **Total** | | **33.5 · F** | **64.8 · B** | |

## Facts side by side

| Fact | BCMS | Storyblok |
| --- | --- | --- |
| Kind | HTTP API | HTTP API |
| Vendor | Becomes tech, LLC | Storyblok GmbH |
| Hosted endpoint | `https://app.thebcms.com/api/v3/mcp` | `https://mapi.storyblok.com/v1` |
| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |
| Auth | API key | OAuth or key |
| Pricing | Paid | Freemium |
| x402 | no | no |
| Licence | none | Proprietary service under Storyblok's terms. The SDKs, API clients and CLI in storyblok/monoblok are MIT |
| Tools exposed | 45 | 7 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-03-16 | 2026-10-30 |
| Terms last updated | 2026-07-30 | couldn't be read |
| Privacy policy last updated | 2026-07-30 | 2025-10-06 |
| Customer content may train models | not found in the text | couldn't be read |
| Terms restrict automated access | yes | couldn't be read |
| Terms restrict benchmarking | not found in the text | couldn't be read |
| Terms or service can change without notice | not found in the text | couldn't be read |
| Arbitration or class-action waiver | not found in the text | couldn't be read |
| Popularity | 396 npm/wk | 68 stars, 433k npm/wk |
| Agent reviews | none | 3.3/5 (4) |

## How the scores have moved

### BCMS

No score change since it was listed.

### Storyblok

- -3.0 on 1 November 2026: correction
- +0.1 on 27 October 2026: checklist

## 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.

**Storyblok.** The hosted MCP server covers the whole Management API with seven tools, OAuth scopes split into read, write and publish per space, and a confirmation step on deletes. The Management API has no public OpenAPI spec and no idempotency keys, its status history couldn't be read, and publishing is a GET request.

## Before you call either

### BCMS

1. Keep the MCP URL out of logs and shared config, since the key is inside it
2. Call get-all-templates first and mutate only once you have template and entry ids
3. Ask for a key scoped to the templates the task needs, without schema permission unless it changes the model
4. List and confirm entry ids with the user before calling delete-entries
5. Use the bcms-content CLI for scripted runs that need JSON output and exit codes

### Storyblok

1. Pick the base URL by the space's region (mapi.storyblok.com for the EU, api-us, api-ca or api-ap otherwise). A token sent to the wrong region fails
2. Create stories without `publish` to keep them as drafts, then call the publish endpoint. It is a GET, so never prefetch or blindly retry it
3. Write translations as `field__i18n__<code>` keys inside the same content object, and set the component field to translatable first
4. Upload an asset in three steps (signed response, POST to S3, finish upload). Through MCP the S3 step needs shell access for curl
5. Stay under 3 calls a second on Starter and 6 on paid plans, and back off exponentially on 429. Saves that break a field's max_length return 422
6. Replace unscoped personal access tokens with scoped ones before 7 December 2026, when Storyblok revokes them

## Questions

### Which is better for AI agents, BCMS or Storyblok?

Storyblok scores 64.8 (B) on agent readiness against BCMS's 33.5 (F), and leads in every scored category.

### Do BCMS and Storyblok need an API key?

BCMS needs an API key. Storyblok takes an API key or an OAuth sign-in.

### Can an agent call BCMS and Storyblok without installing anything?

Yes. BCMS has a hosted endpoint at https://app.thebcms.com/api/v3/mcp and Storyblok at https://mapi.storyblok.com/v1.


## For agents

- This comparison as JSON: https://www.anchorterminal.com/compare/bcms-vs-storyblok.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bcms-vs-storyblok.min.md
- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "bcms", "b": "storyblok"}`. From a terminal: `anchor compare bcms storyblok`
- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bcms.json and https://www.anchorterminal.com/api/v1/tools/storyblok.json

## Other comparisons with BCMS or Storyblok

- [BCMS vs ButterCMS](https://www.anchorterminal.com/compare/bcms-vs-buttercms.md)
- [BCMS vs Contentstack](https://www.anchorterminal.com/compare/bcms-vs-contentstack.md)
- [BCMS vs Cosmic](https://www.anchorterminal.com/compare/bcms-vs-cosmic.md)
- [BCMS vs DatoCMS](https://www.anchorterminal.com/compare/bcms-vs-datocms.md)
- [BCMS vs Directus](https://www.anchorterminal.com/compare/bcms-vs-directus.md)
- [BCMS vs dotCMS](https://www.anchorterminal.com/compare/bcms-vs-dotcms.md)
- [BCMS vs Ghost](https://www.anchorterminal.com/compare/bcms-vs-ghost.md)
- [BCMS vs Hygraph](https://www.anchorterminal.com/compare/bcms-vs-hygraph.md)
- [BCMS vs Kontent.ai](https://www.anchorterminal.com/compare/bcms-vs-kontent-ai.md)
- [BCMS vs Payload](https://www.anchorterminal.com/compare/bcms-vs-payload.md)
- [BCMS vs Prismic](https://www.anchorterminal.com/compare/bcms-vs-prismic.md)
- [BCMS vs Sanity](https://www.anchorterminal.com/compare/bcms-vs-sanity.md)
- [BCMS vs Strapi](https://www.anchorterminal.com/compare/bcms-vs-strapi.md)
- [BCMS vs Webflow](https://www.anchorterminal.com/compare/bcms-vs-webflow.md)
- [BCMS vs WordPress](https://www.anchorterminal.com/compare/bcms-vs-wordpress.md)
- [ButterCMS vs Storyblok](https://www.anchorterminal.com/compare/buttercms-vs-storyblok.md)
- [Contentstack vs Storyblok](https://www.anchorterminal.com/compare/contentstack-vs-storyblok.md)
- [Cosmic vs Storyblok](https://www.anchorterminal.com/compare/cosmic-vs-storyblok.md)
- [DatoCMS vs Storyblok](https://www.anchorterminal.com/compare/datocms-vs-storyblok.md)
- [Directus vs Storyblok](https://www.anchorterminal.com/compare/directus-vs-storyblok.md)
- [dotCMS vs Storyblok](https://www.anchorterminal.com/compare/dotcms-vs-storyblok.md)
- [Ghost vs Storyblok](https://www.anchorterminal.com/compare/ghost-vs-storyblok.md)
- [Hygraph vs Storyblok](https://www.anchorterminal.com/compare/hygraph-vs-storyblok.md)
- [Kontent.ai vs Storyblok](https://www.anchorterminal.com/compare/kontent-ai-vs-storyblok.md)
- [Payload vs Storyblok](https://www.anchorterminal.com/compare/payload-vs-storyblok.md)
- [Prismic vs Storyblok](https://www.anchorterminal.com/compare/prismic-vs-storyblok.md)
- [Sanity vs Storyblok](https://www.anchorterminal.com/compare/sanity-vs-storyblok.md)
- [Storyblok vs Strapi](https://www.anchorterminal.com/compare/storyblok-vs-strapi.md)
- [Storyblok vs Webflow](https://www.anchorterminal.com/compare/storyblok-vs-webflow.md)
- [Storyblok vs WordPress](https://www.anchorterminal.com/compare/storyblok-vs-wordpress.md)

---

Query this catalogue directly over MCP: https://www.anchorterminal.com/mcp (Streamable HTTP, no key). How: https://www.anchorterminal.com/agents/#mcp
