{
 "categories": [
  "documents",
  "developer-tools",
  "open-source"
 ],
 "deployment": "hybrid",
 "evidence": [
  {
   "date": "2026-10-04",
   "fact": "homepage",
   "note": "Strapi presents an open-source TypeScript headless CMS with REST and GraphQL, self-hosting, and Strapi Cloud.",
   "source": "https://strapi.io/",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "deployment",
   "note": "The homepage says the same Strapi codebase can run on your own servers or on Strapi Cloud.",
   "source": "https://strapi.io/",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "platforms",
   "note": "Content is managed through the admin and published as APIs. The homepage does not name desktop operating systems.",
   "source": "https://strapi.io/",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "license",
   "note": "The repository license says Community Edition, when ee/ is not used and there is no cloud account, is MIT Expat. Software under ee/ is Enterprise Edition and is not MIT.",
   "source": "https://raw.githubusercontent.com/strapi/strapi/develop/LICENSE",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.api.exists",
   "note": "Strapi documents a REST API that generates list, create, get, update, and delete endpoints for each content type.",
   "source": "https://docs.strapi.io/cms/api/rest",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.api.kinds[0]",
   "note": "The documented content interface uses HTTP methods GET, POST, PUT, and DELETE under /api.",
   "source": "https://docs.strapi.io/cms/api/rest",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.api.kinds[1]",
   "note": "The GraphQL plugin, after yarn add or npm install @strapi/plugin-graphql, exposes queries and mutations at /graphql. It does not upload media.",
   "source": "https://docs.strapi.io/cms/api/graphql",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.api.auth[0]",
   "note": "Content API requests send an API token as Authorization bearer. Read-only, full-access, and custom tokens are documented. API tokens are rejected on admin routes.",
   "source": "https://docs.strapi.io/cms/features/api-tokens",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.api.auth[1]",
   "note": "Users & Permissions returns a JWT on login or registration. Later Content API requests place that JWT in an Authorization Bearer header.",
   "source": "https://docs.strapi.io/cms/features/users-permissions",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.api.coverage",
   "note": "REST coverage follows the content types and permissions you configure. Content types are private by default. The Upload API is a separate /api/upload surface.",
   "source": "https://docs.strapi.io/cms/api/rest",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.sdk.exists",
   "note": "Strapi documents @strapi/client for fetching, creating, updating, and deleting content, and for Media Library file operations.",
   "source": "https://docs.strapi.io/cms/api/client",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.sdk.languages[0]",
   "note": "The client guide shows a JavaScript import of strapi from @strapi/client.",
   "source": "https://docs.strapi.io/cms/api/client",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.sdk.languages[1]",
   "note": "The same guide shows a TypeScript import of the same @strapi/client package.",
   "source": "https://docs.strapi.io/cms/api/client",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.sdk.official",
   "note": "The package is documented on docs.strapi.io as the Strapi Client.",
   "source": "https://docs.strapi.io/cms/api/client",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.mcp.first_party",
   "note": "Strapi 5.47.0 or later includes an MCP server at /mcp. It is disabled until mcp.enabled is true. Auth is an Admin bearer token. Tools follow that token's permissions.",
   "source": "https://docs.strapi.io/cms/features/strapi-mcp-server",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.cli.exists",
   "note": "The Strapi CLI documents develop, start, admin user commands, and export, import, and transfer.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.extensibility.webhooks",
   "note": "Strapi documents webhooks that POST on entry create, update, delete, publish, and unpublish, and on media create, update, and delete. User content-type events are excluded.",
   "source": "https://docs.strapi.io/cms/backend-customization/webhooks",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.data_access.export[0]",
   "note": "strapi export writes a gzip-compressed tar archive encrypted with aes-128-ecb unless --no-encrypt is set.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.data_access.export[1]",
   "note": "strapi export --format dir --no-encrypt writes an unpacked directory.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.data_access.import[0]",
   "note": "strapi import reads archives generated by strapi export, including .tar, .tar.gz, and .tar.gz.enc files.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.data_access.import[1]",
   "note": "strapi import also reads an unpacked export directory.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "modalities.agent_docs.llms_txt",
   "note": "Strapi documents https://docs.strapi.io/llms.txt as a concise index of documentation pages for LLM consumption, alongside llms-full.txt and llms-code.txt.",
   "source": "https://docs.strapi.io/cms/ai/for-developers",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "verdict.scores.api",
   "note": "Generated REST CRUD, token auth, an official client, and webhooks support production content work. Permissions, the separate Upload API, and the optional GraphQL plugin keep coverage short of a complete admin replacement.",
   "source": "https://docs.strapi.io/cms/api/rest",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "verdict.scores.mcp",
   "note": "The built-in server is official and can manage content and media metadata. It is off by default, requires 5.47.0 or later, and cannot upload new files.",
   "source": "https://docs.strapi.io/cms/features/strapi-mcp-server",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "verdict.scores.cli",
   "note": "The CLI is official for project lifecycle, admin users, and data transfer. It is a local project tool, not a remote content client.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "freshness.watch[0].url",
   "note": "Opened the current built-in MCP guide, including version, enablement, Admin token auth, and tool tables.",
   "source": "https://docs.strapi.io/cms/features/strapi-mcp-server",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "freshness.watch[1].url",
   "note": "Opened the current REST API reference for generated content-type endpoints.",
   "source": "https://docs.strapi.io/cms/api/rest",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "freshness.watch[2].url",
   "note": "Opened the current Strapi CLI reference, including export and import.",
   "source": "https://docs.strapi.io/cms/cli",
   "tier": "declared"
  },
  {
   "date": "2026-10-04",
   "fact": "freshness.watch[3].url",
   "note": "Opened strapi/strapi metadata. The repository is not archived and was pushed on 2026-10-02.",
   "source": "https://github.com/strapi/strapi",
   "tier": "declared"
  }
 ],
 "freshness": {
  "last_verified": "2026-10-04",
  "volatility": "high",
  "watch": [
   {
    "type": "docs",
    "url": "https://docs.strapi.io/cms/features/strapi-mcp-server"
   },
   {
    "type": "docs",
    "url": "https://docs.strapi.io/cms/api/rest"
   },
   {
    "type": "docs",
    "url": "https://docs.strapi.io/cms/cli"
   },
   {
    "type": "repo",
    "url": "https://github.com/strapi/strapi"
   }
  ]
 },
 "homepage": "https://strapi.io/",
 "id": "strapi",
 "license": "freemium",
 "modalities": {
  "agent_docs": {
   "llms_txt": true
  },
  "api": {
   "auth": [
    "api-token",
    "jwt"
   ],
   "coverage": "partial",
   "docs": "https://docs.strapi.io/cms/api/rest",
   "exists": true,
   "kinds": [
    "rest",
    "graphql"
   ]
  },
  "cli": {
   "exists": true
  },
  "computer_use": {
   "issues": [],
   "viability": "unknown"
  },
  "data_access": {
   "export": [
    "tar",
    "directory"
   ],
   "import": [
    "tar",
    "directory"
   ]
  },
  "extensibility": {
   "scripting": [],
   "webhooks": true
  },
  "integrations": {
   "make": "unknown",
   "n8n": "unknown",
   "power_automate": "unknown",
   "zapier": "unknown"
  },
  "mcp": {
   "first_party": true,
   "third_party": [],
   "verdict": "official"
  },
  "rpa": {
   "drivability": "unknown",
   "notes": "No repeatable UI probe was run. The Content API, official JavaScript client, project CLI, and built-in MCP server cover content automation without browser control.\n",
   "ui_stack": [],
   "vendor_support": []
  },
  "sdk": {
   "exists": true,
   "languages": [
    "javascript",
    "typescript"
   ],
   "official": true
  }
 },
 "name": "Strapi",
 "platforms": [
  "web"
 ],
 "related": {
  "alternatives": [
   "contentful",
   "directus",
   "storyblok",
   "sanity"
  ],
  "our_products": []
 },
 "schema_version": 1,
 "score_version": 1,
 "status": "active",
 "vendor": "Strapi Solutions SAS",
 "verdict": {
  "best_path": "api",
  "scores": {
   "api": 8,
   "cli": 6,
   "computer_use": null,
   "integrations": null,
   "mcp": 7,
   "overall": 8,
   "rpa": null
  },
  "summary": "Strapi is automatable today through its Content API. Strapi 5 generates REST endpoints that list, create, update, and delete documents for each content type. The GraphQL plugin, once installed, exposes queries and mutations at /graphql and does not upload media. Content API requests authenticate with an API token sent as Authorization bearer, or with a Users & Permissions JWT sent as Authorization Bearer. API tokens are separate from Admin tokens. The official @strapi/client package is a JavaScript and TypeScript client for collections, single types, and files. Strapi 5.47.0 or later includes an MCP server at /mcp. It stays off until config/server sets mcp.enabled to true. Clients send a Strapi Admin token as a bearer token, and that token's permissions decide which content and media tools appear. Content tools can create, read, update, delete, publish, and unpublish entries. Media tools from 5.54.0 can list and change assets, and they cannot upload a new file. The strapi CLI can develop and start a project, manage admin users, and export, import, or transfer data. Export writes an encrypted tar archive by default, or an unencrypted directory. Webhooks can POST entry and media events. The Community Edition is MIT Expat when ee/ is not used and there is no Strapi Cloud account. Enterprise Edition code under ee/ is not MIT. Strapi Cloud and Enterprise are paid offerings on the product site. https://docs.strapi.io/llms.txt is a first-party documentation index. Zapier, Make, Power Automate, and n8n were not assessed. Computer-use viability is unassessed. API scores 8. MCP scores 7. CLI scores 6. API is the best path because a content API token calls generated REST endpoints directly, including file upload, without enabling the MCP server.\n"
 }
}