Skip to content

Reference

MCP tools

Every tool the MCP server offers agents, what each one takes and returns, what agents may not do, how they tidy up their own work, and what is recorded.

Reference23 min read

These are the tools an agent sees once it is connected. To connect one, see Connect an AI agent over MCP.

All tools at a glance

This table is read from the server itself, so it always matches what agents see.

list_scopes
What it does
The environments, regions and locales of this website, and which ones you may change.
Changes anything
No, reads only
search_content
What it does
Find pages, collection entries and globals by words in their name, address or SEO title. Includes drafts.
Changes anything
No, reads only
list_pages
What it does
List the pages in one folder (or the top level) of a region and locale.
Changes anything
No, reads only
get_page
What it does
Read one page or entry in full: fields, blocks, SEO, the draft and what is live, and docVersion for safe updates.
Changes anything
No, reads only
get_navigation
What it does
Read the website's menus for a region and locale, with the page each link opens. Menus are changed by people under Navigation; you cannot change them.
Changes anything
No, reads only
get_schema
What it does
The content types and blocks (components) with their fields, so drafts you write are valid. A field with showWhen only applies while the named field of the same type or block holds that value (or one of the listed values); leave it out otherwise, since it is not required and is not delivered. A link field takes { kind: "content", contentId: <page id> } to link to a page, which follows the page when it moves, or { kind: "url", href: "https://…" or "/path" } for an address.
Changes anything
No, reads only
create_draft
What it does
Create a page or entry as a draft. It is never live until a person publishes it.
Changes anything
Saves a draft or comment
update_draft
What it does
Change a page's name, fields or blocks in its draft. Pass the docVersion you read so a newer change is never overwritten. Pages in review or due to go live cannot be changed.
Changes anything
Saves a draft or comment
update_seo_fields
What it does
Write a page's meta title, description and Open Graph text, saved to its draft.
Changes anything
Saves a draft or comment
draft_special_content
What it does
Draft the wording of a landing page, popup, banner or shop product: headlines, body text, FAQs, descriptions, benefits and directions. Give id and docVersion to change one, or contentType and name to start one. Only text fields may change: schedules, targeting, styles, prices, codes and catalogue IDs are left to people, and existing blocks cannot be removed. Saved as a draft for review.
Changes anything
Saves a draft or comment
copy_to_region
What it does
Copy pages to another region or language as linked drafts, ready to adapt.
Changes anything
Saves a draft or comment
upload_media
What it does
Upload an image, with alt text and a title per locale, into the "AI uploads" folder. Up to 3 MB. Locale codes must be ones the website has (see list_scopes). PNG and JPEG images are converted to WebP: the answer then gives convertedFrom with the type you sent.
Changes anything
Saves a draft or comment
set_image_text
What it does
Set an image's alt text, title or caption per locale. Only the languages you give change: others are kept, and an empty string or null removes that language. Locale codes must be ones the website has (see list_scopes). Image text is shared by every page and environment and shows at once, so images live on pages you may not change are refused.
Changes anything
Saves a draft or comment
discard_draft
What it does
Move a page or entry you created through this connection to the bin, such as a test page or a draft that is no longer wanted. Only for drafts that were never published, are not in review, approved or in a release, and that no person or other connection has changed since. Anything else is refused with the reason. A person can restore it from the bin.
Changes anything
Saves a draft or comment
discard_upload
What it does
Move an image you uploaded through this connection to the bin. Only for images that no page uses, in a draft, live, in the bin or in an earlier version, and that no person or other connection has changed; a refusal lists where it is used. A person can restore it from the bin.
Changes anything
Saves a draft or comment
get_seo_issues
What it does
The SEO dashboard for a region and locale: health score and every issue grouped by type, with the pages affected.
Changes anything
No, reads only
run_page_checks
What it does
Run the SEO checks and the pre-publish checks (alt text, image consent) on a page's draft.
Changes anything
No, reads only
add_comment
What it does
Comment on a review, or on the open review of a page.
Changes anything
Saves a draft or comment
submit_for_review
What it does
Send a page's draft to the review queue with a note explaining what you changed and why. A person approves and publishes it.
Changes anything
Saves a draft or comment

