Skip to main content
Glama
plone

Plone MCP Server

Official
by plone

Plone MCP Server

Talk to your Plone website instead of clicking through it. Plone MCP lets AI assistants like Claude create and edit pages, publish content, search the site, and manage translations on your behalf, in plain language - no coding required to use it, and nothing to change on your Plone site to enable it.

It's built on the Model Context Protocol (MCP), an open standard that lets AI assistants safely connect to external tools and data. Plone MCP exposes Plone's REST API as a set of MCP tools, so any MCP-compatible client - Claude Desktop, Claude Code, and others - can drive your site, and developers can script, automate, or build on top of the same tools.

Quickstart

Requires Node.js 22+. Add this to Claude Desktop's config file, then restart Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "plone": {
      "command": "npx",
      "args": ["-y", "@plone/mcp"]
    }
  }
}

Now ask Claude to connect to your Plone site, e.g. "Connect to https://demo.plone.org as admin/admin".

Related MCP server: optimizely-cms-mcp

Prerequisites

  • Node.js 22+ - Required to run the server (^20.19.0 || >=22.12.0; install: brew install node on macOS or from nodejs.org)

  • Plone 6.0+ site with REST API - The CMS you'll be connecting to

pnpm is only needed if you want to clone the repo and develop locally (see Local Development). The recommended setup below uses npx and doesn't require cloning anything.

Transports

The server ships two entry points:

  • STDIO (plone-mcp bin / dist/stdio-server.js) - for local MCP clients such as Claude Desktop.

  • HTTP (dist/http-server.js) - a streamable-HTTP server with per-session state, listening on PORT (default 3001) at /mcp. Start it with make start.

Quick Start using Claude Desktop as an example

The @plone/mcp package is published on npm, so there's nothing to install or build - npx fetches and runs it on demand.

  1. Configure Claude Desktop

Add to Claude's configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

With environment variables (optional):

{
  "mcpServers": {
    "plone": {
      "command": "npx",
      "args": ["-y", "@plone/mcp"],
      "env": {
        "PLONE_BASE_URL": "https://demo.plone.org",
        "PLONE_USERNAME": "admin",
        "PLONE_PASSWORD": "admin"
      }
    }
  }
}

Without environment variables (useful if you connect to different Plone sites and prefer to pass credentials per session via plone_configure):

{
  "mcpServers": {
    "plone": {
      "command": "npx",
      "args": ["-y", "@plone/mcp"]
    }
  }
}
  1. Restart Claude Desktop

  2. Connect to Plone

Call plone_configure once per session:

// Using environment variables
plone_configure({});

// OR providing credentials/token directly to the LLM
plone_configure({
  baseUrl: "https://demo.plone.org",
  username: "admin",
  password: "admin",
});

plone_configure({
  baseUrl: "https://demo.plone.org",
  token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
});

Note: Arguments take precedence over environment variables.

Local Development

Clone the repo if you want to modify the server, debug it, or run it with the MCP Inspector:

git clone https://github.com/plone/plone-mcp.git
cd plone-mcp
make install
make build

Point Claude Desktop at your local build instead of the npx command:

{
  "mcpServers": {
    "plone": {
      "command": "node",
      "args": ["/absolute/path/to/plone-mcp/dist/index.js"]
    }
  }
}

Development commands:

# Install the dependencies
make install

# Build for production (compiles TypeScript and copies blocks.json)
make build

# Run the HTTP server / the STDIO server from the build
make start
make stdio

# Debug with the MCP Inspector
make inspector

# Tests (Vitest)
make test-all       # everything
make test           # unit tests only
make test-coverage  # with coverage

# Static checks
make lint           # ESLint over src/ and __tests__/
make format         # ESLint with --fix
make type-check     # tsc over sources and tests

Run make help to list every available target.

Core Features

  • Content Management: CRUD operations on all Plone content types

  • Block System: Create and manage Volto blocks

  • Search: Full-text search with filtering and sorting

  • Workflow: Manage publication states and transitions

  • Site Info: Access content types, vocabularies, and site configuration

Essential Tools

Tool

Description

Example

plone_configure

