strapi_admin_ bulk_ publish_ entriesPublish many entries at once.
List what your Strapi site holds, draft and edit entries without touching the live site, publish when you say so, upload images and set them on entries, and manage locales and end users on Strapi Cloud or your own server.
PopMCPStrapi
Works with whatever content types your site has, reads them for you, writes in plain JSON instead of Strapi's bracket format, and handles both Strapi 4 and Strapi 5.
207 tools in the full catalog: 102 read and 105 write. 33 load by default, and the rest are found with tool search.
strapi_admin_ bulk_ publish_ entriesPublish many entries at once.
strapi_admin_ discard_ draftThrow away an entry's unpublished edits and go back to the published version.
strapi_admin_ unpublish_ entryTake an entry offline and keep its draft.
strapi_admin_ create_ folderCreate a Media Library folder.
strapi_admin_ list_ foldersMedia Library folders.
strapi_create_ userCreate an end user.
strapi_get_ userOne end user by numeric id from strapi_list_users.
strapi_list_ usersList the site's end users (Users and Permissions plugin), not admin panel users.
strapi_update_ userChange an end user.
strapi_create_ entryCreate an entry in a collection type.
strapi_delete_ entryDelete an entry for good, with its draft and published versions, in the given locale (or the default locale).
strapi_get_ entryRead one entry of a collection type by its documentId, with first-level relations, media and components included.
strapi_get_ single_ typeRead a single type, the kind of content that exists once (homepage, global settings).
strapi_list_ entriesList or search the entries of a collection type (articles, products and so on).
strapi_update_ entryChange fields on an entry.
strapi_update_ single_ typeCreate or change a single type (homepage, global settings).
strapi_delete_ fileDelete a file from the Media Library and from storage for good.
strapi_get_ fileOne Media Library file by id.
strapi_list_ filesList Media Library files one page at a time.
strapi_update_ file_ infoChange a file's name, alternative text or caption.
strapi_upload_ fileAdd a file to the Media Library from a public link or inline bytes (25 MB at most here).
strapi_list_ rolesEnd-user roles (Public, Authenticated and your own) with their numeric id, name, type and user count.
strapi_call_ custom_ getCall a GET route your developers added to this Strapi project, one that no other tool covers.
strapi_call_ custom_ postCall a POST route your developers added to this Strapi project.
strapi_get_ content_ typeOne content type's full schema: every field with its type, required flag, relation target and component.
strapi_list_ componentsEvery component's schema, for filling component and dynamic zone fields.
strapi_list_ content_ typesStart here.
strapi_publish_ entryMake an entry's draft live.
strapi_site_ overviewA summary of this Strapi site: version, content types with entry counts, media files, end users and locales.
strapi_graphql_ mutationRun a GraphQL mutation (createArticle, updateArticle, deleteArticle), when the optional GraphQL plugin is installed.
strapi_graphql_ queryRun a GraphQL query, when the optional GraphQL plugin is installed.
strapi_list_ localesThe site's locales: code, name and which is the default.
strapi_send_ emailSend an email through the site's configured email provider.
strapi_admin_ auto_ clone_ entryCopy an entry as it is.
strapi_admin_ bulk_ delete_ entriesDelete many entries for good.
strapi_admin_ bulk_ unpublish_ entriesTake many entries offline at once.
strapi_admin_ bulk_ validate_ entriesRead many entries with what is needed to check they can be published.
strapi_admin_ check_ uidCheck whether a slug is free.
strapi_admin_ clone_ entryCopy an entry into a new draft, with the given fields changed.
strapi_admin_ count_ documentsHow many documents are draft, published and modified across the site.
strapi_admin_ count_ draft_ relationsHow many relations of an entry point at unpublished content, to check before publishing.
strapi_admin_ count_ many_ draft_ relationsThe same count across many entries.
strapi_admin_ count_ single_ type_ draft_ relationsHow many relations of a single type point at unpublished content.
strapi_admin_ create_ and_ publish_ entryCreate an entry and publish it in one step.
strapi_admin_ create_ entryCreate a draft entry through the admin panel's API.
strapi_admin_ delete_ entryDelete an entry for good through the admin panel's API.
strapi_admin_ delete_ single_ typeDelete a single type's content for good.
strapi_admin_ discard_ single_ type_ draftThrow away a single type's unpublished edits.
strapi_admin_ generate_ uidWork out a free slug for an uid field from the entry's data.
strapi_admin_ get_ component_ configurationHow one component's form is laid out.
strapi_admin_ get_ content_ manager_ initEvery content type and component as the admin panel loads them.
strapi_admin_ get_ content_ type_ configurationHow one content type's edit and list screens are laid out.
strapi_admin_ get_ entryRead one entry as the admin panel sees it, with its available locales and statuses.
strapi_admin_ get_ preview_ urlThe site preview link for an entry, when previews are set up.
strapi_admin_ get_ single_ typeRead a single type as the admin panel sees it.
strapi_admin_ list_ component_ settingsComponents as the admin panel lists them.
strapi_admin_ list_ content_ type_ settingsList view settings of every content type.
strapi_admin_ list_ content_ typesContent types with uid, kind and whether they show in the panel.
strapi_admin_ list_ entriesList entries as the admin panel sees them, drafts first, with status (draft, published, modified).
strapi_admin_ list_ entry_ relationsThe entries already linked in one relation field of an entry.
strapi_admin_ list_ history_ versionsEarlier versions of an entry.
strapi_admin_ list_ recent_ documentsDocuments most recently edited or published.
strapi_admin_ list_ relation_ targetsEntries that can be chosen for a relation field, with a text search.
strapi_admin_ publish_ entryPublish an entry's draft.
strapi_admin_ publish_ single_ typePublish a single type's draft.
strapi_admin_ restore_ history_ versionPut an entry's draft back to an earlier version.
strapi_admin_ unpublish_ single_ typeTake a single type offline and keep its draft.
strapi_admin_ update_ component_ configurationChange how a component's form is laid out.
strapi_admin_ update_ content_ type_ configurationChange how a content type's screens are laid out in the admin panel.
strapi_admin_ update_ entryChange an entry's draft through the admin panel's API.
strapi_admin_ update_ single_ typeCreate or change a single type's draft.
strapi_admin_ batch_ delete_ webhooksRemove several webhooks.
strapi_admin_ create_ webhookAdd a webhook that tells a URL about content changes.
strapi_admin_ delete_ webhookRemove a webhook.
strapi_admin_ get_ email_ settingsWhich email provider the site uses, with its default sender.
strapi_admin_ get_ informationStrapi version, node version, plan and environment.
strapi_admin_ get_ initBasic facts the admin panel loads first.
strapi_admin_ get_ key_ statisticsCounts of entries, assets, content types, components, locales, admins, webhooks and API tokens.
strapi_admin_ get_ project_ settingsThe admin panel's logos.
strapi_admin_ get_ project_ typeWhether this site runs the Community or an Enterprise edition, with its features.
strapi_admin_ get_ user_ email_ templatesThe end-user email templates (reset password, confirm address).
strapi_admin_ get_ user_ settingsEnd-user settings: sign-ups, email confirmation, default role, reset URL.
strapi_admin_ get_ webhookOne webhook.
strapi_admin_ list_ content_ api_ permissionsEvery Content API permission that can be given to an API token.
strapi_admin_ list_ content_ api_ routesEvery Content API route of this site, including ones your developers added, grouped by API.
strapi_admin_ list_ pluginsPlugins installed on this site, to see whether GraphQL or i18n is there.
strapi_admin_ list_ user_ permission_ policiesPolicies that can be set on end-user permissions.
strapi_admin_ list_ user_ permission_ routesRoutes grouped by what end-user permissions control.
strapi_admin_ list_ webhooksThe site's webhooks.
strapi_admin_ send_ emailSend an email through the site's provider using the admin token.
strapi_admin_ send_ test_ emailSend a test email to check the provider.
strapi_admin_ trigger_ webhookSend a test call to a webhook's URL.
strapi_admin_ update_ user_ email_ templatesChange the end-user email templates.
strapi_admin_ update_ user_ settingsChange end-user settings such as whether people can sign up.
strapi_admin_ update_ webhookChange a webhook.
strapi_admin_ verify_ email_ providerCheck the email provider's connection.
strapi_admin_ bulk_ delete_ mediaDelete many files and folders for good, with everything inside the folders.
strapi_admin_ bulk_ move_ mediaMove many files and folders to another folder.
strapi_admin_ bulk_ update_ filesChange text on many files in one call.
strapi_admin_ count_ pending_ ai_ metadataHow many files wait for Strapi AI metadata.
strapi_admin_ delete_ fileDelete a file for good.
strapi_admin_ generate_ ai_ metadataGenerate alternative text and captions with Strapi AI.
strapi_admin_ get_ fileOne Media Library file with its folder.
strapi_admin_ get_ folderOne folder.
strapi_admin_ get_ folder_ treeThe whole Media Library folder tree.
strapi_admin_ get_ latest_ ai_ metadata_ jobThe latest Strapi AI metadata job.
strapi_admin_ get_ media_ settingsMedia Library settings such as responsive sizes and size optimization.
strapi_admin_ get_ media_ view_ settingsMedia Library view settings such as page size and sort.
strapi_admin_ list_ filesMedia Library files with folder filters.
strapi_admin_ replace_ fileSwap a file's bytes and keep its id.
strapi_admin_ start_ ai_ metadata_ jobStart a job that writes alternative text and captions with Strapi AI.
strapi_admin_ update_ fileChange a file's name, text or folder.
strapi_admin_ update_ folderRename or move a folder.
strapi_admin_ update_ media_ settingsChange Media Library settings.
strapi_admin_ update_ media_ view_ settingsChange Media Library view settings.
strapi_admin_ upload_ fileAdd a file straight into a Media Library folder.
strapi_admin_ upload_ file_ formThe admin panel's own upload form route.
strapi_admin_ upload_ from_ urlsHave Strapi fetch files from public links into the Media Library.
strapi_admin_ batch_ delete_ admin_ rolesRemove several admin panel roles.
strapi_admin_ batch_ delete_ admin_ usersRemove several admin panel users.
strapi_admin_ check_ permissionsCheck what the admin token may do.
strapi_admin_ create_ admin_ roleCreate an admin panel role.
strapi_admin_ create_ admin_ userInvite someone to the admin panel.
strapi_admin_ delete_ admin_ roleRemove an admin panel role.
strapi_admin_ delete_ admin_ userRemove an admin panel user, along with any admin tokens they own.
strapi_admin_ export_ audit_ logsAudit logs as an export.
strapi_admin_ get_ admin_ roleOne admin panel role.
strapi_admin_ get_ admin_ role_ permissionsWhat an admin panel role may do.
strapi_admin_ get_ admin_ userOne admin panel user.
strapi_admin_ get_ audit_ logOne audit log entry.
strapi_admin_ list_ admin_ permissionsEvery permission that can be given in the admin panel, with its conditions.
strapi_admin_ list_ admin_ rolesAdmin panel roles (Super Admin, Editor, Author and your own).
strapi_admin_ list_ admin_ usersPeople who can sign in to the admin panel.
strapi_admin_ list_ audit_ log_ usersPeople who appear in the audit logs.
strapi_admin_ list_ audit_ logsWho changed what in the admin panel.
strapi_admin_ set_ admin_ role_ permissionsReplace everything an admin panel role may do.
strapi_admin_ update_ admin_ roleRename an admin panel role.
strapi_admin_ update_ admin_ userChange an admin panel user, or block them with isActive=false.
strapi_admin_ create_ componentAdd a component.
strapi_admin_ create_ content_ typeAdd a content type.
strapi_admin_ delete_ componentRemove a component and its data.
strapi_admin_ delete_ component_ categoryRemove a component category and the components in it.
strapi_admin_ delete_ content_ typeRemove a content type and its data.
strapi_admin_ get_ builder_ componentOne component's schema, through the admin token.
strapi_admin_ get_ builder_ content_ typeOne content type's schema, through the admin token.
strapi_admin_ get_ reserved_ namesNames not allowed for content types and fields.
strapi_admin_ get_ schemaThe whole schema as the Content-Type Builder loads it.
strapi_admin_ get_ schema_ update_ statusWhether a schema change is still being applied.
strapi_admin_ list_ builder_ componentsEvery component's schema, through the admin token.
strapi_admin_ list_ builder_ content_ typesEvery content type's schema, through the admin token.
strapi_admin_ rename_ component_ categoryRename a component category.
strapi_admin_ update_ componentChange a component's schema.
strapi_admin_ update_ content_ typeChange a content type's schema.
strapi_admin_ update_ schemaApply many schema changes at once, the way the Content-Type Builder saves.
strapi_admin_ add_ release_ actionAdd an entry to a release.
strapi_admin_ add_ release_ actions_ bulkAdd many entries to a release.
strapi_admin_ create_ releaseCreate a release, optionally scheduled.
strapi_admin_ delete_ releaseDelete a release.
strapi_admin_ get_ releaseOne release.
strapi_admin_ get_ release_ settingsDefault time zone for releases.
strapi_admin_ list_ release_ actionsThe entries in a release.
strapi_admin_ list_ releasesReleases: groups of entries published together.
strapi_admin_ list_ releases_ for_ documentReleases that hold a given entry.
strapi_admin_ map_ entries_ to_ releasesFor a list of entries, which pending releases hold each.
strapi_admin_ publish_ releasePublish everything in a release now.
strapi_admin_ remove_ release_ actionTake an entry out of a release.
strapi_admin_ update_ releaseRename or reschedule a release.
strapi_admin_ update_ release_ actionSwitch an entry in a release between publish and unpublish.
strapi_admin_ update_ release_ settingsChange the default time zone for releases.
strapi_admin_ create_ localeAdd a locale to the site.
strapi_admin_ delete_ localeRemove a locale and all content in it, for good.
strapi_admin_ get_ collection_ translation_ jobThe Strapi AI translation job of an entry.
strapi_admin_ get_ fill_ from_ localeAn entry's content in another locale, ready to translate.
strapi_admin_ get_ i18n_ settingsInternationalization settings, such as AI translation.
strapi_admin_ get_ non_ localized_ fieldsFields shared across an entry's locales.
strapi_admin_ get_ single_ translation_ jobThe Strapi AI translation job of a single type.
strapi_admin_ list_ iso_ localesEvery locale code Strapi knows, to pick from when adding one.
strapi_admin_ list_ localesThe site's locales with numeric ids.
strapi_admin_ update_ i18n_ settingsChange internationalization settings.
strapi_admin_ update_ localeRename a locale or make it the default.
strapi_admin_ create_ workflowCreate a review workflow.
strapi_admin_ delete_ workflowDelete a review workflow.
strapi_admin_ get_ workflow_ stageOne workflow stage.
strapi_admin_ list_ entry_ stagesThe stages an entry can move to.
strapi_admin_ list_ workflow_ stagesA workflow's stages.
strapi_admin_ list_ workflowsReview workflows and their stages.
strapi_admin_ set_ entry_ assigneeAssign an entry to an admin panel user, or clear it.
strapi_admin_ set_ entry_ stageMove an entry to a review stage.
strapi_admin_ update_ workflowChange a review workflow.
strapi_count_ usersHow many end users match.
strapi_delete_ userDelete an end user for good.
strapi_register_ userSign up an end user the way the site's own form does, with the default role and any confirmation email.
strapi_send_ email_ confirmationSend an end user their sign-up confirmation email again.
strapi_send_ password_ resetEmail an end user a password reset link.
strapi_delete_ single_ typeDelete a single type's content for good.
strapi_list_ all_ filesEvery Media Library file in one array, with no pages, which can be very large.
strapi_replace_ fileSwap a file's bytes and keep its id, so every entry using it shows the new file.
strapi_create_ roleCreate an end-user role.
strapi_delete_ roleDelete an end-user role.
strapi_get_ roleOne end-user role with every permission it has, grouped by API.
strapi_list_ permissionsEvery permission that can be given to an end-user role, grouped by API.
strapi_update_ roleChange an end-user role.
strapi_call_ custom_ deleteCall a DELETE route your developers added to this Strapi project.
strapi_call_ custom_ patchCall a PATCH route your developers added to this Strapi project.
strapi_call_ custom_ putCall a PUT route your developers added to this Strapi project.
strapi_get_ all_ content_ type_ schemasEvery content type's full schema, including Strapi's own plugin types.
strapi_get_ componentOne component's schema.
Credentials off one Strapi screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
In your Strapi admin panel open Settings, then Global settings, then API Tokens, and create a Full access token. Paste it here with your site address. An admin token is optional and adds unpublishing, folders, bulk actions, releases and webhooks.
https://cms.example.com••••••••••••3f7a••••••••••••3f7aEdits save as drafts unless the AI is told to publish, so the live site does not change by accident. Deletes are permanent and take effect as soon as the AI calls them. Tick Strapi on the PopMCP consent screen only for clients that should edit the site. Teammates start on read-only.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Strapi credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Show me the content types on my site and how many entries each one has
strapi_site_overviewok
Then just ask for the work
“Show me the content types on my site and how many entries each one has”
“Draft an article from these notes, add this image as its cover, and leave it unpublished for me to check”
“Which articles have edits that were never published? Publish the one about pricing”
“Find images with no alternative text in the Media Library and write some for them”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Strapi behind an AI client.
Your site address and an API token. In your Strapi admin panel open Settings, then Global settings, then API Tokens, and create a token with the Full access type. API tokens are free on every Strapi plan. PopMCP checks the token against your site and stores it encrypted. Your site has to be online, because a Strapi running on your own computer cannot be reached.
Yes. Strapi builds its API from the content types on each site, so the tools take the content type as a value instead of being fixed in advance. strapi_list_content_types shows what your site has, with each field's type, and names like Article, article and articles all find the same type. Your developers' own routes are reachable too, through the custom route tools.
Strapi's API publishes on every save by default, so PopMCP changes that: on content types with Draft and Publish, a create or update saves a draft unless the AI asks to publish. strapi_publish_entry makes a draft live when you say so. On Strapi 4 an entry has only one version, so edits to something already published show at once. Deleting is permanent either way.
API tokens reach Strapi's Content API, which has no way to unpublish an entry, discard a draft, run bulk actions or manage folders. An admin token reaches the same Admin API the panel uses, and adds those, along with releases, review workflows, webhooks and admin users. Create it in Settings, then Administration Panel, then Admin Tokens on a recent Strapi 5, and paste it under More options.
Yes, and it can read entries and media. Strapi's read-only tokens only allow actions named find and findOne, so they cannot read field lists or locales. PopMCP still works out your content types from a role's permissions. A Custom token with Content-type-builder and I18n ticked gives the AI field names as well, and you can also set the connection itself to read-only in PopMCP.
Yes. It works with Strapi Cloud and any self-hosted site on a public https address, including a changed API prefix or a subdirectory. PopMCP detects Strapi 4 or 5 when you connect and gives the AI one consistent shape. Admin tokens and a few newer features exist only on recent Strapi 5 versions.
207. Thirty-three everyday tools load by default and the rest stay searchable, so your AI client is not crowded. They were checked against the route tables of Strapi 5.60, and every route is either covered or left out for a stated reason, such as end-user password sign-in or the routes that reveal tokens.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Strapi in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Strapi on the consent screen. The Strapi tools are then available in that session, and no Strapi credential is stored on your machine.
Loading 207 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 33-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 207 here. A trigger is something PopMCP watches for you: 3 Strapi events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Strapi.
Launch a hosted MCP endpoint for Strapi, keep tool access under control, and start testing real workflow prompts right away.