How the tools are grouped

Find and read
Tools
list_scopes, search_content, list_pages, get_page, get_navigation, get_schema
Changes anything
No
Draft
Tools
create_draft, update_draft, update_seo_fields, draft_special_content, copy_to_region
Changes anything
Saves drafts
Images
Tools
upload_media, set_image_text
Changes anything
Changes the media library
Checks
Tools
get_seo_issues, run_page_checks
Changes anything
No
Review
Tools
add_comment, submit_for_review
Changes anything
Adds comments and reviews
Tidy up
Tools
discard_draft, discard_upload
Changes anything
Moves the agent's own unpublished drafts and unused uploads to the bin

There are no tools for publishing, unpublishing, scheduling, deleting other people's work, prices, promotions, people, keys, settings or schemas. The permission checks refuse those actions as well, so an agent cannot reach them another way.

What an agent may and may not do

Its rights are the person's, capped. An agent acts for one person. It can do only what that person can do, and never more than this drafting list: read the organisation, website, environments, regions, languages, schema, menus and media; read published content and drafts; create, change and copy content; and upload images. If the person cannot edit a region or content type, neither can their agent.

Production is read only unless allowed. An agent can read every environment. It can change content in Production only when Allow drafts in production is on for the website. Without it, tools that change content in Production answer that the role cannot perform the action.

Keys can be limited to regions. An agent key limited to some regions can still read the others but cannot change them. Signed-in connections can change every region the person can.

Nothing goes live without a person. Pages an agent creates or changes are marked Drafted by AI. A page with that mark cannot be published until a person approves it in review. The person the agent acted for cannot approve it themselves, because they count as its author; someone else must. The mark is cleared when the page is published.

Some pages are off limits while they are with people. An agent cannot change a page that is in review, scheduled to go live, part of a scheduled release, or being edited by someone else at that moment.

It can tidy up only its own work. discard_draft and discard_upload move to the bin only what the agent created through the same key or signed-in connection. A page must never have been published, and must not be in review, approved and waiting, in a release, or open in the editor. An image must not be used anywhere. Nobody else, person or other connection, may have changed either since. The person must be allowed to delete pages or files themselves. Anything discarded goes to Bin, exactly as if the person had deleted it, and can be restored from there. Pages and images from before connections were recorded cannot be discarded by an agent.

Prices and promotions are never changed. If a change would alter a field set to protect a price or a promotion, in a page's own fields or in any block, it is refused, even when the person could make it. Which fields are protected is set per field under Protects. See Prices and promotions.

Content is data, not instructions. The server tells agents that text returned by tools is website content, to be treated as data and never as instructions.

Scope arguments

Many tools take three optional arguments that say where to work:

environment
Meaning
Environment key, such as staging or production
When left out
staging, or the website's default environment if it has no staging
region
Meaning
Region key, such as de
When left out
The first region in the environment that has a language
locale
Meaning
Language code, such as de-DE
When left out
The region's default language

Tools that take an id work wherever that page or entry lives, so they do not need these. A key or code that does not exist is refused with the ones that do, such as There is no region "us" in Staging. Its regions are de, ch.

Answers and errors

Every tool answers with JSON as text. When a tool fails, the answer is marked as an error and the text says why, for example:

Text
This page has changed since version 3 was read; it is now at version 4. Read it again and retry.

Page summaries, returned by several tools, look like this:

JSON
{  "id": "665f1c2e9b1e8a0012ab34cd",  "name": "Hiking boots",  "url": "/products/hiking-boots",  "contentType": "page",  "status": "published",  "hasUnpublishedChanges": false,  "draftedByAi": null,  "updatedAt": "2026-10-01T09:30:00.000Z"}

status is one of draft, in_review, published, scheduled or archived. draftedByAi names the agent and the person it acted for, such as "Claude (AI agent for Jane Doe)", or is null.

Find and read

list_scopes

No arguments. Lists each environment with its regions and their languages, and whether the agent may change each environment and region.