Connect to Plone (call once per session)

plone_configure({baseUrl, username, password}) or plone_configure({}) for env vars

plone_get_content

Get content by path

plone_get_content({path: "/news"})

plone_create_content

Create new content

plone_create_content({parentPath: "/", type: "Document", title: "Page"})

plone_update_content

Update existing content

plone_update_content({path: "/page", title: "New Title"})

plone_delete_content

Delete content

plone_delete_content({path: "/old-page"})

plone_search

Search content

plone_search({query: "news", portal_type: ["Document"]})

plone_transition_workflow

Change workflow state

plone_transition_workflow({path: "/page", transition: "publish"})

plone_get_navigation_tree

Get hierarchical site structure

plone_get_navigation_tree({root_path: "/", depth: 2})

plone_get_translation

List translations of a content item

plone_get_translation({path: "/en/my-page"})

plone_link_translation

Link existing content as a translation

plone_link_translation({path: "/en/my-page", id: "/de/meine-seite"})

plone_unlink_translation

Remove a translation link

plone_unlink_translation({path: "/en/my-page", language: "de"})

plone_create_working_copy

Check out content into a working copy

plone_create_working_copy({path: "/my-document"})

plone_get_working_copy

Show working copy relationship and lock

plone_get_working_copy({path: "/my-document"})

plone_checkin_working_copy

Check in a working copy

plone_checkin_working_copy({path: "/working_copy_of_my-document"})

plone_cancel_working_copy

Discard a working copy

plone_cancel_working_copy({path: "/working_copy_of_my-document"})

Block Management

Creating Content with Blocks

// 1. Prepare blocks (60-second TTL - meant to be used inmediatly before content creation/editing)
plone_create_blocks_layout({
  blocks: [
    {
      type: "text",
      data: { text: "Welcome to our site!" },
    },
    {
      type: "teaser",
      data: {
        href: "/about",
        title: "Learn More",
        description: "Discover what we do",
      },
    },
  ],
});

// 2. Create content (within 60 seconds), the previously prepared blocks will automatically be included in the request
plone_create_content({
  parentPath: "/",
  type: "Document",
  title: "Homepage",
});

Managing Individual Blocks

// Add a single block
plone_add_single_block({
  path: "/homepage",
  blockType: "text",
  blockData: { text: "New paragraph" },
  position: 1,
});

// Update a block
plone_update_single_block({
  path: "/homepage",
  blockId: "51176ead-7b59-402d-9412-baed46821b36", // Get ID from plone_get_content
  blockData: { text: "Updated text" },
});

// Remove a block
plone_remove_single_block({
  path: "/homepage",
  blockId: "51176ead-7b59-402d-9412-baed46821b36",
});

Available Block Types

  • text: Rich text content

  • teaser: Link preview card with image

  • __button: Call-to-action button

  • separator: Visual divider line

Use plone_get_block_schemas() to see all block types and their properties.

Common Workflows

Create and Publish a Page

// Configure connection
plone_configure({
  baseUrl: "https://mysite.com",
  username: "editor",
  password: "secret",
});

// Create with blocks
plone_create_blocks_layout({
  blocks: [{ type: "text", data: { text: "Article content..." } }],
});
plone_create_content({
  parentPath: "/news",
  type: "News Item",
  title: "Breaking News",
});

// Publish
plone_transition_workflow({
  path: "/news/breaking-news",
  transition: "publish",
});

Search and Filter

plone_search({
  query: "annual report",
  portal_type: ["Document", "File"],
  review_state: ["published"],
  sort_on: "modified",
  sort_order: "descending",
  b_size: 10,
});

Important Notes

⚠️ Prepared blocks expire after 60 seconds - Always call plone_create_blocks_layout immediately before creating/updating content.

⚠️ Configure once per session - Run plone_configure once at the start of each session before using other tools. Once configured, you can use all other tools without reconfiguring.

Troubleshooting

Issue

Solution

command not found when using npx

Make sure the args in your config use plone-mcp as the binary name (not plone-mcp-server) — this was renamed in the package.

"Plone client not configured"

Run plone_configure once at the start of your session

