Head to head · Cms content · October 2026 research run
Storyblok vs Strapi
Storyblok scores 67.7 (B) on agent readiness against Strapi's 65.7 (B), and leads in 3 of 7 scored categories. Strapi leads on schema & documentation, payments & pricing and maintenance & community. Both do cms content.
Which one, for what
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
- Agent ergonomics, 78 against 65
- Security & auth, 73 against 66
- Transparency & trust, 80 against 72
Also in its favour
- A hosted endpoint, with nothing to install
- Free to start without a card
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)
Strapi B
Good for Teams that want to own their CMS and let an agent draft, localise and publish entries under a narrow token.
Ahead on
- Schema & documentation, 80 against 68
- Payments & pricing, 50 against 35
- Maintenance & community, 87 against 80
Also in its favour
- Open source
Watch for
Content History keeps no version for REST, GraphQL or MCP writes, and exists only on Growth and Enterprise plans
Score by category
| Category | Weight this run | Storyblok | Strapi | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 79 | 82 | Strapi +3 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 68 | 80 | Strapi +12 |
| Agent ergonomics | 13%16.2 | 78 | 65 | Storyblok +13 |
| Security & auth | 14%17.5 | 73 | 66 | Storyblok +7 |
| Payments & pricing | 10%12.5 | 35 | 50 | Strapi +15 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 80 | 87 | Strapi +7 |
| Transparency & trust | 7%8.8 | 80 | 72 | Storyblok +8 |
| Negative events | ≤15 | -3 | -6 | |
| Total | 67.7 · B | 65.7 · B |
Facts side by side
| Fact | Storyblok | Strapi |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Storyblok GmbH | Strapi, Inc. |
| Hosted endpoint | https://mapi.storyblok.com/v1 | no (local only) |
| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |
| Auth | OAuth or key | API key |
| Pricing | Freemium | Freemium |
| x402 | no | no |
| Licence | Proprietary service under Storyblok's terms. The SDKs, API clients and CLI in storyblok/monoblok are MIT | MIT for the Community Edition. Code under ee/ directories is under Strapi's Enterprise Edition licence, and Strapi Cloud is a paid service under its own terms |
| Tools exposed | 7 | none |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-10-02 | 2026-10-07 |
| Terms last updated | couldn't be read | 2026-10-07 |
| Privacy policy last updated | 2025-10-06 | 2023-03-01 |
| Customer content may train models | couldn't be read | not found in the text |
| Terms restrict automated access | couldn't be read | yes |
| Terms restrict benchmarking | couldn't be read | yes |
| Terms or service can change without notice | couldn't be read | yes |
| Arbitration or class-action waiver | couldn't be read | yes |
| Popularity | 68 stars, 433k npm/wk | 73k stars, 259k npm/wk |
Verdicts
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, no idempotency keys and no monitor on the public status page, and publishing is a GET request.
Strapi
The built-in MCP server shows an agent only the tools, fields and locales its Admin token permits, and content tools create drafts by default. Rollback is the limit. Content History is a paid feature and records admin panel edits only, so API and MCP writes leave no version to restore, and the MCP server can't upload files.
Before you call either
Storyblok
- 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
- Create stories without
publishto keep them as drafts, then call the publish endpoint. It is a GET, so never prefetch or blindly retry it - Write translations as
field__i18n__<code>keys inside the same content object, and set the component field to translatable first - Upload an asset in three steps (signed response, POST to S3, finish upload). Through MCP the S3 step needs shell access for curl
- 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
Strapi
- Pass
status=drafton every REST POST and PUT. Without it the Content API publishes the entry at once - Use an Admin token for
/mcpand admin routes and an API token for/api. Each kind is rejected on the other's routes - Upload files with multipart POST to
/api/uploadfirst, then reference the returned file id in the entry. MCP tools can't upload - Call
media_delete_assetsandmedia_delete_folderwithoutdryRunfirst to preview, and take asset ids only frommedia_list_assets - Keep your own copy of an entry before updating it. API and MCP writes create no Content History version
Questions
Which is better for AI agents, Storyblok or Strapi?
Storyblok scores 67.7 (B) on agent readiness against Strapi's 65.7 (B), and leads in 3 of 7 scored categories. Strapi leads on schema & documentation, payments & pricing and maintenance & community.
Do Storyblok and Strapi need an API key?
Storyblok takes an API key or an OAuth sign-in. Strapi needs an API key.
Can an agent call Storyblok and Strapi without installing anything?
Storyblok has a hosted endpoint at https://mapi.storyblok.com/v1. No hosted endpoint is listed for Strapi.
Are Storyblok and Strapi open source?
No open-source release is listed for Storyblok. Strapi is open source (MIT for the Community Edition. Code under ee/ directories is under Strapi's Enterprise Edition licence, and Strapi Cloud is a paid service under its own terms).
Other comparisons with Storyblok or Strapi
Machine-readable
- This page as Markdown
/compare/storyblok-vs-strapi.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/storyblok.json·/api/v1/tools/strapi.json - From a terminal
anchor compare storyblok strapi(the CLI) - Over MCP
compare_tools {"a": "storyblok", "b": "strapi"}at/mcp, no key