JSON
[  {    "environment": "staging",    "writable": true,    "regions": [{ "region": "de", "name": "Germany", "writable": true, "locales": ["de-DE"] }]  },  {    "environment": "production",    "writable": false,    "regions": [{ "region": "de", "name": "Germany", "writable": true, "locales": ["de-DE"] }]  }]

Something can be changed only when both its environment and its region are writable. The person's own rights still apply.

search_content

Finds pages, collection entries and globals in one region and language whose name, address or SEO title contains the words. Drafts are included.

query
Words to look for, up to 200 characters. Leave out to list everything.
contentType
Only this content type, such as page.
limit
1 to 100. Default 25.
environment, region, locale
See scope arguments.

Returns { "total": 12, "results": [ …page summaries ] }. total counts every match, even beyond the limit.

list_pages

Lists the folders and pages in one folder.

folderId
The folder to list. Leave out, or null, for the top level.
environment, region, locale
See scope arguments.

Returns { "folders": [{ "id", "name", "slug" }], "pages": [ …page summaries ] }. Use a folder's id to list inside it.

get_page

Reads one page or entry in full.

id
The page or entry id.

Returns the name, address, status, content type, folder, the draft's fields, blocks and SEO, the draft and published versions, and docVersion. Pass docVersion back when changing the page, so a newer change by someone else is never overwritten.

get_navigation

Reads the menus of one region and language. Takes the scope arguments.

JSON
[  {    "id": "6660a3f19b1e8a0012ab3600",    "key": "main",    "name": "Main menu",    "kind": "header",    "items": [      {        "label": "Products",        "kind": "content",        "visible": true,        "href": null,        "page": { "id": "665f1c2e9b1e8a0012ab34cd", "name": "Products", "url": "/products", "live": true },        "children": []      }    ]  }]

Menus for every region and language are included, as well as those made for this one. page is the page a link opens, { "id", "missing": true } when that page has been deleted, or null for a link to an address. Agents cannot change menus: a person does that under Library › Navigation, and the change is live at once, with no draft or review. When a page has no links to it, say so in the review note so a person can add it to a menu.

get_schema

No arguments. Returns every content type with its fields and allowed blocks, and every block (component) that is not deprecated, with its fields and child slots. It also gives the shape of a block:

Text
{ id?: string, type: <component key>, fields: { <field key>: value }, children: { <slot name>: [blocks] } }

Agents should read the schema before drafting, so drafts are valid. A field with showWhen applies only while the named field holds that value, such as a button's plan only when kind is signUp; leave it out otherwise. To link to a page, a link field takes { "kind": "content", "contentId": "<page id>" }, with the id from list_pages or search_content, so the link follows the page when it moves.

Draft

create_draft

Creates a page or entry as a draft. It is never live until a person publishes it.

contentType
Content type key from get_schema. Required.
name
1 to 200 characters. Required.
slug
The last part of the address.
folderId
Folder to create it in. Default: the top level.
fields
Field values by field key.
components
The blocks, in the shape get_schema gives.
seo
title (up to 200 characters), description (400), ogTitle (200), ogDescription (400).
environment, region, locale
See scope arguments.

Returns the page summary. Landing pages, popups, banners and shop products are refused here; use draft_special_content.

The address is made from the folder and the slug, so a page named Home at the top level gets /home. Only a person can give a page another address, such as / for the home page, with URL override in the editor. To find the home page, look for the page whose url is /. See Edit a page.

update_draft

Changes a page's name, fields or blocks in its draft.

id
Required.
docVersion
The docVersion from get_page. Required.
name
1 to 200 characters.
fields
The page's fields. Replaces all of the draft's fields, so send every field, not only the ones that change.
components
The whole block list. Replaces the draft's blocks.

Returns the page summary and the new docVersion. If someone changed the page since it was read, nothing is saved and the answer gives the version it is now at, such as This page has changed since version 3 was read; it is now at version 4. Read the page again to see the other change, then redo yours with that version.

Field values are checked when the draft is saved, in the page's own fields and in every block: fields the type or block does not have, choices that are not on the list, and text or numbers outside their limits or pattern. Every problem is returned in one answer, such as Some fields are invalid: components[a1b2].fields.heading …, each with its path, so they can all be fixed at once. Values that were saved before and have not changed are left alone. Blocks of a type the website does not have are all named in one answer, with the types it does have. Required fields may be left empty in a draft, but the page cannot be published until they are filled.