"Block not found"

Use plone_get_content to get valid block IDs

Connection errors

Verify Plone URL and credentials are correct

Blocks not applied

Call plone_create_blocks_layout immediately before create/update (60s TTL)

TypeScript errors during local build

Run make install to ensure all dependencies are installed

Resources

License

MIT

Available Tools

22 tools
plone_add_single_blockAdd Single BlockA

Adds a single new block to an existing content item without replacing other blocks. Specify the block type, data, and optional position. Example: plone_add_single_block({path: '/my-page', blockType: 'text', blockData: {text: 'New paragraph'}})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content
blockTypeYesType of block to add
blockDataYesBlock-specific data
positionNoPosition to insert the block (optional, defaults to end)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description discloses that it adds a block without replacing, but lacks details on error handling, permissions, rate limits, or side effects. Example provides minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus an example, front-loaded with core purpose. Every part is useful with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description should explain return behavior, but it does not. It covers input well but omits success/failure outcomes. Acceptable but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents parameters. Description adds summary and an example, but no additional semantics beyond what schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it adds a single block without replacing others, with a specific verb and resource. It distinguishes from siblings like update or remove.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (add block, not update or remove) but does not explicitly list alternatives or when-not-to-use. No mention of prerequisites or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_configureConfigure Plone ConnectionA

Establishes and authenticates the connection to a Plone CMS. Must be called once per session before other tools can be used. Configuration can be provided via arguments or environment variables (PLONE_BASE_URL, PLONE_USERNAME, PLONE_PASSWORD, PLONE_TOKEN). Arguments take precedence over environment variables. To use environment variables only, call with an empty object: plone_configure({}). Example with arguments: plone_configure({baseUrl: 'https://demo.plone.org', username: 'admin', password: 'secret'}).

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoBase URL of the Plone site. Can be set via PLONE_BASE_URL environment variable.
usernameNoUsername for authentication. Can be set via PLONE_USERNAME environment variable.
passwordNoPassword for authentication. Can be set via PLONE_PASSWORD environment variable.
tokenNoJWT token for authentication (alternative to username/password). Can be set via PLONE_TOKEN environment variable.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description handles behavioral disclosure well, explaining authentication, configuration precedence, and session prerequisite. It lacks explicit mention of side effects or failure handling but is still informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured, and includes key elements: purpose, prerequisite, configuration options, precedence, and an example. Every sentence is useful with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description is fairly complete, covering purpose, mandatory call sequence, and configuration methods. It does not mention return values, but for a config tool this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents each parameter (100% coverage). The description adds value by explaining environment variable fallback, precedence, and providing usage examples, going beyond schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'establishes and authenticates the connection to a Plone CMS', using a specific verb+resource. It distinguishes itself from sibling tools (which focus on content operations) by being a session initialization step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Must be called once per session before other tools can be used', providing clear when-to-use guidance. It also describes configuration via arguments or environment variables with precedence rules and an example.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_create_blocks_layoutPrepare Blocks LayoutA

Prepares a complete block structure in memory (valid for 60 seconds). This structure is then used by the next immediate call to plone_create_content or plone_update_content. Use plone_get_block_schemas to learn what data each block type needs. The text displayed by the Title block is automatically managed by Plone, DO NOT add it in the block's data. Example: plone_create_blocks_layout({blocks: [{type: 'title'},{type: 'slate', data: {text: 'Hello World'}}]})

