mothermachine

Browse / Content publishing

Strapi

Open-core headless CMS: content types in the admin, auto-generated REST and GraphQL APIs, env-file config.

AdaptableOperable Business appWeb app Deterministic TypeScriptJavaScript API License: MIT core with EE license under ee/ (GitHub NOASSERTION)

Strapi is a Node.js headless CMS: model content types visually, get REST and GraphQL endpoints for each, with draft and publish, media library, i18n, and roles. The Community core is MIT; features under ee/ are commercially licensed and Strapi Cloud is the hosted edition. Configuration is config/*.js plus .env. The official REST API is how an agent creates, publishes, and uploads; no Strapi-org MCP was found.

Use it when
  • I need a content API for a site or app fast, and editors who want a normal CMS screen
  • I want my agent to push entries and media through a documented API while the content model stays under my control
Gotchas
  • Open-core: anything under ee/ is not MIT; the license file also says a registered Cloud account changes the terms
  • All content types are private by default; grant public access or use an API token before the API answers
  • No official Docker image; generate one with npx @strapi-community/dockerize
  • Content types cannot be created through the API; define them in the admin or as schema.json files

Last activity Sep 2, 2026. Fit: adaptable 3, operable 3.

Editions

Community · Free open source

  • Clonegit clone https://github.com/strapi/strapi
  • Installnpx create-strapi@latest my-project

Growth and Enterprise (self-hosted) · Free closed source

closed source

closed source

No distribution recorded.

closed source

No distribution recorded.

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Light edit24 things to editdeployment-plus-code surface

The named .env vars (HOST, PORT, APP_KEYS, *_SALT, *_SECRET, DATABASE_*) and config/server.js, database.js, admin.js are deployment configuration. Adapting Strapi to a business means defining content types, which the admin Content-Type Builder writes as src/api/<type>/content-types/<type>/schema.json in development mode only, then editing code in src/api/<type>/controllers, services, routes and policies, lifecycle hooks, and config/plugins.js and config/middlewares.js.

Env vars
HOST PORT APP_KEYS API_TOKEN_SALT ADMIN_JWT_SECRET JWT_SECRET TRANSFER_TOKEN_SALT DATABASE_CLIENT DATABASE_FILENAME ADMIN_PATH STRAPI_ADMIN_BACKEND_URL NODE_ENV STRAPI_LICENSE
Config files
.env config/server.js config/database.js config/admin.js config/plugins.js config/middlewares.js config/env/<environment>/ src/api/*/content-types/*/schema.json src/api/*/routes/ src/api/*/controllers/ src/api/*/services/
Prompt files
none
Accounts you need
Strapi Cloud (hosted edition only)

Source

  • github.com/strapi/strapi
  • MIT core with EE license under ee/ (GitHub NOASSERTION) license
  • Last commit Sep 2, 2026
  • 73,062 stars

Operable: what an agent can drive

Interface

OfficialAPIpublished by the builderremote or local

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
docs.strapi.io/cms/api/rest

Reach

Partial coverage. 6 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Create, read, update, and delete entriesReachableREST API documents CRUD by documentId
Save drafts and publishReachableREST API ?status=draft with Draft & Publish enabled
Upload mediaReachableUpload API at /api/upload
Populate relations and filter queriesReachableREST API populate, filters, sort, pagination parameters
Query over GraphQLReachableofficial GraphQL plugin
Manage end users and permissionsReachableUsers & Permissions plugin exposes its own API endpoints
Localize entries per localeUndeterminedi18n is core; locale parameter not confirmed on the fetched page
Define content types and componentsNot reachableREST docs: content types are built in the admin Content-Type Builder; components have no endpoints
Manage admin roles and API tokensNot reachableadmin panel only
Customize the admin panelNot reachablecode in src/admin

Code stack

Languages
TypeScriptJavaScript
Frameworks
Node.jsKoaReact (admin)
Package manager
npm or yarn
Database
SQLitePostgreSQLMySQLMariaDB
Hosting target
any Node hostDocker (community dockerize)Strapi Cloud
Built
Human-written (recorded, never ranked)

Skills

One repo tooling skill covering git conventions for Strapi contributors.

Kind
contributor
Paths
.ai/skills/git-conventions/SKILL.md

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME: self-hosted Node.js CMS with admin panel and generated APIs95%
executionModelno model at runtime; Strapi AI is an optional cloud add-on90%
operabilitydocs.strapi.io/cms/api/rest (Builder domain) documents CRUD, draft and publish, upload, API tokens; GitHub search of the strapi org found no MCP repo90%
effortdocs.strapi.io/cms/configurations/environment lists the env vars and config/ files85%
editionsLICENSE: MIT Expat for the Community Edition, EE license under ee/; strapi.io/pricing: Cloud Starter $35, Pro $90, Business $450 per month80%
activepushedAt 2026-09-02–
provenanceStrapi Solutions SAS since 2015; no vibe-coded claim90%
reach85%

Open questions

  • Growth and Enterprise self-hosted license prices
  • Does the REST API accept a locale parameter for i18n entries (not on the fetched page)?

Sources