update_seo_fields

Writes a page's meta title, description and Open Graph text to its draft. Only the SEO fields given change; give null to clear one.

id
Required.
seo
title (up to 200 characters), description (400), ogTitle (200), ogDescription (400). Required.
docVersion
Optional, but recommended.

Returns the page summary, the new docVersion and the draft's SEO. Entries with no website address have no SEO and are refused.

draft_special_content

Drafts the wording of landing pages (landingPage), popups (popup), banners (banner) and shop products (shopProduct): headlines, body text, FAQs, descriptions, benefits and directions.

id and docVersion
To change an existing one.
contentType and name
To start a new one.
fields
Only the text fields to change. Others are kept.
components
The whole block list, with existing blocks kept by their id.
environment, region, locale
Where to start a new one.

Only wording may change. Schedules, targeting, tracking, styles, prices, codes, addresses and catalogue IDs are left to people, and existing blocks cannot be removed or turned into other blocks. A change that touches any of these is refused with a list of what was not allowed, such as Only wording can be drafted here. Background is a set-up field, not wording, so an agent cannot change it.

Returns the summary and the new docVersion.

copy_to_region

Copies pages to another region or language as linked drafts, ready to adapt.

ids
1 to 50 page ids, all from the same region and language.
target
{ "environment", "region", "locale" } to copy to.
includeMedia
Default true.

Returns how many folders and pages were copied, and the target. The folders the pages sit in are created in the target if needed. Copies are unpublished drafts marked Drafted by AI, so they need a person's approval like any other agent draft. Adapt them with update_draft, then send them for review. The target must be writable for the agent, and must be a different region or language from the source. There is no tool for copying a page within the same language; a person does that with Duplicate in the content list.

Images

upload_media

Uploads an image into the AI uploads folder of the media library, which is created if it does not exist.

filename
Required.
mimeType
image/jpeg, image/png, image/webp, image/avif or image/gif.
dataBase64
The image, base64 encoded. At most 3 MB.
alt
Alt text by language, such as { "de-DE": "A shop floor" }. Required.
title
Title by language.

Language codes must be ones the website has, in any environment or region; list_scopes lists them. Others are refused with the codes the website has, and nothing is uploaded.

Returns the image's details, including its id to use in fields and blocks. JPEG and PNG images are converted to WebP for the website. The answer then shows the new mimeType with convertedFrom, the type that was sent, and a short note:

JSON
{ "id": "6660a3f19b1e8a0012ab3700", "filename": "hiking-boots.webp", "mimeType": "image/webp", "convertedFrom": "image/png", "note": "Converted from image/png to image/webp for the website." }

If the same image is already in the library, that one is returned instead of a copy. When it is live on pages the agent may not change, its text is left as it was and the answer says so in textNotChanged.

set_image_text

Sets an image's alt text, title or caption by language. Nothing else about the image changes.

mediaId
Required.
alt, title, caption
Text by language, up to 500 characters each, such as { "de-DE": "A shop floor" }.

Only the languages given change; the others are kept. An empty string or null removes that language. Language codes must be ones the website has, in any environment or region; others are refused with the codes the website has, such as "nb-NO" is not a language of this site. Use de-CH.

Images belong to the media library, not to a page's draft, and are shared by every environment: new image text is not reviewed and is used at once wherever the image appears, including published pages. So when an image is live on a page in Production and the website does not allow agent drafts there, or live in a region the agent's key may not change, the change is refused and a person makes it under Library › Media.

Checks

get_seo_issues

The SEO dashboard for one region and language: the health score and every issue grouped by type, with the pages affected. Takes the scope arguments.

run_page_checks

Runs the SEO checks and the pre-publish checks, such as missing alt text and image consent, on a page's draft. Takes id.

