Head to head · Content management · October 2026 research run
dotCMS vs Payload
dotCMS scores 57.7 (C) on agent readiness against Payload's 50.1 (D), and leads in 2 of 7 scored categories. Payload leads on reliability, schema & documentation, payments & pricing and transparency & trust. Both do content management.
Best headless CMS and website publishing for AI agents · All 136 cms comparisons
Which one, for what
dotCMS C
Best for Enterprises already on dotCMS who want an agent to manage content and pages.
Ahead on
- Security & auth, 63 against 57
Also in its favour
- Runs on your own machine
- No incidents deducted, where Payload loses 15 points for them
Watch for
Pre-1.0 package, with the dev docs still pointing at the beta tag
Payload D
Best for Teams that build on Next.js and want the content model in TypeScript, with drafts, versions and localisation in the free core.
Ahead on
- Reliability, 76 against 47
- Schema & documentation, 70 against 65
- Payments & pricing, 45 against 35
- Transparency & trust, 65 against 54
Also in its favour
- Open source
Watch for
38 security advisories on OSV in the 12 months to 4 November 2026, 7 critical, 28 published on 6 and 7 October
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Reliability Payload +29
dotCMS 47
Read with the local-software lines, since the MCP server is a stdio package the owner runs against their own instance. Official npm package with Node 20 or later and Bun stated (20). The monorepo has CI and the MCP app has vitest tests and smoke tests; whether they pass on main wasn't read (12 of 25). Open issues weren't read because the GitHub API refused us for its rate limit (10 of 25). 0.1.0 and 0.1.1 without release notes for the package (5 of 15). Pre-1.0, and the dev docs still call it beta (0). 20+12+10+5+0 = 47.
Payload 76
Read with the local-software lines, since the graded surface is software its owner hosts. Official npm packages, with Node.js ^22.23.4 || >=24.22.1 in engines and in the installation docs since 3.92.0 (20). A public ci workflow runs unit, type, integration and end-to-end tests on every push to 3.x. GitHub's pages and API couldn't be read on 4 November, so the result is unread (15 of 25). 499 issues were open on 8 October, 140 of them awaiting triage, with 225 opened and 116 closed since 10 July 2026, not re-read (12 of 25). A written semver policy marks breaking commits with ! and lists them in release notes, but lets security fixes and experimental APIs change in minor releases (14 of 15). 3.x is the stable line, with 4.0 in beta (15).
Transparency & trust Payload +11
dotCMS 54
dotCMS core is under the Business Source License 1.1, source-available rather than OSI, with an additional use grant under $5 million; the MCP package is GPL-3.0 on npm (20 of 30). The privacy policy of 8 September 2026 covers website visitors only; no cloud data-handling terms were found (10 of 30). A deprecations page, an LTS lifecycle and dated changelogs (16 of 20). Telemetry and sub-processors weren't established (5 of 20). 20+10+16+5 = 51.
Payload 65
MIT for the core and official packages, with LICENSE.md in the repository (30). A self-hosted install keeps content on its owner's servers. The privacy policy dates from 28 March 2024, states no retention periods that we could find and doesn't mention Figma. The only published terms cover Payload Cloud, which is closed to new projects (15 of 30). A written versioning policy defines breaking changes and how they're announced, with a migration guide per major. No end-of-support date for 3.x was found (13 of 20). Telemetry is on by default, documented as completely anonymous and turned off with telemetry: false. The docs don't list the fields sent. The 3.92.1 source sends versions, adapters, plugins, locales, a random install ID and project, domain and user IDs hashed with the install's own secret (16 of 20).
Payments & pricing Payload +10
dotCMS 35
Scored with the self-hosted rule, with prices from the cloud plans. No x402, MPP or L402 (0). Cloud prices are on request only (0). Free with every capability under $5 million in revenue under the BSL, with no card (20). Self-hosting needs no dotCMS account, and tokens can be minted by API on one's own instance (15 of 20). 0+0+20+15 = 35.
Payload 45
Scored with the self-hosted rule. No x402, MPP or L402 (0). The software is free under MIT, which the get-started page states. The only paid option, Enterprise, is priced by sales, and Payload Cloud is closed to new projects, so 15 of 20. No card and no account at Payload are needed (20). npx create-payload-app installs it, but the docs create REST and MCP API keys in the admin panel, so half (10).
Security & auth dotCMS +6
dotCMS 63
JWT API tokens per user with role permissions and an expiry, created only by administrators (25 of 30). A read-only token can be made through a restricted role, but the MCP server asks for write permission; workflows support multiple-approval steps (14 of 20). Content returned from the CMS reaches the agent, and the sandbox isolates the token, with no prompt-injection guidance (5 of 15). Audit logging for API calls wasn't established in the pages read (5 of 15). A valid security.txt with PGP, a responsible disclosure policy with bounties, LTS security backports and a public list of known security issues, which is drawn by script and couldn't be read. No certification was found (14 of 20). 25+14+5+5+14 = 63.
Payload 57
REST keys are per user, revocable and regenerable, shown once, and limited by that user's access control down to field level. MCP keys carry per-collection, per-operation switches. Both travel only in the Authorization header. Neither expires, and there is no OAuth (24 of 30). A find-only MCP key is a config switch away and the collection's access control still runs under it. Nothing asks a person to approve a delete or a publish in the free edition (14 of 20). Documents hold text written by other people, and no prompt-injection guidance was found. overrideResponse can strip fields before they reach a model (3 of 15). Versions record each change, and onEvent and verboseLogs expose MCP calls to the owner's own logging. No built-in audit log (7 of 15). SECURITY.md gives a reporting address and, since 16 October 2026, says Payload pays no monetary rewards and runs no bug bounty. Advisories are published on GitHub with affected versions, patches and workarounds. No security.txt or SOC 2 statement was found (9 of 20).
Schema & documentation Payload +5
dotCMS 65
The search tool exposes the instance's own OpenAPI spec, so the contract is machine-readable, though the tools themselves take JavaScript code (20 of 25). llms.txt and Markdown pages on dev.dotcms.com (10). The README says what each tool is for and gives examples; when not to use them isn't stated (12 of 20). Code strings rather than typed parameters for search and execute (4 of 15). Examples for both tools; error behaviour of the sandbox isn't documented (9 of 15). dotCMS changelogs are dated; the MCP package has no changelog (10 of 15). 20+10+12+4+9+10 = 65.
Payload 70
No OpenAPI file is published or generated by the core packages, because endpoints depend on each project's config. Every MCP tool carries a typed input schema built from the collection's fields, and the GraphQL schema is generated from the same config (20 of 25). llms.txt per major version, llms-full.txt and a Markdown copy of every docs page (10). Default MCP tool descriptions are one line, such as Create a document in a collection., unless the owner writes one in the plugin config. The docs tell owners to do so (10 of 20). Field inputs are typed with bounds on limit and depth, but where is JSON passed as a string. select became an object in the MCP find tools in 3.91.0 (10 of 15). REST operations show a request and a response each. No reference page for error responses or status codes was found (8 of 15). Semver, release notes on GitHub and separate docs per major version. REST paths carry no version (12 of 15).
Score by category
| Category | Weight this run | dotCMS | Payload | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 47 | 76 | Payload +29 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 65 | 70 | Payload +5 |
| Agent ergonomics | 13%16.2 | 68 | 64 | dotCMS +4 |
| Security & auth | 14%17.5 | 63 | 57 | dotCMS +6 |
| Payments & pricing | 10%12.5 | 35 | 45 | Payload +10 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 75 | 78 | Payload +3 |
| Transparency & trust | 7%8.8 | 54 | 65 | Payload +11 |
| Negative events | ≤15 | 0 | -15 | |
| Total | C 57.7/100 | D 50.1/100 |
Facts side by side
| Fact | dotCMS | Payload |
|---|---|---|
| Kind | MCP server | HTTP API |
| Vendor | dotCMS LLC | Payload CMS, Inc. (Figma) |
| Hosted endpoint | no (local only) | no (local only) |
| Transports | stdio | HTTP, Streamable HTTP |
| Auth | API key | API key |
| Pricing | Freemium | Free |
| x402 | no | no |
| Licence | BUSL-1.1 | MIT for the core and the official packages. Enterprise add-ons are sold separately through sales |
| Tools exposed | 7 | none |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-09-02 | 2026-10-27 |
| Terms last updated | no date given | no document linked |
| Privacy policy last updated | 2026-09-08 | 2024-03-28 |
| Customer content may train models | not found in the text | not read yet |
| Terms restrict automated access | not found in the text | not read yet |
| Terms restrict benchmarking | not found in the text | not read yet |
| Terms or service can change without notice | not found in the text | not read yet |
| Arbitration or class-action waiver | not found in the text | not read yet |
| Popularity | 43 npm/wk | 45k stars, 1.1M npm/wk |
How the scores have moved
dotCMS
No score change since it was listed.
Verdicts
dotCMS
dotCMS's MCP server keeps the tool list to seven by letting the agent search the instance's OpenAPI spec and run API calls in a sandbox that never sees the token. It is a pre-1.0 package that needs a write token, and cloud prices are on request.
Payload
Payload generates REST, GraphQL and MCP interfaces from one typed config, with drafts, restorable versions and per-key MCP permissions in the free MIT core. The security record is the limit. 38 advisories were published in the 12 months to November 2026, most on 6 and 7 October, so an install older than 3.90.0 is exposed. No OpenAPI file is published.
Before you call either
dotCMS
- Search the spec with
searchbefore writing anexecutecall, and return only the fields you need - Use a token for a dedicated user and role, not an administrator's
- Confirm with the user before execute calls that publish, archive or delete content
- Keep results small with pick and first, since output is capped at about 25,000 characters
- Use download_assets for theme folders so files land on disk instead of in context
Payload
- Check the installed version first. Anything below 3.90.0 carries published critical advisories, and 3.92.0 and later need Node.js 22.23.4 or 24.22.1, so ask the owner to upgrade before writing
- Send REST keys as
Authorization: {collection-slug} API-Key {key}and MCP keys asAuthorization: Bearer {key}. The two key kinds are separate - To publish, set
_status: 'published'in the data. Thedraftparameter only relaxes validation and chooses where an update is written - Upload files with multipart POST to the upload collection, with other fields as JSON in
_payload. No MCP upload tool is documented - Roll back with
POST /api/{collection-slug}/versions/:idafter listing versions. Versions exist only where the collection config enables them
Questions
Which is better for AI agents, dotCMS or Payload?
dotCMS scores 57.7 (C) on agent readiness against Payload's 50.1 (D), and leads in 2 of 7 scored categories. Payload leads on reliability, schema & documentation, payments & pricing and transparency & trust.
Do dotCMS and Payload need an API key?
Both need an API key.
Can an agent call dotCMS and Payload without installing anything?
dotCMS runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Payload.
Are dotCMS and Payload open source?
No open-source release is listed for dotCMS. Payload is open source (MIT for the core and the official packages. Enterprise add-ons are sold separately through sales).
Other comparisons with dotCMS or Payload
- BCMS vs dotCMS
- BCMS vs Payload
- ButterCMS vs dotCMS
- ButterCMS vs Payload
- Contentstack vs dotCMS
- Contentstack vs Payload
- Cosmic vs dotCMS
- Cosmic vs Payload
- DatoCMS vs dotCMS
- DatoCMS vs Payload
- Directus vs dotCMS
- Directus vs Payload
- dotCMS vs Ghost
- dotCMS vs Hygraph
- dotCMS vs Kontent.ai
- dotCMS vs Prismic
- dotCMS vs Sanity
- dotCMS vs Storyblok
- dotCMS vs Strapi
- dotCMS vs Webflow
- dotCMS vs WordPress
- Ghost vs Payload
- Hygraph vs Payload
- Kontent.ai vs Payload
- Payload vs Prismic
- Payload vs Sanity
- Payload vs Storyblok
- Payload vs Strapi
- Payload vs Webflow
- Payload vs WordPress
Machine-readable
- This page as Markdown
/compare/dotcms-vs-payload.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/dotcms.json·/api/v1/tools/payload.json - From a terminal
anchor compare dotcms payload(the CLI) - Over MCP
compare_tools {"a": "dotcms", "b": "payload"}at/mcp, no key