ParametersJSON Schema
NameRequiredDescriptionDefault
blocksYesArray of block specifications to process. You MUST call plone_get_block_schemas first to see available block types and their required fields. You MUST follow the block specifications EXACTLY, DO NOT invent your own fields. DO NOT add the content object's title in a text block. To set the page title, use the 'title' field of the content object itself when calling plone_create_content or plone_update_content. A Title block will be automatically created by Plone.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description covers behavioral traits: the structure is valid for 60 seconds (time constraint), and warns against including the title in block data because Plone auto-manages Title blocks. This adds critical context beyond schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four concise sentences plus an example. Every sentence adds unique information, and the key details are front-loaded. No redundant or superfluous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool's complexity (in-memory state, 60-second validity, dependency on subsequent calls) is well addressed. The description explains lifecycle, dependencies, and critical constraint. It does not mention return value, but no output schema is defined, so that gap is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value with an example, explicit warning about Title blocks, and reference to plone_get_block_schemas. This enriches parameter understanding beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states that the tool prepares a block structure in memory for 60 seconds, to be used by the next call to plone_create_content or plone_update_content. It distinguishes its purpose from sibling tools like plone_add_single_block and plone_get_block_schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use: before calling plone_create_content or plone_update_content, and advises using plone_get_block_schemas first. It does not explicitly list when not to use, but the context implies it is for setting up a full layout, not incremental updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_create_contentCreate Plone ContentA

Creates a new content item (e.g., a page or news article) in Plone. To add complex block-based content, first prepare the structure with plone_create_blocks_layout, then call this tool. Example: plone_create_content({parentPath: '/', type: 'Document', title: 'My Page', description: 'A sample page'})

ParametersJSON Schema
NameRequiredDescriptionDefault
parentPathYesPath where to create the content (e.g., '/parentDocument' or '/' for root)
typeYesContent type to create (e.g., 'Document', 'Event', 'News Item')
titleYesTitle of the new content
descriptionNoDescription of the new content
idNoID for the new content (optional, will be auto-generated if not provided)
blocksNoVolto blocks structure for the content, it specifies the blocks data and content
blocks_layoutNoVolto blocks layout configuration, it specifies the order of blocks
additionalFieldsNoAdditional fields to update. For preview images, include preview_image_link: { '@id': 'image-url' } in this object (if you get a 400 error, make sure the image URL is accessible).

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses basic creation behavior but lacks details on side effects (e.g., whether it overrides existing content), required permissions, or error scenarios. The mention of preview_image_link suggests some error handling, but overall transparency is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences plus an example. It front-loads the purpose and key usage instruction. It could be slightly more structured but is efficient and free of fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and no annotations, the description covers basic creation and block-based content. It lacks details on return values, error handling, or authentication needs. For a create tool with multiple nested object parameters, it is minimally complete but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 8 parameters are documented. The description adds a usage example and mentions using blocks and blocks_layout for complex content, but does not provide significant new meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Creates a new content item (e.g., a page or news article) in Plone' and differentiates from the sibling tool plone_create_blocks_layout by indicating it should be used first for block-based content. The verb 'Creates' and resource 'content item' are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear when-to-use: for adding complex block-based content, first call plone_create_blocks_layout then this tool. An example is given. However, it does not explicitly state when not to use or mention alternatives like update/delete tools, but the context with sibling tools makes it implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_create_userCreate Plone UserA

Creates a new user in the Plone site. Requires Manager role or self-registration to be enabled. Example: plone_create_user({username: 'jdoe', password: 'secret', email: 'jdoe@example.com', fullname: 'John Doe', roles: ['Contributor']})

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUsername for the new user
passwordYesPassword for the new user, it must be 8 characters or longer. Unless specified otherwise, use 12345678 as the default password for created users.
emailNoEmail address of the user
fullnameNoFull name of the user
descriptionNoShort biography or description of the user
home_pageNoURL of the user's home page
locationNoLocation of the user
rolesNoRoles to assign to the user (e.g., ['Contributor', 'Editor'])
sendPasswordResetNoIf true, send a password reset email to the user instead of setting the password directly

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It discloses the creation action and permission requirement but omits any side effects, error conditions, or behavior on duplicate usernames, which is a moderate gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first defines purpose and requirement, the second provides a concrete example. It is concise, front-loaded, and each sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no output schema, the description provides essential details: action, prerequisite, and example. It does not mention return value or error handling, but given the simplicity and the presence of sibling tools like plone_update_user, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all parameters described adequately. The description adds an example call that illustrates usage, which is helpful but does not significantly extend beyond the schema definitions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Creates a new user in the Plone site', which is a specific verb and resource. It distinguishes from sibling tools like plone_update_user by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a prerequisite condition: 'Requires Manager role or self-registration to be enabled', which helps the agent assess applicability. It does not explicitly exclude alternatives but gives context for when the tool can be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_delete_contentDelete Plone ContentA

