{
  "data": {
    "a": {
      "slug": "dotcms",
      "name": "dotCMS",
      "vendor": "dotCMS LLC",
      "vendorUrl": "https://www.dotcms.com",
      "kind": "mcp",
      "category": "cms",
      "summary": "dotCMS is an enterprise CMS with headless REST APIs, workflows and push publishing, run as dotCMS Cloud or self-hosted. Agents use the @dotcms/mcp-server package, which searches the instance's OpenAPI spec and runs API calls in a sandbox.",
      "url": "https://www.anchorterminal.com/tools/dotcms",
      "markdownUrl": "https://www.anchorterminal.com/tools/dotcms.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dotcms.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dotcms.json",
      "dns": "dotcms.grade.anchorterminal.com",
      "repo": "https://github.com/dotCMS/core",
      "license": "BUSL-1.1",
      "transports": [
        "stdio"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@dotcms/mcp-server"
        }
      ],
      "auth": "api-key",
      "authNotes": "The MCP server reads DOTCMS_URL and AUTH_TOKEN. API tokens are JWTs issued for a dotCMS user, carry that user's role permissions, take an expiry in days, and are created by administrators in the user manager or through /api/v1/authentication/api-token. The docs recommend a separate user and role per application; the MCP server needs write permission for content types, content and workflows. Tokens are injected outside the sandbox, so sandboxed code never sees them.",
      "pricing": "freemium",
      "pricingNotes": "dotCMS is free with every capability for companies under $5 million in revenue under its BSL licence, self-hosted. Cloud plans (Starter, Professional, Business, Enterprise) are priced on request, with monthly request and bandwidth allowances and SLAs of 99.5 to 99.9 per cent.",
      "priceSummary": "Freemium",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the MCP README, the dev docs or the pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": 7,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 43,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://dev.dotcms.com/docs/build/integrations/dotai/mcp-server",
      "llmsTxt": "https://dev.dotcms.com/llms.txt",
      "capabilities": [
        "cms.content",
        "cms.publish",
        "cms.assets",
        "cms.schema",
        "cms.localisation"
      ],
      "tags": [
        "official",
        "mcp",
        "stdio",
        "self-hosted",
        "hosted",
        "source-available",
        "llms-txt",
        "sales-led",
        "sla",
        "typescript"
      ],
      "lastRelease": "2026-09-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.7,
        "grade": "C",
        "agentReady": false,
        "rank": 784,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 75,
          "payments": 35,
          "reliability": 47,
          "schema": 65,
          "security": 63,
          "transparency": 54
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Enterprises already on dotCMS who want an agent to manage content and pages.",
        "strengths": [
          "Seven tools in code mode, with the instance's OpenAPI spec searchable from the sandbox",
          "The API token stays outside the sandbox, which only receives results",
          "JWT tokens per user with role permissions and an expiry",
          "security.txt with PGP, a bounty-backed disclosure policy and LTS security backports",
          "Free with every capability for organisations under $5 million in revenue"
        ],
        "weaknesses": [
          "Pre-1.0 package, with the dev docs still pointing at the beta tag",
          "The server needs a token with write permission for content types, content and workflows",
          "execute can call any endpoint, and no read-only mode or annotations were found",
          "Cloud prices are on request only",
          "Source-available under the BSL, not an OSI licence"
        ],
        "agentNotes": [
          "Search the spec with `search` before writing an `execute` call, 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"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57.7
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 75,
          "payments": 35,
          "reliability": 47,
          "schema": 65,
          "security": 63,
          "transparency": 51
        },
        "provenanceScore": 57,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npx -y @dotcms/mcp-server",
        "config": {
          "mcpServers": {
            "dotcms": {
              "args": [
                "-y",
                "@dotcms/mcp-server"
              ],
              "command": "npx",
              "env": {
                "AUTH_TOKEN": "your-api-token",
                "DOTCMS_URL": "https://your-dotcms-instance.com"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cms.content",
        "tool": "https://letme.dev/dotcms"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "dotCMS LLC",
        "domain": "dotcms.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://github.com/dotCMS/core/blob/main/LICENSE",
        "privacy": "https://dev.dotcms.com/docs/manage/access-and-security/security-and-privacy/privacy-policy",
        "statusPage": "",
        "changelog": "https://dev.dotcms.com/docs/reference/releases/product-versions/changelogs",
        "securityTxt": "valid",
        "checked": "2026-11-06",
        "notes": [
          "The MCP server runs locally and calls the customer's own dotCMS instance, so the endpoint isn't on a dotCMS domain.",
          "The privacy policy, last updated 8 September 2026, covers dotCMS's websites only and names dotCMS Holdings, LLC, dotCMS Services LLC and dotCMS LLC.",
          "www.dotcms.com/robots.txt disallows /docs/ and /utils/; dev.dotcms.com allows all with Content-Signal ai-train=yes, search=yes, ai-input=yes.",
          "www.dotcms.com/terms-of-service and /privacy-policy returned 404; no cloud terms of service were found, so the licence stands in for terms.",
          "No status page answered (status.dotcms.com refused the connection)."
        ],
        "score": 57
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/dotcms.json",
      "live": {
        "slug": "dotcms",
        "versions": [
          {
            "registry": "github",
            "name": "dotCMS/core",
            "version": "dotcms-cli-26.11.06-03",
            "released": "2026-11-06",
            "seenAt": "2026-11-06T23:22:22.409374032Z"
          },
          {
            "registry": "npm",
            "name": "@dotcms/mcp-server",
            "version": "0.1.1",
            "seenAt": "2026-11-06T23:22:21.577680774Z"
          }
        ],
        "githubStars": 971,
        "npmWeekly": 43,
        "securityTxt": {
          "url": "https://dotcms.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-06-09T23:59:59.000Z",
          "checkedAt": "2026-11-07T16:00:46.289271049Z"
        },
        "llmsTxt": {
          "url": "https://dev.dotcms.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:19.058875451Z"
        },
        "pages": [
          {
            "url": "https://dev.dotcms.com/docs/reference/releases/product-versions/changelogs",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:02:43.439634709Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "14706a7e3d20"
          },
          {
            "url": "https://dev.dotcms.com/docs/manage/access-and-security/security-and-privacy/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:02:39.904485204Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b8fe703d4258"
          },
          {
            "url": "https://raw.githubusercontent.com/dotCMS/core/main/LICENSE",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:41.976083247Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1dd3baa6b46f"
          }
        ],
        "updatedAt": "2026-11-07T16:00:46.289271049Z"
      }
    },
    "answer": "Kontent.ai scores 70.6 (BB) on agent readiness against dotCMS's 57.7 (C), and leads in 6 of 7 scored categories. dotCMS leads on payments \u0026 pricing.",
    "b": {
      "slug": "kontent-ai",
      "name": "Kontent.ai",
      "vendor": "Kontent CZ s.r.o.",
      "vendorUrl": "https://kontent.ai",
      "kind": "http-api",
      "category": "cms",
      "summary": "Kontent.ai is a hosted headless CMS from Kontent CZ s.r.o. in Brno. Its Management API v2 reads and writes content items, language variants, assets, content models and workflow steps, and an MCP server wraps it, hosted or run locally.",
      "url": "https://www.anchorterminal.com/tools/kontent-ai",
      "markdownUrl": "https://www.anchorterminal.com/tools/kontent-ai.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/kontent-ai.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/kontent-ai.json",
      "dns": "kontent-ai.grade.anchorterminal.com",
      "repo": "https://github.com/kontent-ai/mcp-server",
      "license": "Proprietary service under the Kontent.ai Terms of Service. The management SDKs for JavaScript and .NET and the MCP server on GitHub are MIT",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://manage.kontent.ai/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "@kontent-ai/management-sdk"
        },
        {
          "registry": "npm",
          "name": "@kontent-ai/mcp-server"
        }
      ],
      "auth": "api-key",
      "authNotes": "A Bearer API key in the `Authorization` header. A project manager creates a Management API key in the web app under Project settings, API keys, and picks its permissions (read content, edit content, read assets, edit assets, content model, environment settings), the environments it reaches and its expiry (1 minute to 2 years, 6 months by default). A Personal API key inherits its owner's role instead. Regenerating a key revokes the old one after a few minutes. No OAuth flow and no API for creating keys was found. The Management API has to be enabled per environment.",
      "pricing": "paid",
      "pricingNotes": "No public price. The pricing page shows sliders for user seats, content types and content items and a form that requests a calculation, and the terms put the price, limits and overage unit prices in an order form. A 30-day trial needs no card and includes API access. The terms mention a Developer Plan, which the pricing page does not show (checked 2026-10-09).",
      "priceSummary": "Paid",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Management API docs, the MCP server README or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 54,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 8381,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://kontent.ai/learn/docs/apis/management-api-v2",
      "llmsTxt": "https://kontent.ai/llms.txt",
      "registryName": "io.github.kontent-ai/mcp-server",
      "capabilities": [
        "cms.content",
        "cms.publish",
        "cms.assets",
        "cms.localisation",
        "cms.schema"
      ],
      "tags": [
        "official",
        "hosted",
        "closed-source",
        "api-key",
        "mcp",
        "free-trial",
        "no-card",
        "sales-led",
        "llms-txt",
        "typescript",
        "dotnet",
        "webhooks",
        "graphql",
        "status-page",
        "soc2",
        "iso27001",
        "audit-log"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 194,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 83,
          "payments": 20,
          "reliability": 82,
          "schema": 74,
          "security": 81,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "Management API keys take per-area permissions, environment limits and an expiry from one minute to two years, and changes made with a key are named in the audit log. Rate limits and Retry-After are documented. No price is published, and no OpenAPI file was found. Access starts with a 30-day trial that a person opens in a browser.",
        "bestFor": "A company already on Kontent.ai, or evaluating it on a trial, that wants an agent to draft, localise, move through workflow and publish structured content with a permission-limited key and an audit trail.",
        "strengths": [
          "Management API keys carry selectable permissions (read content, edit content, assets, content model, environment settings), environment limits and an expiry from 1 minute to 2 years",
          "Rate limits are published (10 requests a second and 400 a minute per environment), and a 429 carries a Retry-After header",
          "The audit log keeps 90 days of changes and names the API key that made each one. Content item changes were added on 2 October 2026",
          "All 54 tools in the open-source MCP server (MIT, 0.39.0) set readOnlyHint and destructiveHint, and Kontent.ai has hosted the server since 22 October 2026",
          "security.txt is valid to July 2027, with a disclosure policy that pays discretionary rewards, and the trust centre lists SOC 2 Type 2 and ISO 27001, 27017, 27018 and 42001",
          "The sub-processor page names each vendor, its location and the data sent, and projects can be stored in the US, the Netherlands, Australia or Canada"
        ],
        "weaknesses": [
          "No price is published. The pricing page shows sliders for seats, content types and items and a form that requests a quote",
          "No OpenAPI file was found. The docs link a Postman collection, which we did not read",
          "Access needs a person. The 30-day trial needs no card, but sign-up, the Management API toggle and key creation happen in the web app",
          "No idempotency keys. The docs advise against parallel requests, saying they may cause inconsistencies in content",
          "The availability annex covers the administration interface and the Delivery API, not the Management API, and the guaranteed level sits in each order form",
          "The Terms of Service forbid automated access to the Service unless the procedure is described in the documentation. This matters before any probe is run",
          "The MCP server loads 54 tools in 0.39.0, 22 of them marked destructive, and the hosted copy runs only the latest version, so tool names can change without a pinned release"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer \u003ckey\u003e` to `https://manage.kontent.ai/v2/projects/{environment_id}/...`. The Management API must be switched on under Environment settings, General, Enabled APIs first",
          "Ask for a Management API key with only the permissions the task needs. Read content alone gives a read-only key, and keys expire after six months by default",
          "Stay under 10 requests a second and 400 a minute per environment, send requests one at a time, and wait the seconds in Retry-After on a 429",
          "Page lists by passing the `continuation_token` from the response back in the `x-continuation` header",
          "Create items with an `external_id` and write with the upsert PUT at `/items/external-id/{id}` so a retry after a lost response does not create a duplicate",
          "With the MCP server, connect to https://manage-mcp.kontent.ai/mcp with a Management API key in the Authorization header, pass the environment ID as a tool input, call `get-patch-guide` before any patch tool, and use a client that prompts on destructiveHint"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.6
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 83,
          "payments": 20,
          "reliability": 82,
          "schema": 74,
          "security": 81,
          "transparency": 69
        },
        "provenanceScore": 83,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-10-27",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm i @kontent-ai/management-sdk --save",
        "http": "curl --request GET \\\n  --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items \\\n  --header 'Authorization: Bearer KONTENT_AI_MANAGEMENT_API_KEY' \\\n  --header 'Content-type: application/json'",
        "claudeCode": "claude mcp add --transport http kontent-ai https://manage-mcp.kontent.ai/mcp --header \"Authorization: Bearer $KONTENT_MANAGEMENT_API_KEY\"",
        "config": {
          "mcpServers": {
            "kontent-ai": {
              "headers": {
                "Authorization": "Bearer \u003cmanagement-api-key\u003e"
              },
              "url": "https://manage-mcp.kontent.ai/mcp"
            },
            "kontent-ai-stdio": {
              "args": [
                "@kontent-ai/mcp-server@latest",
                "stdio"
              ],
              "command": "npx",
              "env": {
                "KONTENT_API_KEY": "\u003cyour-management-api-key\u003e",
                "KONTENT_ENVIRONMENT_ID": "\u003cyour-environment-id\u003e"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/cms.content",
        "tool": "https://letme.dev/kontent-ai"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "Kontent CZ s.r.o.",
        "domain": "kontent.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://kontent.ai/terms-of-service/",
        "privacy": "https://kontent.ai/privacy/",
        "statusPage": "https://status.kontent.ai",
        "changelog": "https://kontent.ai/learn/product-updates",
        "securityTxt": "valid",
        "checked": "2026-10-09",
        "notes": [
          "The Terms of Service effective 11 September 2026 name Kontent CZ s.r.o., Nové sady 996/25, 602 00 Brno, Czech Republic, company number 173 00 576, or an affiliate named in the order form. The Data Processing Addendum and the availability and AI annexes are part of the same page.",
          "The privacy policy effective 2 June 2025 is issued by Kontent s.r.o. at the same address with Kontent CZ s.r.o. and Kontent US, LLC as joint controllers, and has a section for users of the product.",
          "The Management API answers at manage.kontent.ai, a kontent.ai subdomain.",
          "kontent.ai/.well-known/security.txt gives security@kontent.ai, a PGP key, the disclosure policy and an Open Bug Bounty page, and expires on 21 July 2027.",
          "The domain's registration date was not looked up."
        ],
        "score": 83
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/kontent-ai.json",
      "live": {
        "slug": "kontent-ai",
        "probe": {
          "target": "https://manage.kontent.ai/v2",
          "method": "get",
          "lastAt": "2026-11-07T19:22:15.326668738Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 424,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 297,
          "p95ms24h": 538,
          "samples24h": 238,
          "samples30d": 7215,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.kontent.ai",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:22:18.739822889Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "kontent-ai/mcp-server",
            "version": "0.39.0",
            "released": "2026-08-31",
            "seenAt": "2026-11-06T23:37:41.655601439Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.kontent-ai/mcp-server",
            "version": "0.39.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@kontent-ai/management-sdk",
            "version": "8.5.7",
            "seenAt": "2026-11-06T23:37:39.461234502Z"
          },
          {
            "registry": "npm",
            "name": "@kontent-ai/mcp-server",
            "version": "0.39.0",
            "seenAt": "2026-11-06T23:37:39.665782017Z"
          }
        ],
        "githubStars": 10,
        "npmWeekly": 44411,
        "securityTxt": {
          "url": "https://kontent.ai/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-07-21T13:25:39.664Z",
          "checkedAt": "2026-11-07T16:01:47.405249094Z"
        },
        "llmsTxt": {
          "url": "https://kontent.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:50.28624327Z"
        },
        "domain": {
          "domain": "kontent.ai",
          "registered": "2019-04-08",
          "source": "https://rdap.identitydigital.services/rdap/domain/kontent.ai",
          "checkedAt": "2026-11-01T14:27:51.149194487Z"
        },
        "pages": [
          {
            "url": "https://kontent.ai/learn/product-updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:12:11.426161532Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3f0ce279378b"
          },
          {
            "url": "https://kontent.ai/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:12:13.635895759Z",
            "changedAt": "2026-10-28T04:19:57.023473647Z",
            "fingerprint": "d4ba4e08abd9"
          },
          {
            "url": "https://kontent.ai/terms-of-service/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:12:16.41753159Z",
            "changedAt": "2026-10-28T04:19:59.296456217Z",
            "fingerprint": "8bf457cf63cb"
          }
        ],
        "mcpTools": {
          "url": "https://manage-mcp.kontent.ai/mcp",
          "checkedAt": "2026-11-07T01:45:40.642663822Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:45:40.642663822Z"
        },
        "github": {
          "repo": "kontent-ai/mcp-server",
          "checkedAt": "2026-11-02T08:59:09.501234368Z",
          "stars": 10,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-31T07:24:09Z",
          "openIssues": 0,
          "openPRs": 13,
          "issuesOpened90d": 14,
          "issuesClosed90d": 15,
          "prsMerged90d": 24,
          "ci": {
            "branch": "master",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-05T05:57:10Z"
          },
          "replies": {
            "sampled": 18,
            "unanswered": 0,
            "medianDays": 3.8
          }
        },
        "updatedAt": "2026-11-07T19:22:15.326668738Z"
      }
    },
    "edges": [
      {
        "by": 35,
        "category": "reliability",
        "leads": "kontent-ai",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "Read with the hosted lines and scored on the Management API. status.kontent.ai is a Statuspage site with components by region, the Management REST API among them, and an incident history (20). Re-read on 1 November, its feed lists three incidents between 3 August and 1 November 2026. The GraphQL service was disrupted for about 31 minutes on 16 September with the Management API unaffected, content item saves failed for about 40 minutes on 24 September for a subset of EU projects using regex validation, and requests to the deprecated `*.kenticocloud.com` domain pattern failed from 13:30 to 16:06 UTC on 20 October after a registrar change. Each hit one service or a subset of requests, so we read them as minor. The 29 July login incident has left the window (20). Rate limits have numbers, 10 requests a second and 400 a minute per environment, re-read on 1 November (15). A 429 carries Retry-After, the docs call each failed request safe to retry and ask for a retry policy on 5xx. There are no idempotency keys, though the upsert PUT by external ID repeats safely (13 of 15). Annex 4 of the terms defines availability with a refund formula, but the guaranteed level is in each order form and the definition names the administration interface and the Delivery API, not the Management API (4 of 10). Management API v2 is generally available. The open-source MCP server is at 0.39.0, and Kontent.ai has hosted it at manage-mcp.kontent.ai since 22 October (10)."
        },
        "scores": {
          "a": 47,
          "b": 82
        }
      },
      {
        "by": 22,
        "category": "transparency",
        "leads": "kontent-ai",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "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.",
          "b": "The service is closed under Terms of Service effective 11 September 2026, re-read on 1 November. The SDKs and MCP server are MIT (15). The terms include a Data Processing Addendum and an AI annex that rules out training on customer content, and the privacy policy of 2 June 2025 covers product users. The periods differ by document. Content is kept 30 days after a subscription ends, the addendum says personal data is returned or deleted within 14 days, and the privacy policy keeps account data up to 90 days (23 of 30). No deprecation policy with a notice period was found. Removals are announced with dates, such as Sitemap on 14 July for 30 September 2026, and the terms give 14 days to object to a material change. The hosted MCP docs say only the latest server version runs, so tool names and behaviour can change between versions (13 of 20). The sub-processor page names each vendor with its address, location and the data sent, Anthropic and Microsoft among them, and the four data centre regions are documented, per the 9 October check, not re-read on 1 November (18 of 20)."
        },
        "scores": {
          "a": 54,
          "b": 76
        }
      },
      {
        "by": 18,
        "category": "security",
        "leads": "kontent-ai",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "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.",
          "b": "Management API keys have selectable permissions, environment limits, an expiry from 1 minute to 2 years (6 months by default), email reminders before expiry and revocation by regenerating. Keys travel only in the `Authorization` header, and the hosted MCP server takes a Management API key in that header and rejects personal keys. There is no OAuth (27 of 30). A key can be read-only, the API follows the workflow transition rules, and the MCP server marks 22 tools destructive so a client can prompt. Neither surface has its own confirmation step (15 of 20). Content is written by a project's own users and can carry instructions. The MCP README and, since the hosted server, the MCP docs page warn about prompt injection and recommend a least-privilege key. The API docs say nothing on it (10 of 15). The audit log keeps 90 days and names the API key behind each change, with content item changes included since 2 October 2026. No API for reading it was found (12 of 15). security.txt is valid to 21 July 2027, re-read on 1 November, the disclosure policy has a safe harbour and discretionary rewards, a penetration testing policy lets customers test, and the trust centre lists SOC 2 Type 2 and ISO 27001, 27017, 27018 and 42001. Reports are gated and no public advisories were found. We did not search NVD (17 of 20)."
        },
        "scores": {
          "a": 63,
          "b": 81
        }
      },
      {
        "by": 15,
        "category": "payments",
        "leads": "dotcms",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "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.",
          "b": "Read with the hosted rubric. No x402, MPP or L402 (0). The pricing page, re-read on 1 November, publishes no figure. It shows sliders and a form that requests a calculation, and the terms place prices in an order form (0). The trial page says 30 days free with no credit card and full API access. We did not run the sign-up form (20). A person signs up in a browser, enables the Management API and creates the key in the web app (0)."
        },
        "scores": {
          "a": 35,
          "b": 20
        }
      },
      {
        "by": 9,
        "category": "schema",
        "leads": "kontent-ai",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "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.",
          "b": "No OpenAPI file was found on the docs pages read. The reference links a Postman collection in a public workspace, which we did not read, and the MCP server's tools have typed schemas in its source (15 of 25). kontent.ai/llms.txt exists and is an index of marketing and docs pages. No Markdown copies of the docs were found, only PDF downloads (5 of 10). Each endpoint states its purpose and its limits, for example that scheduling a published variant has no effect and which endpoint to use instead (15 of 20). Attributes are typed with required, read-only and write-only flags, formats and length limits. Element values vary by element type (12 of 15). Each operation has request samples in TypeScript, C# and cURL, response status codes and an error object with validation paths (13 of 15). The version is in the path, product updates are dated with an RSS feed, breaking changes can be had by email, and a page lists which changes are not treated as breaking (14 of 15). The reference pages are per the 9 October check, not re-read on 1 November."
        },
        "scores": {
          "a": 65,
          "b": 74
        }
      },
      {
        "by": 8,
        "category": "maintenance",
        "leads": "kontent-ai",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "dotCMS core tagged v26.11.06-03 on 6 November 2026; the MCP package's last release was 0.1.1 on 2 September (30). Core tags several times a week (20). GitHub issues and a community forum; response times weren't read because the GitHub API refused us for its rate limit (10 of 25). Not in the official MCP registry; official JavaScript client libraries (8 of 15). The MCP package's dependencies and CI state weren't read (7 of 10). 30+20+10+8+7 = 75.",
          "b": "The newest product update is dated 30 October 2026 (Aiko Agent and Expert agents generally available), after the hosted MCP server on 22 October, and the JavaScript SDK repository's last commit is 22 October (30). Nine product updates fall between 3 August and 1 November 2026, from 14 August to 30 October. The MCP server tagged 0.38.0 (11 August), 0.38.1 (18 August) and 0.39.0 (31 August), and the JavaScript SDK 8.5.5 (18 August), 8.5.6 and 8.5.7 (21 September) (20). Closed service with a dated changelog and RSS feed, in-app chat stated as 24/7 on all plans and a Discord community. We did not test a support channel (11 of 15). Official SDKs for JavaScript and .NET (.NET 8.3.1 tagged on 17 July 2026), and the official MCP registry lists io.github.kontent-ai/mcp-server with 0.39.0 as the latest active version, read on 1 November (15). The repositories have build and test workflows and pinned, recent dependencies. We did not see CI results (7 of 10)."
        },
        "scores": {
          "a": 75,
          "b": 83
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "dotCMS LLC",
        "b": "Kontent CZ s.r.o.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://manage.kontent.ai/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio",
        "b": "HTTP, stdio, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "BUSL-1.1",
        "b": "Proprietary service under the Kontent.ai Terms of Service. The management SDKs for JavaScript and .NET and the MCP server on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "7",
        "b": "54",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.kontent-ai/mcp-server",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-02",
        "b": "2026-10-30",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-09-11",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-08",
        "b": "2025-06-02",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "43 npm/wk",
        "b": "8.4k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Kontent.ai scores 70.6 (BB) on agent readiness against dotCMS's 57.7 (C), and leads in 6 of 7 scored categories. dotCMS leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, dotCMS or Kontent.ai?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do dotCMS and Kontent.ai need an API key?"
      },
      {
        "answer": "dotCMS runs on your own machine, with no hosted endpoint listed. Kontent.ai has a hosted endpoint at https://manage.kontent.ai/v2.",
        "question": "Can an agent call dotCMS and Kontent.ai without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 35 against 20"
        ],
        "also": null,
        "goodFor": "Enterprises already on dotCMS who want an agent to manage content and pages.",
        "slug": "dotcms",
        "watchFor": "Pre-1.0 package, with the dev docs still pointing at the beta tag"
      },
      {
        "aheadOn": [
          "Reliability, 82 against 47",
          "Schema \u0026 documentation, 74 against 65",
          "Security \u0026 auth, 81 against 63",
          "Maintenance \u0026 community, 83 against 75",
          "Transparency \u0026 trust, 76 against 54"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "A hosted endpoint, with nothing to install",
          "Free to start without a card"
        ],
        "goodFor": "A company already on Kontent.ai, or evaluating it on a trial, that wants an agent to draft, localise, move through workflow and publish structured content with a permission-limited key and an audit trail.",
        "slug": "kontent-ai",
        "watchFor": "No price is published. The pricing page shows sliders for seats, content types and items and a form that requests a quote"
      }
    ],
    "history": {
      "dotcms": null,
      "kontent-ai": [
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 70.5,
          "fromGrade": "BB",
          "to": 70.6,
          "toGrade": "BB"
        }
      ]
    },
    "job": {
      "capability": "cms.content",
      "name": "Content management"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-dotcms.json",
        "title": "BCMS vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bcms-vs-kontent-ai.json",
        "title": "BCMS vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/bcms-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-dotcms.json",
        "title": "ButterCMS vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai.json",
        "title": "ButterCMS vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentstack-vs-dotcms.json",
        "title": "Contentstack vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/contentstack-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentstack-vs-kontent-ai.json",
        "title": "Contentstack vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/contentstack-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cosmic-vs-dotcms.json",
        "title": "Cosmic vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/cosmic-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cosmic-vs-kontent-ai.json",
        "title": "Cosmic vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/cosmic-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/datocms-vs-dotcms.json",
        "title": "DatoCMS vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/datocms-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/datocms-vs-kontent-ai.json",
        "title": "DatoCMS vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/datocms-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/directus-vs-dotcms.json",
        "title": "Directus vs dotCMS",
        "url": "https://www.anchorterminal.com/compare/directus-vs-dotcms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/directus-vs-kontent-ai.json",
        "title": "Directus vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/directus-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-ghost.json",
        "title": "dotCMS vs Ghost",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-ghost"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-hygraph.json",
        "title": "dotCMS vs Hygraph",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-hygraph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-payload.json",
        "title": "dotCMS vs Payload",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-payload"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-prismic.json",
        "title": "dotCMS vs Prismic",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-prismic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-sanity.json",
        "title": "dotCMS vs Sanity",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-sanity"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-storyblok.json",
        "title": "dotCMS vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-strapi.json",
        "title": "dotCMS vs Strapi",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-webflow.json",
        "title": "dotCMS vs Webflow",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-webflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dotcms-vs-wordpress.json",
        "title": "dotCMS vs WordPress",
        "url": "https://www.anchorterminal.com/compare/dotcms-vs-wordpress"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ghost-vs-kontent-ai.json",
        "title": "Ghost vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/ghost-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hygraph-vs-kontent-ai.json",
        "title": "Hygraph vs Kontent.ai",
        "url": "https://www.anchorterminal.com/compare/hygraph-vs-kontent-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-payload.json",
        "title": "Kontent.ai vs Payload",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-payload"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-prismic.json",
        "title": "Kontent.ai vs Prismic",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-prismic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-sanity.json",
        "title": "Kontent.ai vs Sanity",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-sanity"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-storyblok.json",
        "title": "Kontent.ai vs Storyblok",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-storyblok"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-strapi.json",
        "title": "Kontent.ai vs Strapi",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-strapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-webflow.json",
        "title": "Kontent.ai vs Webflow",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-webflow"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kontent-ai-vs-wordpress.json",
        "title": "Kontent.ai vs WordPress",
        "url": "https://www.anchorterminal.com/compare/kontent-ai-vs-wordpress"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 35,
        "dotcms": 47,
        "edge": "kontent-ai",
        "key": "reliability",
        "kontent-ai": 82,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "dotcms": 65,
        "edge": "kontent-ai",
        "key": "schema",
        "kontent-ai": 74,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 3,
        "dotcms": 68,
        "edge": "kontent-ai",
        "key": "ergonomics",
        "kontent-ai": 71,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 18,
        "dotcms": 63,
        "edge": "kontent-ai",
        "key": "security",
        "kontent-ai": 81,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 15,
        "dotcms": 35,
        "edge": "dotcms",
        "key": "payments",
        "kontent-ai": 20,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "dotcms": 75,
        "edge": "kontent-ai",
        "key": "maintenance",
        "kontent-ai": 83,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 22,
        "dotcms": 54,
        "edge": "kontent-ai",
        "key": "transparency",
        "kontent-ai": 76,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Kontent.ai scores 70.6 (BB) on agent readiness against dotCMS's 57.7 (C), and leads in 6 of 7 scored categories. dotCMS leads on payments \u0026 pricing. Both do content management.",
    "tasks": null,
    "tutorials": [],
    "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.",
      "kontent-ai": "Management API keys take per-area permissions, environment limits and an expiry from one minute to two years, and changes made with a key are named in the audit log. Rate limits and Retry-After are documented. No price is published, and no OpenAPI file was found. Access starts with a 30-day trial that a person opens in a browser."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai",
    "json": "https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai.min.md"
  },
  "markdown": "Kontent.ai scores 70.6 (BB) on agent readiness against dotCMS's 57.7 (C), and leads in 6 of 7 scored categories. dotCMS leads on payments \u0026 pricing. Both do content management.\n\n- dotCMS: grade C, 57.7/100, rank #784 of 1510. Markdown https://www.anchorterminal.com/tools/dotcms.md · JSON https://www.anchorterminal.com/api/v1/tools/dotcms.json\n- Kontent.ai: grade BB, 70.6/100, rank #194 of 1510. Markdown https://www.anchorterminal.com/tools/kontent-ai.md · JSON https://www.anchorterminal.com/api/v1/tools/kontent-ai.json\n- Best headless CMS and website publishing for AI agents: https://www.anchorterminal.com/best/cms/index.md\n- All 136 cms comparisons: https://www.anchorterminal.com/compare/cms/index.md\n\n## Which one, for what\n\n### dotCMS (C)\n\nGood for: Enterprises already on dotCMS who want an agent to manage content and pages.\n\nAhead on:\n- Payments \u0026 pricing, 35 against 20\n\nWatch for: Pre-1.0 package, with the dev docs still pointing at the beta tag\n\n### Kontent.ai (BB)\n\nGood for: A company already on Kontent.ai, or evaluating it on a trial, that wants an agent to draft, localise, move through workflow and publish structured content with a permission-limited key and an audit trail.\n\nAhead on:\n- Reliability, 82 against 47\n- Schema \u0026 documentation, 74 against 65\n- Security \u0026 auth, 81 against 63\n- Maintenance \u0026 community, 83 against 75\n- Transparency \u0026 trust, 76 against 54\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- A hosted endpoint, with nothing to install\n- Free to start without a card\n\nWatch for: No price is published. The pricing page shows sliders for seats, content types and items and a form that requests a quote\n\n\n## Why the edge\n\n### Reliability: Kontent.ai +35\n\n- 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.\n- Kontent.ai (82): Read with the hosted lines and scored on the Management API. status.kontent.ai is a Statuspage site with components by region, the Management REST API among them, and an incident history (20). Re-read on 1 November, its feed lists three incidents between 3 August and 1 November 2026. The GraphQL service was disrupted for about 31 minutes on 16 September with the Management API unaffected, content item saves failed for about 40 minutes on 24 September for a subset of EU projects using regex validation, and requests to the deprecated `*.kenticocloud.com` domain pattern failed from 13:30 to 16:06 UTC on 20 October after a registrar change. Each hit one service or a subset of requests, so we read them as minor. The 29 July login incident has left the window (20). Rate limits have numbers, 10 requests a second and 400 a minute per environment, re-read on 1 November (15). A 429 carries Retry-After, the docs call each failed request safe to retry and ask for a retry policy on 5xx. There are no idempotency keys, though the upsert PUT by external ID repeats safely (13 of 15). Annex 4 of the terms defines availability with a refund formula, but the guaranteed level is in each order form and the definition names the administration interface and the Delivery API, not the Management API (4 of 10). Management API v2 is generally available. The open-source MCP server is at 0.39.0, and Kontent.ai has hosted it at manage-mcp.kontent.ai since 22 October (10).\n\n### Transparency \u0026 trust: Kontent.ai +22\n\n- 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.\n- Kontent.ai (76): The service is closed under Terms of Service effective 11 September 2026, re-read on 1 November. The SDKs and MCP server are MIT (15). The terms include a Data Processing Addendum and an AI annex that rules out training on customer content, and the privacy policy of 2 June 2025 covers product users. The periods differ by document. Content is kept 30 days after a subscription ends, the addendum says personal data is returned or deleted within 14 days, and the privacy policy keeps account data up to 90 days (23 of 30). No deprecation policy with a notice period was found. Removals are announced with dates, such as Sitemap on 14 July for 30 September 2026, and the terms give 14 days to object to a material change. The hosted MCP docs say only the latest server version runs, so tool names and behaviour can change between versions (13 of 20). The sub-processor page names each vendor with its address, location and the data sent, Anthropic and Microsoft among them, and the four data centre regions are documented, per the 9 October check, not re-read on 1 November (18 of 20).\n\n### Security \u0026 auth: Kontent.ai +18\n\n- 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.\n- Kontent.ai (81): Management API keys have selectable permissions, environment limits, an expiry from 1 minute to 2 years (6 months by default), email reminders before expiry and revocation by regenerating. Keys travel only in the `Authorization` header, and the hosted MCP server takes a Management API key in that header and rejects personal keys. There is no OAuth (27 of 30). A key can be read-only, the API follows the workflow transition rules, and the MCP server marks 22 tools destructive so a client can prompt. Neither surface has its own confirmation step (15 of 20). Content is written by a project's own users and can carry instructions. The MCP README and, since the hosted server, the MCP docs page warn about prompt injection and recommend a least-privilege key. The API docs say nothing on it (10 of 15). The audit log keeps 90 days and names the API key behind each change, with content item changes included since 2 October 2026. No API for reading it was found (12 of 15). security.txt is valid to 21 July 2027, re-read on 1 November, the disclosure policy has a safe harbour and discretionary rewards, a penetration testing policy lets customers test, and the trust centre lists SOC 2 Type 2 and ISO 27001, 27017, 27018 and 42001. Reports are gated and no public advisories were found. We did not search NVD (17 of 20).\n\n### Payments \u0026 pricing: dotCMS +15\n\n- 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.\n- Kontent.ai (20): Read with the hosted rubric. No x402, MPP or L402 (0). The pricing page, re-read on 1 November, publishes no figure. It shows sliders and a form that requests a calculation, and the terms place prices in an order form (0). The trial page says 30 days free with no credit card and full API access. We did not run the sign-up form (20). A person signs up in a browser, enables the Management API and creates the key in the web app (0).\n\n### Schema \u0026 documentation: Kontent.ai +9\n\n- 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.\n- Kontent.ai (74): No OpenAPI file was found on the docs pages read. The reference links a Postman collection in a public workspace, which we did not read, and the MCP server's tools have typed schemas in its source (15 of 25). kontent.ai/llms.txt exists and is an index of marketing and docs pages. No Markdown copies of the docs were found, only PDF downloads (5 of 10). Each endpoint states its purpose and its limits, for example that scheduling a published variant has no effect and which endpoint to use instead (15 of 20). Attributes are typed with required, read-only and write-only flags, formats and length limits. Element values vary by element type (12 of 15). Each operation has request samples in TypeScript, C# and cURL, response status codes and an error object with validation paths (13 of 15). The version is in the path, product updates are dated with an RSS feed, breaking changes can be had by email, and a page lists which changes are not treated as breaking (14 of 15). The reference pages are per the 9 October check, not re-read on 1 November.\n\n### Maintenance \u0026 community: Kontent.ai +8\n\n- dotCMS (75): dotCMS core tagged v26.11.06-03 on 6 November 2026; the MCP package's last release was 0.1.1 on 2 September (30). Core tags several times a week (20). GitHub issues and a community forum; response times weren't read because the GitHub API refused us for its rate limit (10 of 25). Not in the official MCP registry; official JavaScript client libraries (8 of 15). The MCP package's dependencies and CI state weren't read (7 of 10). 30+20+10+8+7 = 75.\n- Kontent.ai (83): The newest product update is dated 30 October 2026 (Aiko Agent and Expert agents generally available), after the hosted MCP server on 22 October, and the JavaScript SDK repository's last commit is 22 October (30). Nine product updates fall between 3 August and 1 November 2026, from 14 August to 30 October. The MCP server tagged 0.38.0 (11 August), 0.38.1 (18 August) and 0.39.0 (31 August), and the JavaScript SDK 8.5.5 (18 August), 8.5.6 and 8.5.7 (21 September) (20). Closed service with a dated changelog and RSS feed, in-app chat stated as 24/7 on all plans and a Discord community. We did not test a support channel (11 of 15). Official SDKs for JavaScript and .NET (.NET 8.3.1 tagged on 17 July 2026), and the official MCP registry lists io.github.kontent-ai/mcp-server with 0.39.0 as the latest active version, read on 1 November (15). The repositories have build and test workflows and pinned, recent dependencies. We did not see CI results (7 of 10).\n\n## Score by category\n\n| Category | Weight | dotCMS | Kontent.ai | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 47 | 82 | Kontent.ai +35 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 65 | 74 | Kontent.ai +9 |\n| Agent ergonomics | 13% (16.2 this run) | 68 | 71 | Kontent.ai +3 |\n| Security \u0026 auth | 14% (17.5 this run) | 63 | 81 | Kontent.ai +18 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 20 | dotCMS +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 75 | 83 | Kontent.ai +8 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 54 | 76 | Kontent.ai +22 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **57.7 · C** | **70.6 · BB** | |\n\n## Facts side by side\n\n| Fact | dotCMS | Kontent.ai |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | dotCMS LLC | Kontent CZ s.r.o. |\n| Hosted endpoint | no (local only) | `https://manage.kontent.ai/v2` |\n| Transports | stdio | HTTP, stdio, Streamable HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | BUSL-1.1 | Proprietary service under the Kontent.ai Terms of Service. The management SDKs for JavaScript and .NET and the MCP server on GitHub are MIT |\n| Tools exposed | 7 | 54 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.kontent-ai/mcp-server` |\n| Last release | 2026-09-02 | 2026-10-30 |\n| Terms last updated | no date given | 2026-09-11 |\n| Privacy policy last updated | 2026-09-08 | 2025-06-02 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 43 npm/wk | 8.4k npm/wk |\n| Agent reviews | none | 3.3/5 (4) |\n\n## How the scores have moved\n\n### dotCMS\n\nNo score change since it was listed.\n\n### Kontent.ai\n\n- +0.1 on 27 October 2026: checklist\n\n## Verdicts\n\n**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.\n\n**Kontent.ai.** Management API keys take per-area permissions, environment limits and an expiry from one minute to two years, and changes made with a key are named in the audit log. Rate limits and Retry-After are documented. No price is published, and no OpenAPI file was found. Access starts with a 30-day trial that a person opens in a browser.\n\n## Before you call either\n\n### dotCMS\n\n1. Search the spec with `search` before writing an `execute` call, and return only the fields you need\n2. Use a token for a dedicated user and role, not an administrator's\n3. Confirm with the user before execute calls that publish, archive or delete content\n4. Keep results small with pick and first, since output is capped at about 25,000 characters\n5. Use download_assets for theme folders so files land on disk instead of in context\n\n### Kontent.ai\n\n1. Send `Authorization: Bearer \u003ckey\u003e` to `https://manage.kontent.ai/v2/projects/{environment_id}/...`. The Management API must be switched on under Environment settings, General, Enabled APIs first\n2. Ask for a Management API key with only the permissions the task needs. Read content alone gives a read-only key, and keys expire after six months by default\n3. Stay under 10 requests a second and 400 a minute per environment, send requests one at a time, and wait the seconds in Retry-After on a 429\n4. Page lists by passing the `continuation_token` from the response back in the `x-continuation` header\n5. Create items with an `external_id` and write with the upsert PUT at `/items/external-id/{id}` so a retry after a lost response does not create a duplicate\n6. With the MCP server, connect to https://manage-mcp.kontent.ai/mcp with a Management API key in the Authorization header, pass the environment ID as a tool input, call `get-patch-guide` before any patch tool, and use a client that prompts on destructiveHint\n\n## Questions\n\n### Which is better for AI agents, dotCMS or Kontent.ai?\n\nKontent.ai scores 70.6 (BB) on agent readiness against dotCMS's 57.7 (C), and leads in 6 of 7 scored categories. dotCMS leads on payments \u0026 pricing.\n\n### Do dotCMS and Kontent.ai need an API key?\n\nBoth need an API key.\n\n### Can an agent call dotCMS and Kontent.ai without installing anything?\n\ndotCMS runs on your own machine, with no hosted endpoint listed. Kontent.ai has a hosted endpoint at https://manage.kontent.ai/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai.json, and with the fewest tokens: https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"dotcms\", \"b\": \"kontent-ai\"}`. From a terminal: `anchor compare dotcms kontent-ai`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/dotcms.json and https://www.anchorterminal.com/api/v1/tools/kontent-ai.json\n\n## Other comparisons with dotCMS or Kontent.ai\n\n- [BCMS vs dotCMS](https://www.anchorterminal.com/compare/bcms-vs-dotcms.md)\n- [BCMS vs Kontent.ai](https://www.anchorterminal.com/compare/bcms-vs-kontent-ai.md)\n- [ButterCMS vs dotCMS](https://www.anchorterminal.com/compare/buttercms-vs-dotcms.md)\n- [ButterCMS vs Kontent.ai](https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai.md)\n- [Contentstack vs dotCMS](https://www.anchorterminal.com/compare/contentstack-vs-dotcms.md)\n- [Contentstack vs Kontent.ai](https://www.anchorterminal.com/compare/contentstack-vs-kontent-ai.md)\n- [Cosmic vs dotCMS](https://www.anchorterminal.com/compare/cosmic-vs-dotcms.md)\n- [Cosmic vs Kontent.ai](https://www.anchorterminal.com/compare/cosmic-vs-kontent-ai.md)\n- [DatoCMS vs dotCMS](https://www.anchorterminal.com/compare/datocms-vs-dotcms.md)\n- [DatoCMS vs Kontent.ai](https://www.anchorterminal.com/compare/datocms-vs-kontent-ai.md)\n- [Directus vs dotCMS](https://www.anchorterminal.com/compare/directus-vs-dotcms.md)\n- [Directus vs Kontent.ai](https://www.anchorterminal.com/compare/directus-vs-kontent-ai.md)\n- [dotCMS vs Ghost](https://www.anchorterminal.com/compare/dotcms-vs-ghost.md)\n- [dotCMS vs Hygraph](https://www.anchorterminal.com/compare/dotcms-vs-hygraph.md)\n- [dotCMS vs Payload](https://www.anchorterminal.com/compare/dotcms-vs-payload.md)\n- [dotCMS vs Prismic](https://www.anchorterminal.com/compare/dotcms-vs-prismic.md)\n- [dotCMS vs Sanity](https://www.anchorterminal.com/compare/dotcms-vs-sanity.md)\n- [dotCMS vs Storyblok](https://www.anchorterminal.com/compare/dotcms-vs-storyblok.md)\n- [dotCMS vs Strapi](https://www.anchorterminal.com/compare/dotcms-vs-strapi.md)\n- [dotCMS vs Webflow](https://www.anchorterminal.com/compare/dotcms-vs-webflow.md)\n- [dotCMS vs WordPress](https://www.anchorterminal.com/compare/dotcms-vs-wordpress.md)\n- [Ghost vs Kontent.ai](https://www.anchorterminal.com/compare/ghost-vs-kontent-ai.md)\n- [Hygraph vs Kontent.ai](https://www.anchorterminal.com/compare/hygraph-vs-kontent-ai.md)\n- [Kontent.ai vs Payload](https://www.anchorterminal.com/compare/kontent-ai-vs-payload.md)\n- [Kontent.ai vs Prismic](https://www.anchorterminal.com/compare/kontent-ai-vs-prismic.md)\n- [Kontent.ai vs Sanity](https://www.anchorterminal.com/compare/kontent-ai-vs-sanity.md)\n- [Kontent.ai vs Storyblok](https://www.anchorterminal.com/compare/kontent-ai-vs-storyblok.md)\n- [Kontent.ai vs Strapi](https://www.anchorterminal.com/compare/kontent-ai-vs-strapi.md)\n- [Kontent.ai vs Webflow](https://www.anchorterminal.com/compare/kontent-ai-vs-webflow.md)\n- [Kontent.ai vs WordPress](https://www.anchorterminal.com/compare/kontent-ai-vs-wordpress.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "dotCMS vs Kontent.ai",
        "url": ""
      }
    ],
    "description": "Kontent.ai scores 70.6 (BB) to dotCMS's 57.7 (C) for content management. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "dotCMS C 57.7",
      "Kontent.ai BB 70.6",
      "scores"
    ],
    "h1": "dotCMS vs Kontent.ai",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/dotcms-vs-kontent-ai",
    "published": "2026-10-01",
    "section": "tools",
    "title": "dotCMS vs Kontent.ai for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/dotcms-vs-kontent-ai"
  },
  "tokens": {
    "markdown": 5100,
    "slim": 3130
  },
  "version": 1
}