JSON
{  "seoScore": 82,  "seoIssues": [ … ],  "publishBlockers": [    { "kind": "required", "path": "components[a1b2].fields.heading", "message": "…" },    { "kind": "missing_alt", "mediaId": "6660a3f19b1e8a0012ab3700", "filename": "hiking-boots.webp", "message": "…" }  ]}

publishBlockers lists what stops the page being published: required for an empty required field, on the page or in a block; invalid for a saved value the schema no longer accepts; and missing_alt, missing_subtitles or consent for images and videos. Agents should fix what they can before sending a page for review: fields with update_draft, alt text with set_image_text.

Review

add_comment

Comments on a review.

reviewId
The review to comment on.
pageId
Instead of reviewId: comments on the page's most recent review.
body
1 to 4,000 characters. Required.

submit_for_review

Sends a page's draft to the review queue with a note.

id
Required.
message
What changed and why, 1 to 2,000 characters. Required.
reviewerIds
Up to 20 people on the website to ask. Optional.
JSON
{ "reviewId": "6660a3f19b1e8a0012ab3511", "status": "pending", "steps": ["Review"] }

steps names the sign-offs the page needs, which depend on the content type and region, such as Review, and Brand when a brand block changes. A newer submission replaces an open review of the same page. While the review is open, agents cannot change the page. When the last step is approved, the page is published if the approver can publish; otherwise it waits for someone who can. A page with no unpublished changes is refused with There are no changes to review.

Tidy up

discard_draft

Moves a page or entry that the agent created through this connection to the bin, such as a test page or a draft that is no longer wanted. Landing pages, popups and banners count too.

id
Required.
JSON
{ "id": "665f1c2e9b1e8a0012ab34cd", "name": "Test page", "inTrash": true, "note": "Moved to the bin, exactly as if a person had deleted it. A person can restore it from the bin." }

It is refused, with the reason, when:

  • another key or connection, or a person, created it
  • it has ever been published, in this or any earlier state, or is scheduled to go live
  • it is in review, or approved and waiting to be published
  • it is in a release
  • someone has it open in the editor
  • a person or another connection has changed it since it was created
  • the person cannot delete pages, or this type of entry, themselves
  • the agent may only read where the page lives, such as Production without Allow drafts in production

A copy the agent makes with copy_to_region counts as created by it. A copy a person makes of an agent's draft does not.

discard_upload

Moves an image that the agent uploaded through this connection to the bin.

mediaId
Required.

Returns the same shape as discard_draft. It is refused when the image is used anywhere: in a page's draft or live version, in a page in the bin, in an earlier published version of a page, or in the website's settings. The answer lists where, such as "hiking-boots.webp" is in use, so it cannot be discarded. It is used in: Hiking boots (staging, de). Remove it from those drafts first, or leave it for a person. It is also refused when someone else uploaded it, when a person or another connection has changed it, and when the person cannot delete files themselves. If upload_media returned an image that was already in the library, that image is not the agent's and cannot be discarded.

Typical workflows

Draft a new page

  1. get_schema to learn the content types and blocks.
  2. list_pages to find the folder, such as Services.
  3. create_draft with the content type, name, fields, blocks and SEO.
  4. run_page_checks and fix what it finds with get_page and update_draft.
  5. submit_for_review with a note.

Update an existing page and send it for review

  1. search_content with query: "hiking boots" to find /products/hiking-boots.
  2. get_page for its fields, blocks and docVersion.
  3. update_draft with the changed fields and blocks and that docVersion.
  4. update_seo_fields if the title or description should change.
  5. submit_for_review with what changed and why.

Find pages that need work

  1. get_seo_issues for the region and language.
  2. For each page affected, get_page, then update_seo_fields or update_draft.
  3. submit_for_review for each page changed.

Copy and translate

  1. list_scopes to find the target region and language.
  2. copy_to_region with the page ids and the target.
  3. search_content in the target to find the copies.
  4. get_page and update_draft to translate or adapt each copy.
  5. submit_for_review for each copy.

Change the wording of a banner or popup

  1. search_content with contentType: "banner" or "popup".
  2. get_page for its fields and docVersion.
  3. draft_special_content with id, docVersion and only the text fields that change.
  4. submit_for_review.