Permanently deletes a content item from Plone using its path. Example: plone_delete_content({path: '/old-content'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content to delete

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the permanent deletion action, but lacks additional behavioral details (e.g., effect on child items, required permissions, undo possibility). With no annotations, more context would benefit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no extraneous text. Front-loaded with purpose and includes a concrete example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is adequate. Could mention handling of children or permissions, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, providing a baseline of 3. The description adds an example usage for the path parameter, which offers slight additional clarity beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it permanently deletes a content item using its path. Distinguishes from sibling tools like update or create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention conditions or constraints such as permissions or irreversibility beyond 'permanently'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_block_schemasGet Block SchemasA

Lists all available Volto block types (e.g., 'slate', 'teaser', 'button') and their required data schemas. If no block type specified, the tool returns all blocks schemas. Essential for understanding how to construct blocks. Example: plone_get_block_schemas({blockType: 'teaser'})

ParametersJSON Schema
NameRequiredDescriptionDefault
blockTypeNoSpecific block type to get schema for (optional, returns all if not specified).

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the output (lists schemas) but does not explicitly state that the tool is read-only or idempotent. The description is functional but lacks explicit behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus an example, with no wasted words. The key information is front-loaded, and the example aids understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one optional parameter and no output schema, the description covers the main behavior. It lacks explicit mention of the return format (e.g., JSON structure), but for a simple list tool, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a description for blockType. The description adds value by stating the default behavior when the parameter is omitted (returns all), which is not in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Lists all available Volto block types and their required data schemas', using a specific verb and resource. It distinguishes from sibling tools that add, remove, or update blocks, and provides an example call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains behavior when blockType is omitted ('returns all blocks schemas') and notes it is 'Essential for understanding how to construct blocks'. However, it does not explicitly contrast with sibling tools or state when to use this tool versus others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_contentGet Plone ContentB

Retrieves the full JSON data for a single content item from Plone using its path. Example: plone_get_content({path: '/news/latest-update'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to content (e.g., '/parentDocument/document' or just '/' for root level)
expandNoComponents to expand (e.g., ['breadcrumbs', 'actions', 'workflow'])

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose any behavioral traits (e.g., read-only, authentication, rate limits, or side effects). As a 'get' operation, the read-only behavior is implied but not stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus an example. No wasted words. The core action is front-loaded, and the example clarifies usage. Slightly improvement could be removing minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description does not explain return value contents. For a tool with 2 params and no output schema, it is adequate but incomplete. Missing details on what the JSON includes could confuse agents needing specific fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions. The description adds a usage example but no additional meaning beyond the schema. Baseline 3 for high coverage, and the example is helpful but not transformative.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Retrieves the full JSON data for a single content item from Plone using its path,' specifying the verb, resource, and scope. Distinguishes from sibling tools like plone_search (lists multiple items) and plone_get_site_info (site-level).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives or when not to use it. Usage is implied (need full JSON for a single item), but no exclusion criteria or comparison to siblings are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_site_infoGet Site InformationA

Retrieves top-level information and metadata about the connected Plone site, such as available languages and Plone version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description implies a read operation with 'retrieves', but does not explicitly state it is safe, idempotent, or lacks side effects. Adequate but could be more explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, concise, and front-loaded with the core action and examples. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval with no parameters and no output schema, the description is complete. It specifies what information is returned with examples.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so no additional param info is needed. The schema coverage is effectively 100%, and the description does not need to compensate. Baseline is 4 for no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves top-level site information, with specific examples (languages, Plone version). It distinguishes from sibling tools like plone_get_content or plone_get_types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives. The purpose is obvious, but there is no mention of when not to use or comparisons with similar tools like plone_get_types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_translationGet Translations of a Content ItemB

Retrieves all available translations for a content item , identified by its '@id' (URL). Example: plone_get_translation({path: '/en/my-page'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content item (e.g., '/en/my-page')

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states it retrieves translations. Does not disclose behavior like read-only nature, what happens if no translations exist, or authentication requirements. Bare minimum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with an inline example. Efficient and front-loaded. Could be more concise but includes necessary clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema provided; description does not explain return format (e.g., structure of translations). Adequate for a simple retrieval but incomplete for full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for 'path'. Description adds an example but no additional meaning beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it retrieves translations for a content item, with specific verb 'retrieves' and resource 'translations'. Includes an example that distinguishes it from sibling tools focused on content creation, deletion, or updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like plone_link_translation or plone_get_content. Does not mention contexts or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_typesGet Content TypesA

Lists all available content types that can be created in the Plone site (e.g., 'Document', 'Event').

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It indicates a read-only listing operation but lacks detail on authentication, rate limits, or behavior when no types exist. The behavior is simple so it is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no unnecessary words, front-loading the purpose effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description is complete: it states what is returned with examples.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Baseline is 4 due to zero parameters. The description adds no parameter info because none exist; it correctly describes the tool's action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool lists all available content types in the Plone site, with examples. It distinguishes from the sibling 'plone_get_type_schema' which gets a specific type's schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for discovering available content types, but does not explicitly state when to use versus alternatives like 'plone_get_type_schema' or provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_type_schemaGet Content Type SchemaA

Gets the full JSON schema for a specific content type, including all fields, their types, required status, and validation rules. Use this to understand what fields are available when creating or updating content. Example: plone_get_type_schema({contentType: 'Document'})

ParametersJSON Schema
NameRequiredDescriptionDefault
contentTypeYesThe content type name to get the schema for (e.g., 'Document', 'Event', 'News Item')

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the return value but doesn't explicitly state read-only behavior or potential restrictions. 'Gets' implies nondestructive, but more explicit safety context would improve score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences plus an example. Every sentence adds value, no wasted words. Front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter schema retrieval tool with no output schema, the description sufficiently explains what the tool returns and gives an example. No gaps given the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear schema description. The description adds value with an example call and reiterates the parameter's purpose, making it more user-friendly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets the full JSON schema for a specific content type, including fields, types, required status, and validation rules. It distinguishes from siblings like plone_get_types by focusing on the schema of a single type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this to understand what fields are available when creating or updating content,' providing clear when-to-use guidance. It doesn't contrast with alternatives but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_vocabulariesGet Vocabulary ValuesA

Fetches the allowed values for a specific field, such as a list of categories or tags. Useful for finding valid inputs for content fields. Example: plone_get_vocabularies({vocabulary: 'plone.app.vocabularies.Keywords'})

ParametersJSON Schema
NameRequiredDescriptionDefault
vocabularyYesVocabulary name
titleNoFilter by title
tokenNoFilter by token

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates a read operation ('Fetches') and no side effects are implied. The behavior is simple and adequately transparent for this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief: two sentences and an example. It is front-loaded with the core purpose and provides a concrete example, all without extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description does not mention the return format. For a simple fetch, this might be acceptable, but completeness is slightly lacking given the absence of return value information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description adds value by providing an example that demonstrates the usage of the required 'vocabulary' parameter. However, the filter parameters 'title' and 'token' are not further explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches allowed values for a specific field, with an example using a vocabulary name. It distinguishes itself from sibling tools, none of which fetch vocabulary values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains it is useful for finding valid inputs for content fields, providing clear context for when to use it. However, it does not explicitly state when not to use it or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_get_workflow_infoGet Workflow InformationA

Shows the current workflow state (e.g., 'Published', 'Private') and available transitions for a content item. Example: plone_get_workflow_info({path: '/my-document'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description accurately describes the read behavior (no side effects). Without annotations, it carries the burden but does not disclose potential errors (e.g., item without workflow) or authentication needs. No contradiction with annotations (none provided).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: one functional statement and one example. Every word earns its place; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is sufficiently complete. It states what is returned (state and transitions). It could mention the structure of transitions, but that is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a description for 'path'. The description adds value with an example showing usage format, though it doesn't elaborate further on semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool shows current workflow state and available transitions for a content item, with a concrete example. It clearly distinguishes from sibling tools like plone_transition_workflow that perform actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (e.g., before transitioning), but no explicit when-to-use or when-not-to-use guidance is provided. No comparison to alternatives is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_remove_single_blockRemove Single BlockA

Deletes a single block from a content item, identified by its block ID. Example: plone_remove_single_block({path: '/my-page', blockId: 'abc123'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content
blockIdYesID of the block to remove

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Only states 'Deletes' with no additional behavioral context. No annotations provided, so description must carry burden; missing details on side effects, error handling, or reversible nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence plus an example. No extraneous content, every part serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple two-param tool with no output schema. Covers core action, but lacks preconditions or error scenarios (e.g., what if block ID doesn't exist).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers both parameters with descriptions (100% coverage). The description adds an example usage that clarifies the expected format (leading slash in path, blockId as string), providing practical context beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool deletes a single block from a content item, with specific identification via block ID. Distinguishes from sibling tools like plone_delete_content (whole content) and plone_update_single_block (modify).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for deleting a block, but no explicit when-to-use or alternatives. Lacks guidance on when not to use (e.g., when wanting to delete entire content).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_transition_workflowExecute Workflow TransitionA

Changes the workflow state of a content item by executing a specific transition, like 'publish' or 'submit'. Example: plone_transition_workflow({path: '/my-document', transition: 'publish'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content
transitionYesWorkflow transition to execute
commentNoComment for the transition

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description is minimal. It indicates a mutation (change state) but does not disclose side effects like permission requirements, reversibility, or error behavior if transition is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one sentence defining purpose plus an example. No unnecessary text, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Basic description with example, but lacks return value information (no output schema) and error handling. For a simple tool with 3 parameters, it is adequate but could add more detail on valid transitions or outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 3 parameters. The description adds a concrete example mapping parameters to values, which clarifies usage beyond schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it changes workflow state by executing a transition, with specific example of 'publish' or 'submit'. It distinguishes from sibling tools like plone_get_workflow_info which only reads workflow info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Does not mention prerequisites like content having a workflow, nor scenarios where it should not be used (e.g., for content without workflow).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_update_contentUpdate Plone ContentA

Modifies an existing content item in Plone. Can update metadata (like title) and/or replace the entire block structure. Use plone_create_blocks_layout to prepare complex block updates or use the plone_add_single_block and plone_update_single_block tools for smaller changes. DO NOT edit the block structure directly. Example: plone_update_content({path: '/my-page', title: 'Updated Title'})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content to update
titleNoNew title
descriptionNoNew description
blocksNoVolto blocks structure for the content
blocks_layoutNoVolto blocks layout configuration
additionalFieldsNoAdditional fields to update. For preview images, include preview_image_link: { '@id': 'image-url' } in this object (if you get a 400 error, make sure the image URL is accessible).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool can update metadata and replace block structure, and warns against direct block editing. However, it doesn't mention idempotency or workflow side effects. The additionalFields tip adds useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences plus an example, front-loaded with key information, no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, nested objects, and no output schema, the description covers the main uses and provides practical tips. Lacks return value description but otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds value by referencing plone_create_blocks_layout for blocks and providing a concrete example for additionalFields (preview_image_link with error handling).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Modifies an existing content item in Plone' with specific verbs and resources. It distinguishes from sibling tools like plone_create_blocks_layout and plone_add_single_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool vs alternatives: 'Use plone_create_blocks_layout to prepare complex block updates or use the plone_add_single_block and plone_update_single_block tools for smaller changes.' Also includes a 'DO NOT' instruction and an example.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_update_single_blockUpdate Single BlockA

Modifies the data of a single, existing block within a content item, identified by its block ID. Example: plone_update_single_block({path: '/my-page', blockId: 'abc123', blockData: {text: 'Updated text'}})

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the content
blockIdYesID of the block to update
blockDataYesNew block data

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description states 'Modifies the data', indicating a write operation. However, it does not disclose whether the update merges or replaces blockData, authorization needs, or potential side effects. The example provides some clarity but leaves gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence plus an example, which is concise and front-loaded. Every element earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the mutation nature and absence of output schema or annotations, the description lacks explanation of blockData update behavior (merge vs replace) and does not cover error scenarios or required permissions. It is incomplete for a write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds a concrete example demonstrating parameter usage (path, blockId, blockData), which enhances semantic understanding beyond the schema descriptions alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'Modifies', the resource 'data of a single, existing block within a content item', and the identifier 'block ID'. It clearly distinguishes from sibling tools like plone_add_single_block and plone_remove_single_block.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., plone_update_content). It does not mention prerequisites, limitations, or scenarios where other tools are more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plone_update_userUpdate Plone UserA

Updates an existing user's properties in Plone. Requires Manager role or the user updating their own account. Roles are specified as an object mapping role names to booleans to add or remove them. Example: plone_update_user({userid: 'jdoe', fullname: 'Jane Doe', roles: {Editor: true, Contributor: false}})

ParametersJSON Schema
NameRequiredDescriptionDefault
useridYesThe ID of the user to update
emailNoNew email address
fullnameNoNew full name
descriptionNoNew biography or description
home_pageNoNew home page URL
locationNoNew location
rolesNoRoles to add or remove, as an object mapping role names to booleans (e.g., {Contributor: true, Editor: false})

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains that roles are specified as an object mapping booleans to add/remove them, which is good. However, it lacks details on side effects (e.g., whether unmentioned properties remain unchanged) and return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two sentences plus a short example. Every sentence serves a purpose, and there is no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main behavior and role update mechanism, but it lacks information about the return value (e.g., success indication or updated user object). Given no output schema, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by providing an example of the 'roles' parameter usage, clarifying the boolean mapping logic for add/remove.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Updates an existing user's properties in Plone.' with a specific verb ('updates') and resource ('existing user's properties'). It distinguishes from sibling tools like plone_create_user (creation) and plone_update_content (content update).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a precondition: 'Requires Manager role or the user updating their own account.' It also gives an example call. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 22 tool updatesv1.0.0
    • First observedplone_add_single_block
    • First observedplone_configure
    • First observedplone_create_blocks_layout
    • First observedplone_create_content
    • First observedplone_create_user
    • First observedplone_delete_content
    • First observedplone_get_block_schemas
    • First observedplone_get_content
    • First observedplone_get_site_info
    • First observedplone_get_translation
    • First observedplone_get_type_schema
    • First observedplone_get_types
    • First observedplone_get_vocabularies
    • First observedplone_get_workflow_info
    • First observedplone_link_translation
    • First observedplone_remove_single_block
    • First observedplone_search
    • First observedplone_transition_workflow
    • First observedplone_unlink_translation
    • First observedplone_update_content
    • First observedplone_update_single_block
    • First observedplone_update_user

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, from authentication to content creation, block manipulation, workflow, translations, and user management. No two tools overlap in function; even block-related tools (create_blocks_layout vs add_single_block) are clearly differentiated.

Naming Consistency5/5

All tools follow a consistent 'plone_' prefix with underscore-separated verb-noun patterns (e.g., plone_get_content, plone_create_user, plone_transition_workflow). The naming is predictable and logical throughout the set.

Tool Count4/5

With 22 tools, the server covers a broad range of Plone CMS operations without being excessive. The count is appropriate for the complexity of the system, though a few tools (e.g., plone_configure and plone_get_site_info) could potentially be merged.

Completeness4/5

The toolset provides comprehensive coverage for core workflows: content CRUD, block management, user creation/update, workflow transitions, translations, search, and schema exploration. Notable gaps include user deletion and folder manipulation (move/rename), but these are minor given the overall robustness.

Maintenance

ActivityMaintained
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage WordPress sites through natural conversation, supporting post creation, content updates, site queries, and draft-to-publish workflows via the WordPress REST API.
    9
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Optimizely CMS via its GraphQL and Content Management APIs, supporting dynamic content discovery, retrieval, and management.
    11
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access and manage CiviCRM data, including contacts, activities, contributions, events, and memberships, with full custom field support.
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/plone/plone-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server