{
  "data": {
    "a": {
      "slug": "storyblok",
      "name": "Storyblok",
      "vendor": "Storyblok GmbH",
      "vendorUrl": "https://www.storyblok.com",
      "kind": "http-api",
      "category": "cms",
      "summary": "Storyblok is a hosted headless CMS with a visual editor. Agents write to it through the Management API (stories, components, assets, releases, workflows) or the official hosted MCP server, which wraps that API in seven tools.",
      "url": "https://www.anchorterminal.com/tools/storyblok",
      "markdownUrl": "https://www.anchorterminal.com/tools/storyblok.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/storyblok.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/storyblok.json",
      "repo": "https://github.com/storyblok/monoblok",
      "license": "Proprietary service under Storyblok's terms. The SDKs, API clients and CLI in storyblok/monoblok are MIT",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mapi.storyblok.com/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@storyblok/management-api-client"
        },
        {
          "registry": "npm",
          "name": "storyblok-js-client"
        },
        {
          "registry": "npm",
          "name": "storyblok"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. The Management API takes a personal access token or an OAuth token in the request header. A person creates the token in account settings and picks scopes (16 groups such as stories, assets and components, on a read, write and publish hierarchy), the spaces it covers and an expiry date. The MCP server uses browser OAuth with PKCE and dynamic client registration, where the person picks permissions and spaces on a consent screen, or the same token as a Bearer header. No app review or sales approval is needed. The changelog describes OAuth scoped grants for custom integrations as a Premium and Enterprise feature. Content Delivery API tokens are read-only and travel in the `token` query parameter.",
      "pricing": "freemium",
      "pricingNotes": "Starter is free with no card and includes the Management API, 100,000 API requests a month, 1 seat and 2 locales. Growth is $99 a month and Growth Plus $349 a month billed monthly. Premium and Elite are sold through sales. New spaces start with a 45-day Growth Plus trial. On Growth, extra API requests cost $10 per million and extra seats $15 each (https://www.storyblok.com/pricing, checked 2026-10-07).",
      "priceSummary": "$99 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Management API docs, the MCP server docs or the pricing page (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": 7,
      "popularity": {
        "githubStars": 68,
        "npmWeekly": 432535,
        "pypiWeekly": null,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://www.storyblok.com/docs/api/management",
      "llmsTxt": "https://www.storyblok.com/llms.txt",
      "openapi": "https://www.storyblok.com/docs/openapi-spec/cdn-v2.openapi.yaml",
      "capabilities": [
        "cms.content",
        "cms.publish",
        "cms.assets",
        "cms.localisation",
        "cms.schema"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "oauth",
        "closed-source",
        "no-card",
        "free-tier",
        "llms-txt",
        "webhooks",
        "typescript",
        "php",
        "status-page",
        "iso27001"
      ],
      "lastRelease": "2026-10-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.7,
        "grade": "B",
        "agentReady": false,
        "rank": 188,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 80,
          "payments": 35,
          "reliability": 79,
          "schema": 68,
          "security": 73,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-07"
        },
        "negative": -3,
        "negativeNotes": [
          "8 April 2026. Storyblok fixed a flaw where the Webhook and Webhook Logs endpoints of the Management API didn't enforce the Admin and Owner restriction the UI applies, so Editor and Restricted roles could manage webhooks by API. It was fixed and disclosed in the changelog, so the deduction is small (https://www.storyblok.com/cl/2026-april-security-fix-webhook-api-now-aligned-with-ui-access-controls)."
        ],
        "verdict": "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.",
        "bestFor": "Teams already on Storyblok who want an agent to draft, translate and publish stories or change component schemas under scoped, per-space permissions.",
        "strengths": [
          "Official hosted MCP server at mcp.storyblok.com/mcp with seven tools (search, describe, three execute tools, two for asset upload) and a `fields` filter that trims responses",
          "OAuth with PKCE, dynamic client registration and 29 scopes on a read, write and publish hierarchy, chosen per space on a consent screen",
          "Personal access tokens take scopes, a space list and an expiry date since 27 May 2026, and unscoped tokens are revoked on 30 November 2026",
          "Free Starter plan with no card, 100,000 API requests a month and Management API access on every plan",
          "Every docs page is served as Markdown by adding .md, with request examples in nine languages"
        ],
        "weaknesses": [
          "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)",
          "Management API limit is 3 requests a second on Starter and 6 on paid plans, with no idempotency keys in the reviewed documentation",
          "The status page monitors four delivery services and has no Management API or MCP monitor",
          "On 8 April 2026 Storyblok fixed webhook endpoints that had let Editor and Restricted roles manage webhooks through the API",
          "Version history is kept for 1 day on Starter and 30 days on Growth, so a rollback depends on the plan"
        ],
        "agentNotes": [
          "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 `publish` to 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__\u003ccode\u003e` 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"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.7
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 80,
          "payments": 35,
          "reliability": 79,
          "schema": 68,
          "security": 73,
          "transparency": 73
        },
        "provenanceScore": 87
      },
      "connect": {
        "install": "npm install @storyblok/management-api-client",
        "http": "curl \"https://mapi.storyblok.com/v1/spaces/$SPACE_ID/stories/\" \\\n  -H \"Authorization: $STORYBLOK_PERSONAL_ACCESS_TOKEN\"",
        "claudeCode": "claude mcp add --transport http Storyblok https://mcp.storyblok.com/mcp",
        "config": {
          "mcpServers": {
            "Storyblok": {
              "type": "http",
              "url": "https://mcp.storyblok.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cms.content",
        "tool": "https://letme.dev/storyblok"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Growth",
          "unit": "month",
          "usd": 99,
          "note": "billed monthly, $90.75 billed yearly, 5 seats and 1M API requests included"
        },
        {
          "item": "Growth Plus",
          "unit": "month",
          "usd": 349,
          "note": "billed monthly, $319.91 billed yearly, 15 seats and 4M API requests included"
        },
        {
          "item": "Additional seat",
          "unit": "seat-month",
          "usd": 15,
          "note": "Starter (up to 2 seats) and Growth (up to 10)"
        },
        {
          "item": "Additional API requests on Growth",
          "unit": "1k-requests",
          "usd": 0.01,
          "note": "sold as $10 per 1M, up to 5M a month"
        }
      ],
      "provenance": {
        "legalEntity": "Storyblok GmbH",
        "domain": "storyblok.com",
        "domainRegistered": "2015-08-15",
        "endpointOnVendorDomain": true,
        "terms": "https://www.storyblok.com/legal/terms",
        "privacy": "https://www.storyblok.com/legal/privacy-policy",
        "statusPage": "https://uptime.storyblok.com",
        "changelog": "https://www.storyblok.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-07",
        "notes": [
          "The legal notice names Storyblok GmbH, Peter-Behrens-Platz 2, 4020 Linz, Austria, company register number FN 479743 f, Regional Court Linz.",
          "The Management API answers on storyblok.com subdomains and the MCP server at mcp.storyblok.com. Spaces in China use app.storyblokchina.cn.",
          "security.txt returns 404 on www.storyblok.com, storyblok.com and mapi.storyblok.com. The privacy policy gives security@storyblok.com for security matters.",
          "The terms page was last updated on 2 October 2026 and links separate self-service and enterprise terms. The self-service terms are governed by Austrian law.",
          "RDAP for storyblok.com gives a registration date of 2015-08-15.",
          "The status page runs on UptimeRobot with four monitors (Content Delivery API v1 and v2, GraphQL API, Image Service)."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/storyblok.json",
      "live": {
        "slug": "storyblok",
        "probe": {
          "target": "https://mapi.storyblok.com/v1",
          "method": "get",
          "lastAt": "2026-10-08T19:08:59.399751867Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 103,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 55,
          "p95ms24h": 99,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 42
            }
          ]
        },
        "vendorStatus": {
          "page": "https://uptime.storyblok.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:51:13.801607821Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "storyblok/monoblok",
            "version": "storyblok@4.23.4",
            "released": "2026-10-02",
            "seenAt": "2026-10-08T16:30:30.68015309Z"
          },
          {
            "registry": "npm",
            "name": "@storyblok/management-api-client",
            "version": "0.9.1",
            "seenAt": "2026-10-08T16:30:26.446005464Z"
          },
          {
            "registry": "npm",
            "name": "storyblok",
            "version": "4.23.4",
            "seenAt": "2026-10-08T16:30:28.73366054Z"
          },
          {
            "registry": "npm",
            "name": "storyblok-js-client",
            "version": "7.7.7",
            "seenAt": "2026-10-08T16:30:27.249684993Z"
          }
        ],
        "githubStars": 68,
        "npmWeekly": 94500,
        "securityTxt": {
          "url": "https://storyblok.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:51.218593751Z"
        },
        "pages": [
          {
            "url": "https://www.storyblok.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:42.335720318Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5ca6efffc344"
          },
          {
            "url": "https://www.storyblok.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:48.641769602Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f2ecb91f1df2"
          },
          {
            "url": "https://www.storyblok.com/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:44.809888853Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "24506da32465"
          },
          {
            "url": "https://www.storyblok.com/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:30:46.89854338Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b848b65d0369"
          }
        ],
        "updatedAt": "2026-10-08T19:08:59.399751867Z"
      }
    },
    "answer": "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 \u0026 documentation, payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "slug": "strapi",
      "name": "Strapi",
      "vendor": "Strapi, Inc.",
      "vendorUrl": "https://strapi.io",
      "kind": "http-api",
      "category": "cms",
      "summary": "Strapi is an open-source headless CMS for Node.js that its owner hosts, with a paid cloud. Agents create, localise and publish entries through generated REST and GraphQL APIs or a built-in MCP server.",
      "url": "https://www.anchorterminal.com/tools/strapi",
      "markdownUrl": "https://www.anchorterminal.com/tools/strapi.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/strapi.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/strapi.json",
      "repo": "https://github.com/strapi/strapi",
      "license": "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",
      "transports": [
        "http",
        "streamable-http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@strapi/strapi"
        },
        {
          "registry": "npm",
          "name": "@strapi/client"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve tokens created in the admin panel of your own instance, with no app review or partner approval. API tokens authenticate the Content API under /api and are read-only, full access or custom per content type and action. Admin tokens authenticate admin routes and the MCP server at /mcp and hold a chosen subset of their owner's permissions, down to field and locale. Each kind is rejected on the other's routes. Both expire after 7, 30 or 90 days or never, can be regenerated, and travel as `Authorization: Bearer`. An Admin token is shown once.",
      "pricing": "freemium",
      "pricingNotes": "The Community Edition is free to self-host with unlimited seats, so an agent can start without a contract or a card. Growth is $45 a month for 3 seats ($15 per extra seat) with a 30-day trial and no card, and Enterprise is priced by sales. Strapi Cloud is $35, $90 or $450 a project a month, needs a card at project creation, and charges $1.50 per 25,000 API requests over the plan (checked 2026-10-07).",
      "priceSummary": "$45 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the documentation index, the pricing pages or the repository's MCP code (checked 2026-10-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 73289,
        "npmWeekly": 258813,
        "pypiWeekly": null,
        "asOf": "2026-10-07"
      },
      "docsUrl": "https://docs.strapi.io",
      "llmsTxt": "https://docs.strapi.io/llms.txt",
      "capabilities": [
        "cms.content",
        "cms.publish",
        "cms.localisation",
        "cms.assets",
        "cms.schema"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "hosted",
        "mcp",
        "llms-txt",
        "webhooks",
        "graphql",
        "typescript",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.7,
        "grade": "B",
        "agentReady": false,
        "rank": 231,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 87,
          "payments": 50,
          "reliability": 82,
          "schema": 80,
          "security": 66,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-07"
        },
        "negative": -6,
        "negativeNotes": [
          "13 May 2026. Strapi published two critical advisories. GHSA-rjg2-95x7-8qmx (CVE-2026-27886) leaked sensitive data through relation filters in versions 4.0.0 to 5.36.1, and GHSA-3xcq-8mjw-h6mx (CVE-2026-22599) was SQL injection in the Content-Type Builder up to 5.33.1 and 4.26.0. Both were fixed in earlier releases (5.37.0, 5.33.2 and 4.26.1) and published by the vendor, and we found no report of exploitation, so we deduct 6 of a possible 15. https://github.com/strapi/strapi/security/advisories/GHSA-rjg2-95x7-8qmx ; https://github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx"
        ],
        "verdict": "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.",
        "bestFor": "Teams that want to own their CMS and let an agent draft, localise and publish entries under a narrow token.",
        "strengths": [
          "Admin tokens carry a chosen subset of the owner's permissions, down to content type, action, field and locale, with 7, 30 or 90 day expiry",
          "The MCP server lists only the tools a token may use and narrows each input and output schema to permitted fields",
          "Media delete tools preview by default through `dryRun` and name what would be removed before anything is deleted",
          "Weekly releases, 13 tagged versions between 15 July and 7 October 2026, with release notes per version",
          "MIT Community Edition, free to self-host with unlimited seats, plus llms.txt, llms-full.txt and Markdown copies of every docs page"
        ],
        "weaknesses": [
          "Content History keeps no version for REST, GraphQL or MCP writes, and exists only on Growth and Enterprise plans",
          "Audit Logs and Review Workflows are Enterprise only, so the free edition has no record of what an agent changed",
          "A REST POST or PUT publishes immediately unless the request passes `status=draft`",
          "The MCP server can't upload files, describes dynamic zones as untyped arrays and sets no read-only or destructive annotations",
          "Two critical advisories were published on 13 May 2026, a data leak through relation filters and SQL injection in the Content-Type Builder, both fixed earlier"
        ],
        "agentNotes": [
          "Pass `status=draft` on every REST POST and PUT. Without it the Content API publishes the entry at once",
          "Use an Admin token for `/mcp` and admin routes and an API token for `/api`. Each kind is rejected on the other's routes",
          "Upload files with multipart POST to `/api/upload` first, then reference the returned file id in the entry. MCP tools can't upload",
          "Call `media_delete_assets` and `media_delete_folder` without `dryRun` first to preview, and take asset ids only from `media_list_assets`",
          "Keep your own copy of an entry before updating it. API and MCP writes create no Content History version"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.7
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 87,
          "payments": 50,
          "reliability": 82,
          "schema": 80,
          "security": 66,
          "transparency": 75
        },
        "provenanceScore": 68
      },
      "connect": {
        "install": "npx create-strapi@latest",
        "http": "curl 'http://localhost:1337/api/restaurants?status=draft' \\\n  -H \"Authorization: Bearer $STRAPI_API_TOKEN\"",
        "claudeCode": "claude mcp add strapi-mcp --transport http http://localhost:1337/mcp -H \"Authorization: Bearer YOUR_ADMIN_TOKEN\"",
        "config": {
          "mcpServers": {
            "strapi-mcp": {
              "headers": {
                "Authorization": "Bearer YOUR_ADMIN_TOKEN"
              },
              "type": "streamable-http",
              "url": "http://localhost:1337/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cms.content",
        "tool": "https://letme.dev/strapi"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Community Edition, self-hosted",
          "unit": "month",
          "usd": 0,
          "note": "MIT, unlimited seats, you pay for your own hosting"
        },
        {
          "item": "Growth, self-hosted",
          "unit": "month",
          "usd": 45,
          "note": "3 seats included, $15 per extra seat"
        },
        {
          "item": "Strapi Cloud Starter",
          "unit": "month",
          "usd": 35,
          "note": "per project, 100,000 API requests"
        },
        {
          "item": "Strapi Cloud Pro",
          "unit": "month",
          "usd": 90,
          "note": "per project, 1 million API requests"
        },
        {
          "item": "Strapi Cloud Business",
          "unit": "month",
          "usd": 450,
          "note": "per project, 10 million API requests"
        },
        {
          "item": "Strapi Cloud API requests over the plan",
          "unit": "1k-requests",
          "usd": 0.06,
          "note": "$1.50 per 25,000"
        }
      ],
      "provenance": {
        "legalEntity": "Strapi, Inc.",
        "domain": "strapi.io",
        "domainRegistered": "2015-09-21",
        "endpointOnVendorDomain": false,
        "terms": "https://strapi.io/cloud-legal",
        "privacy": "https://strapi.io/privacy",
        "statusPage": "https://status.strapi.io",
        "changelog": "https://github.com/strapi/strapi/releases",
        "securityTxt": "none",
        "checked": "2026-10-07",
        "notes": [
          "The Strapi Cloud terms (effective 7 October 2026) name Strapi, Inc., 548 Market St, PMB 60577, San Francisco, California 94104. The repository's copyright line names Strapi Solutions SAS, and the privacy policy gives Strapi Solutions, 128 rue de la Boétie, 75008 Paris.",
          "A self-hosted install answers on its owner's domain. Strapi Cloud projects answer at https://\u003cproject\u003e.strapiapp.com.",
          "https://strapi.io/.well-known/security.txt returned 404 to our reader on 7 October 2026. The repository holds a .well-known/security.txt with an Expires of 20 May 2027 and a Canonical line pointing at that URL.",
          "RDAP for strapi.io gives a registration date of 2015-09-21.",
          "The status page runs on Better Stack and covers Strapi Cloud, the website and the docs, not self-hosted installs."
        ],
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/strapi.json",
      "live": {
        "slug": "strapi",
        "vendorStatus": {
          "page": "https://status.strapi.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:51:13.949868717Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "strapi/strapi",
            "version": "v5.57.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T16:30:39.413193839Z"
          },
          {
            "registry": "npm",
            "name": "@strapi/client",
            "version": "1.6.2",
            "seenAt": "2026-10-08T16:30:37.897146773Z"
          },
          {
            "registry": "npm",
            "name": "@strapi/strapi",
            "version": "5.57.0",
            "seenAt": "2026-10-08T16:30:37.072939352Z"
          }
        ],
        "githubStars": 73292,
        "npmWeekly": 258813,
        "securityTxt": {
          "url": "https://strapi.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:39:07.890617672Z"
        },
        "pages": [
          {
            "url": "https://strapi.io/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:24:54.221268289Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9a83a678305b"
          },
          {
            "url": "https://strapi.io/cloud-legal",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:24:51.925906428Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e789fbc0c6c8"
          }
        ],
        "updatedAt": "2026-10-08T18:24:54.221268289Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Storyblok GmbH",
        "b": "Strapi, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://mapi.storyblok.com/v1",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Storyblok's terms. The SDKs, API clients and CLI in storyblok/monoblok are MIT",
        "b": "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",
        "name": "Licence"
      },
      {
        "a": "7",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-02",
        "b": "2026-10-07",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-10-07",
        "name": "Terms last updated"
      },
      {
        "a": "2025-10-06",
        "b": "2023-03-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "68 stars, 433k npm/wk",
        "b": "73k stars, 259k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "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 \u0026 documentation, payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Storyblok or Strapi?"
      },
      {
        "answer": "Storyblok takes an API key or an OAuth sign-in. Strapi needs an API key.",
        "question": "Do Storyblok and Strapi need an API key?"
      },
      {
        "answer": "Storyblok has a hosted endpoint at https://mapi.storyblok.com/v1. No hosted endpoint is listed for Strapi.",
        "question": "Can an agent call Storyblok and Strapi without installing anything?"
      },
      {
        "answer": "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).",
        "question": "Are Storyblok and Strapi open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 78 against 65",
          "Security \u0026 auth, 73 against 66",
          "Transparency \u0026 trust, 80 against 72"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Free to start without a card"
        ],
        "goodFor": "Teams already on Storyblok who want an agent to draft, translate and publish stories or change component schemas under scoped, per-space permissions.",
        "slug": "storyblok",
        "watchFor": "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)"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 80 against 68",
          "Payments \u0026 pricing, 50 against 35",
          "Maintenance \u0026 community, 87 against 80"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "Teams that want to own their CMS and let an agent draft, localise and publish entries under a narrow token.",
        "slug": "strapi",
        "watchFor": "Content History keeps no version for REST, GraphQL or MCP writes, and exists only on Growth and Enterprise plans"
      }
    ],
    "job": {
      "capability": "cms.content",
      "name": "Cms content"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/contentstack-vs-storyblok.json",
        "title": "Contentstack vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/contentstack-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentstack-vs-strapi.json",
        "title": "Contentstack vs Strapi",
        "url": "https://www.anchorterminal.com/compare/contentstack-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-vs-storyblok.json",
        "title": "Ghost vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/ghost-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-vs-strapi.json",
        "title": "Ghost vs Strapi",
        "url": "https://www.anchorterminal.com/compare/ghost-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sanity-vs-storyblok.json",
        "title": "Sanity vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/sanity-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sanity-vs-strapi.json",
        "title": "Sanity vs Strapi",
        "url": "https://www.anchorterminal.com/compare/sanity-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/storyblok-vs-webflow.json",
        "title": "Storyblok vs Webflow",
        "url": "https://www.anchorterminal.com/compare/storyblok-vs-webflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/storyblok-vs-wordpress.json",
        "title": "Storyblok vs WordPress",
        "url": "https://www.anchorterminal.com/compare/storyblok-vs-wordpress"
      },
      {
        "json": "https://www.anchorterminal.com/compare/strapi-vs-webflow.json",
        "title": "Strapi vs Webflow",
        "url": "https://www.anchorterminal.com/compare/strapi-vs-webflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/strapi-vs-wordpress.json",
        "title": "Strapi vs WordPress",
        "url": "https://www.anchorterminal.com/compare/strapi-vs-wordpress"
      }
    ],
    "scores": [
      {
        "by": 3,
        "edge": "strapi",
        "key": "reliability",
        "name": "Reliability",
        "storyblok": 79,
        "strapi": 82,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "edge": "strapi",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "storyblok": 68,
        "strapi": 80,
        "weight": 13
      },
      {
        "by": 13,
        "edge": "storyblok",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "storyblok": 78,
        "strapi": 65,
        "weight": 13
      },
      {
        "by": 7,
        "edge": "storyblok",
        "key": "security",
        "name": "Security \u0026 auth",
        "storyblok": 73,
        "strapi": 66,
        "weight": 14
      },
      {
        "by": 15,
        "edge": "strapi",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "storyblok": 35,
        "strapi": 50,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "edge": "strapi",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "storyblok": 80,
        "strapi": 87,
        "weight": 7
      },
      {
        "by": 8,
        "edge": "storyblok",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "storyblok": 80,
        "strapi": 72,
        "weight": 7
      }
    ],
    "summary": "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 \u0026 documentation, payments \u0026 pricing and maintenance \u0026 community. Both do cms content.",
    "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/storyblok-vs-strapi",
    "json": "https://www.anchorterminal.com/compare/storyblok-vs-strapi.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/storyblok-vs-strapi.md",
    "slim": "https://www.anchorterminal.com/compare/storyblok-vs-strapi.min.md"
  },
  "markdown": "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 \u0026 documentation, payments \u0026 pricing and maintenance \u0026 community. Both do cms content.\n\n- Storyblok: grade B, 67.7/100, rank #188 of 629. Markdown https://www.anchorterminal.com/tools/storyblok.md · JSON https://www.anchorterminal.com/api/v1/tools/storyblok.json\n- Strapi: grade B, 65.7/100, rank #231 of 629. Markdown https://www.anchorterminal.com/tools/strapi.md · JSON https://www.anchorterminal.com/api/v1/tools/strapi.json\n\n## Which one, for what\n\n### Storyblok (B)\n\nGood for: Teams already on Storyblok who want an agent to draft, translate and publish stories or change component schemas under scoped, per-space permissions.\n\nAhead on:\n- Agent ergonomics, 78 against 65\n- Security \u0026 auth, 73 against 66\n- Transparency \u0026 trust, 80 against 72\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Free to start without a card\n\nWatch 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)\n\n### Strapi (B)\n\nGood for: Teams that want to own their CMS and let an agent draft, localise and publish entries under a narrow token.\n\nAhead on:\n- Schema \u0026 documentation, 80 against 68\n- Payments \u0026 pricing, 50 against 35\n- Maintenance \u0026 community, 87 against 80\n\nAlso in its favour:\n- Open source\n\nWatch for: Content History keeps no version for REST, GraphQL or MCP writes, and exists only on Growth and Enterprise plans\n\n\n## Score by category\n\n| Category | Weight | Storyblok | Strapi | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 79 | 82 | Strapi +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 68 | 80 | Strapi +12 |\n| Agent ergonomics | 13% (16.2 this run) | 78 | 65 | Storyblok +13 |\n| Security \u0026 auth | 14% (17.5 this run) | 73 | 66 | Storyblok +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 50 | Strapi +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 80 | 87 | Strapi +7 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 72 | Storyblok +8 |\n| Negative events | ≤15 | -3 | -6 | |\n| **Total** | | **67.7 · B** | **65.7 · B** | |\n\n## Facts side by side\n\n| Fact | Storyblok | Strapi |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Storyblok GmbH | Strapi, Inc. |\n| Hosted endpoint | `https://mapi.storyblok.com/v1` | no (local only) |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| 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 |\n| Tools exposed | 7 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-02 | 2026-10-07 |\n| Terms last updated | couldn't be read | 2026-10-07 |\n| Privacy policy last updated | 2025-10-06 | 2023-03-01 |\n| Customer content may train models | couldn't be read | not found in the text |\n| Terms restrict automated access | couldn't be read | yes |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | yes |\n| Arbitration or class-action waiver | couldn't be read | yes |\n| Popularity | 68 stars, 433k npm/wk | 73k stars, 259k npm/wk |\n\n## Verdicts\n\n**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.\n\n**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.\n\n## Before you call either\n\n### Storyblok\n\n1. 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\n2. 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\n3. Write translations as `field__i18n__\u003ccode\u003e` keys inside the same content object, and set the component field to translatable first\n4. Upload an asset in three steps (signed response, POST to S3, finish upload). Through MCP the S3 step needs shell access for curl\n5. 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\n\n### Strapi\n\n1. Pass `status=draft` on every REST POST and PUT. Without it the Content API publishes the entry at once\n2. Use an Admin token for `/mcp` and admin routes and an API token for `/api`. Each kind is rejected on the other's routes\n3. Upload files with multipart POST to `/api/upload` first, then reference the returned file id in the entry. MCP tools can't upload\n4. Call `media_delete_assets` and `media_delete_folder` without `dryRun` first to preview, and take asset ids only from `media_list_assets`\n5. Keep your own copy of an entry before updating it. API and MCP writes create no Content History version\n\n## Questions\n\n### Which is better for AI agents, Storyblok or Strapi?\n\nStoryblok 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 \u0026 documentation, payments \u0026 pricing and maintenance \u0026 community.\n\n### Do Storyblok and Strapi need an API key?\n\nStoryblok takes an API key or an OAuth sign-in. Strapi needs an API key.\n\n### Can an agent call Storyblok and Strapi without installing anything?\n\nStoryblok has a hosted endpoint at https://mapi.storyblok.com/v1. No hosted endpoint is listed for Strapi.\n\n### Are Storyblok and Strapi open source?\n\nNo 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).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/storyblok-vs-strapi.json, and with the fewest tokens: https://www.anchorterminal.com/compare/storyblok-vs-strapi.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"storyblok\", \"b\": \"strapi\"}`. From a terminal: `anchor compare storyblok strapi`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/storyblok.json and https://www.anchorterminal.com/api/v1/tools/strapi.json\n\n## Other comparisons with Storyblok or Strapi\n\n- [Contentstack vs Storyblok](https://www.anchorterminal.com/compare/contentstack-vs-storyblok.md)\n- [Contentstack vs Strapi](https://www.anchorterminal.com/compare/contentstack-vs-strapi.md)\n- [Ghost vs Storyblok](https://www.anchorterminal.com/compare/ghost-vs-storyblok.md)\n- [Ghost vs Strapi](https://www.anchorterminal.com/compare/ghost-vs-strapi.md)\n- [Sanity vs Storyblok](https://www.anchorterminal.com/compare/sanity-vs-storyblok.md)\n- [Sanity vs Strapi](https://www.anchorterminal.com/compare/sanity-vs-strapi.md)\n- [Storyblok vs Webflow](https://www.anchorterminal.com/compare/storyblok-vs-webflow.md)\n- [Storyblok vs WordPress](https://www.anchorterminal.com/compare/storyblok-vs-wordpress.md)\n- [Strapi vs Webflow](https://www.anchorterminal.com/compare/strapi-vs-webflow.md)\n- [Strapi vs WordPress](https://www.anchorterminal.com/compare/strapi-vs-wordpress.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Storyblok vs Strapi",
        "url": ""
      }
    ],
    "description": "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 \u0026 documentation, payments \u0026 pricing and maintenance \u0026 community. Both do cms content. Category scores, facts, verdicts and agent notes side by…",
    "facts": [
      "Storyblok B 67.7",
      "Strapi B 65.7",
      "scores"
    ],
    "h1": "Storyblok vs Strapi",
    "image": "https://www.anchorterminal.com/assets/og/compare-storyblok-vs-strapi.png",
    "path": "/compare/storyblok-vs-strapi",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Storyblok vs Strapi for AI agents, B 67.7 vs B 65.7 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/storyblok-vs-strapi"
  },
  "tokens": {
    "markdown": 2200,
    "slim": 730
  },
  "version": 1
}