Clean up after a test

  1. create_draft and upload_media as usual, for example a page named Test page and an image.
  2. If the page uses the image, take it out of the page with update_draft before you discard anything: an image on a page in the bin still counts as in use.
  3. discard_draft with the page id. Do not send test pages for review: a page in review cannot be discarded.
  4. discard_upload with the image id.

Both go to Bin, where a person can restore them.

Limits

Requests
Value
60 a minute for each key or signed-in connection. Every MCP request counts, including listing tools. Over the limit, requests get 429 with Retry-After.
Request size
Value
5 MB
Image upload
Value
3 MB, JPEG, PNG, WebP, AVIF or GIF
Search results
Value
Up to 100 a call
Pages copied
Value
Up to 50 a call
Names
Value
200 characters
Review note
Value
2,000 characters
Comment
Value
4,000 characters
Connections
Value
Set by the CMS Orbit plan, counting active keys and signed-in connections across the organisation: 2 on Starter, 10 on Growth, no limit on Enterprise.

Errors tools return

This page has changed since version … was read; it is now at version …
What to do
Read the page again with get_page and redo the change with the version given.
This page is in review, so an agent cannot change it until the review is decided
What to do
Wait for the review, or comment on it with add_comment.
This page is scheduled to go live or is in a scheduled release
What to do
People have planned this change; agents cannot change it.
Someone else is editing this page
What to do
Try again when they have finished.
Your role (…) cannot perform "…"
What to do
The scope is read only for the agent, or the person cannot do this. Check list_scopes.
Agents cannot change prices, promotions or quotas
What to do
The change touched a field set to protect a price or a promotion. Leave those fields as they are.
Use draft_special_content for … entries
What to do
The entry is a landing page, popup, banner or shop product.
Only wording can be drafted here. …
What to do
Change only the text fields named in the schema.
… is not a language of this site
What to do
Use one of the language codes the answer lists.
This image is live on pages you may not change
What to do
Ask a person to change the image's text under Library › Media.
A copy must go to another region or language
What to do
Copy to a different region or language. A person can duplicate pages within one language.
… not found
What to do
The id or key does not exist on this website, or the item is in the bin.
Some fields are invalid: … or Invalid input: …
What to do
The answer names each field, by a path such as fields.title or components[a1b2].fields.heading, and what is wrong with it. Fix them all and save again.
Unknown component type: …
What to do
Use the block types the answer lists, which are the ones in get_schema.
There are no changes to review
What to do
The draft is the same as what is live.
Images may be at most 3 MB
What to do
Send a smaller image.
… was not created through this agent connection or was not uploaded through this agent connection
What to do
A person, an older connection or a copy made by a person created it. Leave it, or ask a person to delete it.
… was created through another agent connection
What to do
Only that key or connection, or a person, can discard it.
… has been published
What to do
It has been live, so a person decides whether to take it down.
… is in review or has been approved in review
What to do
Comment on the review with add_comment to suggest discarding it.
… is in the release …
What to do
People have planned it; leave it to them.
… has been changed by … since you created it
What to do
A person worked on it, so their work is never discarded by an agent.
… is in use, so it cannot be discarded
What to do
The answer lists where. Remove the image from those drafts, or leave it.
… cannot move this to the bin themselves
What to do
The person the agent acts for may not delete pages or files.

Connection errors, such as 401, 403 and 429, are explained in Connect an AI agent over MCP.

What is recorded

  • On the page and the image: the Drafted by AI mark, with the agent's name and the person it acted for, and which key or connection created a page or uploaded an image.
  • In review: each review an agent sends names the agent and the person.
  • In the audit log: every change an agent makes is recorded under the organisation's Audit log, with the agent shown as, for example, Claude (AI agent for Jane Doe), or Claude (AI agent for Jane Doe, signed in) for a signed-in connection, and the time, IP address and client. This covers pages created, changed, copied and discarded, images uploaded, changed and discarded, folders created, reviews sent and comments.
  • Keys and settings: creating and revoking agent keys, signing in, and changing the AI agent switches are recorded too.
  • On the key: Last used on Configuration › AI agents.

Reading content is not recorded.

Was this page helpful?

Read next