Skip to content

Model Context Protocol

MCP

An API that lets AI agents read and write the same data as the admin, directly. Articles, parts, images, SEO data, tasks and the wiki are all available through 43 tools.

  • 43tools
  • 6categories
  • Scopesset permissions per token

How it works

1

AI agent

An MCP client such as Claude. Skills hold the procedures

2

MCP server

Generates tools automatically from the manifest (stdio / Streamable HTTP)

3

GENNAI CMS

/api/mcp/* (Bearer token + scopes)

Tokens and scopes

  • • Issue tokens in the admin under “MCP Integration”. Create separate ones for each purpose
  • • Grant access per scope — for example read (posts.read) and write (posts.write)
  • • Build least-privilege agents that, say, only order images or only read reports
  • • Plugins can add their own tools and scopes (cms.mcp.tools / cms.mcp.scopes)
Fetch the list of tools
curl -H "Authorization: Bearer <token>" \
  http://localhost:<CMS port>/api/mcp/manifest

The MCP server reads this manifest at startup to build its tools, so when you add a tool on the CMS side, agents can use it without any configuration changes.

Tools

Articles5

posts.read / posts.write
  • GETposts.listList articles (search, sort)
  • GETposts.getGet an article with its body
  • POSTposts.createCreate an article (all fields)
  • PATCHposts.updateUpdate rewrites, metadata, and linked parts
  • GETcategories.listList categories

Parts10

parts.read / parts.write
  • GETparts.listList parts
  • GETparts.getGet a part
  • POSTparts.createCreate a part
  • PATCHparts.updateUpdate a part
  • POSTparts.previewPreview HTML with variables applied
  • GETpart_groups.listList part groups
  • GETpart_groups.getGet a group with its contents
  • POSTpart_groups.createCreate a group
  • PATCHpart_groups.updateUpdate a group (syncs its contents)
  • POSTpart_groups.previewPreview a group's HTML

Creatives (images)10

creatives.read / creatives.write
  • GETcreatives.listList creatives
  • GETcreatives.getGet a creative
  • POSTcreatives.createOrder an image
  • PATCHcreatives.updateUpdate a creative
  • POSTcreatives.insert_to_postInsert into an article body at a given position
  • GETcreatives.versions_listList versions
  • POSTcreatives.set_final_versionSet the version to deliver
  • GETcreative_codex_jobs.listList generation jobs
  • POSTcreative_codex_jobs.claimClaim a generation job (for workers)
  • PATCHcreative_codex_jobs.updateReport generation results

SEO & analytics5

reports.read / analytics.read
  • GETreports.listList SEO daily reports
  • GETreports.getSEO daily report details
  • GETreports.latestLatest SEO daily report
  • GETsearch.performanceSearch performance from Search Console
  • GETkeywords.listList target keywords

Tasks & wiki12

tasks.* / wiki.*
  • GETepics.listList epics
  • GETepics.getGet an epic
  • POSTepics.createCreate an epic
  • PATCHepics.updateUpdate an epic
  • GETtasks.listList tasks (filter by status, priority)
  • GETtasks.getGet a task
  • POSTtasks.createFile a task
  • PATCHtasks.updateUpdate a task (status transitions, etc.)
  • GETwiki.listList wiki pages
  • GETwiki.getGet a wiki page
  • POSTwiki.createCreate a wiki page
  • PATCHwiki.updateUpdate a wiki page

Content export1

content.export
  • POSTcontent.exportExport DB content to files and commit to git