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

A4.1/5.0
Behavior3/5

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

With no annotations, the description fully bears responsibility for transparency. It explains non-destructive behavior ('without replacing other blocks'), but does not disclose what happens on failure (e.g., invalid path or blockType) or return value. Adequate but not comprehensive.

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 extremely concise: two sentences and an example. Every part adds value, with the example serving as a quick reference. No wasted 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?

The description covers the core action and parameters, but lacks information about the return value (since no output schema exists). For a tool with 4 parameters and no output schema, additional context about what the tool returns or side effects would be beneficial. Adequate but incomplete.

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%, providing a baseline of 3. The description adds clarity by listing the key parameters ('block type, data, and optional position') and providing a concrete example that illustrates usage, which helps the agent understand how to structure the input.

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 new block without replacing others, using specific verb 'adds' and resource 'block'. It distinguishes from siblings like 'plone_update_single_block' and 'plone_remove_single_block' by emphasizing it adds rather than updates or removes.

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 specifies when to use ('adds a single new block') and provides an example, but does not explicitly mention when not to use or list alternatives. However, the sibling tools context and the nature of the description make the intended usage clear.

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.8/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. Discloses authentication, session requirement, precedence, and env var fallback. Could mention error behavior but 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?

Very concise: 3 sentences plus example. Front-loaded with core purpose. Every sentence adds value.

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?

Given no output schema, description adequately covers configuration, authentication, and ordering relative to siblings. Complete for a setup tool.

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

Parameters5/5

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

All parameters have schema descriptions (100% coverage). Description adds meaning: explains alternative auth methods, precedence, env var fallback, and example.

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 establishes and authenticates connection to Plone CMS, must be called once per session. Specific verb+resource and distinguishes from siblings.

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 says 'Must be called once per session before other tools' and gives configuration options (args vs env vars) with precedence and 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.7/5.0
Behavior4/5

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

The description discloses that the structure is valid for only 60 seconds, is held in memory, and that the title block is auto-managed. This adds transparency beyond no annotations, though it doesn't explicitly state what happens if not used within 60 seconds (implied by 'valid for 60 seconds').

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 relatively concise with three sentences and an example. It front-loads the core purpose and usage, but the example and last sentence could be slightly condensed without losing clarity.

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?

Given a single parameter and no output schema, the description fully covers what the tool does, how to use it, prerequisites, and limitations. It references sibling tools for deeper context, making it complete for an AI agent.

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

Parameters5/5

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

Although the schema covers all parameters (100% coverage), the description adds significant meaning: it explains the blocks array purpose, references plone_get_block_schemas for required fields, and includes warnings and an example. This goes well 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?

The description clearly states the tool prepares a block structure in memory for use by plone_create_content or plone_update_content. It distinguishes from siblings like plone_add_single_block by specifying this is for a complete layout, not a 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?

It advises to call plone_get_block_schemas first for block data requirements, and warns against adding the title in block data. It also indicates that the structure must be used in the next immediate call, providing clear when-to-use context.

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.7/5.0
Behavior2/5

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

Without annotations, the description carries full burden. It identifies the tool as creating content (mutation) but fails to disclose permissions, side effects, error handling, or return value. The note about block preparation is the only behavioral hint beyond basic action.

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 a clear example. No redundant text; every sentence adds value. Front-loaded with action and examples.

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 no output schema and 8 parameters including nested objects, the description provides basic context but lacks guidance on block structure, error scenarios, or return values. Leaves gaps for complex usage.

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 baseline is 3. The description adds minimal parameter semantics beyond the schema, only showing an example of typical usage. It does not explain relationships between blocks, blocks_layout, and additionalFields.

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 creates new content in Plone, provides examples ('page or news article'), and distinguishes from sibling tools by referencing plone_create_blocks_layout for block-based content. The example further clarifies usage.

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?

Explicitly recommends using plone_create_blocks_layout before this tool for complex block-based content, guiding when not to use this tool directly. Does not list all alternatives but provides relevant context for common scenarios.

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.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 discloses the requirement and gives an example, but does not detail return behavior, side effects, or error handling. It is adequate but not comprehensive.

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 concise sentences plus an example, front-loaded with the core purpose. Every sentence adds necessary information without any 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?

For a simple creation tool with no output schema and minimal complexity, the description covers the essential aspects: purpose, requirements, and usage example. It could mention the expected return value but is complete enough for an agent to use.

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 schema already documents all parameters. The description adds value beyond the schema by providing an example call and noting the default password behavior, which clarifies usage.

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 user in the Plone site', using a specific verb and resource. It differentiates from sibling tools like plone_update_user and plone_delete_content by its clear focus on user 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 mentions the prerequisite 'Requires Manager role or self-registration to be enabled', which provides clear context for when the tool can be used. However, it does not explicitly state when not to use it or mention alternative tools.

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.8/5.0
Behavior3/5

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

States 'permanently deletes', which is the key behavioral trait, but lacks details on side effects (e.g., recursive deletion for folders), permission requirements, or undo capabilities. No annotations were provided to supplement.

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: first explains action and resource, second provides a concrete example. No redundant information; each sentence earns its place.

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 one parameter and no output schema, the description is mostly complete. However, explicitly stating that deletion is irreversible would improve completeness, especially given the destructive nature.

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 path described. Description adds an example showing exact usage format, which clarifies the parameter expectation 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?

Description clearly states the verb 'permanently deletes', the resource 'content item', and the method 'using its path'. This distinguishes it from sibling tools like plone_get_content or plone_update_content.

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 versus alternatives (e.g., workflow transitions instead of deletion) or when not to use. For a destructive operation, prerequisites or cautionary notes are absent.

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/5.0
Behavior3/5

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

The description correctly implies a read-only operation (lists schemas). However, since no annotations are present, the description carries full burden. It does not specify the return format or structure, which is a gap for an agent expecting to use the output.

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 and an example, front-loaded with the main action. No extraneous information. The bold emphasis on essentiality is helpful and concise.

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 the tool's simplicity (one optional param, no output schema), the description covers purpose, usage, and importance. It lacks a description of the return format, which would be beneficial but not critical for a straightforward listing tool.

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% (one parameter with enum and description). The description adds minimal value: it restates the optional nature and provides an example usage. 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 'Lists all available Volto block types and their required data schemas.' This is a specific verb+resource combination. It distinguishes itself from sibling tools like plone_add_single_block by focusing on schema discovery rather than block manipulation.

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 positions the tool as 'Essential for understanding how to construct blocks.' It also explains an optional parameter behavior. While it doesn't provide explicit when-not-to-use or alternative comparisons, the context is clear for its intended use.

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 ContentA

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

A3.9/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 burden of disclosure. It correctly implies a read-only operation ('Retrieves') and uses 'full JSON data' to convey the response format. However, it does not mention error behavior (e.g., missing path) or permission requirements, but for a simple retrieval, the information is sufficient.

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 are extremely concise and front-loaded with the primary purpose. Every word is necessary. No 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?

No output schema exists, so the description should offer more detail about the return structure. 'Full JSON data' is vague; agents may need to infer fields. Given the context signals (no output schema, no nested objects), the description is adequate but not 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%, so the description's param info is additive but not critical. The description provides an example call and clarifies that path can be '/' for root, which adds minor value beyond the schema's 'e.g.' examples. Meets baseline for high schema coverage.

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?

Description clearly states the verb 'Retrieves', the resource 'full JSON data for a single content item', and the mechanism 'using its path'. An example call is provided, making the purpose unmistakable. It effectively distinguishes from sibling tools like plone_search which handles multiple items.

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 the tool is for retrieving a single content item by path, but it does not explicitly specify when to use it versus alternatives like plone_search or plone_get_site_info. Lacks guidance on exclusions or prerequisites.

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.2/5.0
Behavior3/5

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

No annotations provided. Description implies read-only behavior but does not disclose any additional behavioral traits (e.g., caching, performance). Adequate for a simple retrieval 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?

Single sentence, front-loaded with action, no extraneous words. Efficiently states purpose and examples.

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?

Lacks output schema but description gives examples of returned data (languages, version). Sufficient for basic understanding, though structure could be hinted.

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?

No parameters exist, so description adds no parameter info. Baseline 4 for zero-parameter tool.

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?

Description clearly states the tool retrieves top-level site info, with specific examples (languages, version). It distinguishes from siblings which handle CRUD on content, blocks, users, etc.

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?

No explicit when-to-use or when-not-to-use, but the tool has no parameters and is the only one for site metadata. Usage is implicitly clear given sibling tool diversity.

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.4/5.0
Behavior2/5

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

No annotations are provided, so the description must compensate. It states it 'retrieves' translations, implying a read operation without destructive side effects, but it does not disclose required permissions, potential errors, or the format of the returned data (e.g., list of paths, objects).

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 one sentence plus an example, no wasted words. It front-loads the action and identification method. Very concise, though it could be slightly more informative without length.

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?

For a simple retrieval tool with one parameter and no output schema, the description covers the essential purpose and parameter. However, it lacks information about the return format or structure, which would help the agent understand what to expect.

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?

The input schema already describes the single parameter 'path' with an example. The description adds a functional example call, but this largely duplicates the schema's example. The additional value is minimal, so a baseline score of 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 the verb 'Retrieves' and the resource 'all available translations for a content item', with an explicit identification method (by '@id'/path). It distinguishes from sibling tools like plone_link_translation and plone_unlink_translation by focusing on retrieval.

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?

While the purpose is clear, there is no explicit guidance on when to use this tool versus alternatives (e.g., when to get translations vs link or unlink). The example shows usage but lacks when-not or context for optimal use.

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.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes the output but does not disclose whether authentication is needed, side effects, or that it is read-only.

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 with example, front-loaded with action verb, no wasted words.

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?

Simple tool with no parameters or output schema; description adequately states what is returned, though could mention output format or lack of side effects.

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?

No parameters exist; schema coverage is 100%. Description adds no param info, but baseline 4 applies due to zero 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?

Description clearly states the tool lists all available content types for creation, with examples ('Document', 'Event'). Distinct from sibling tools like plone_get_type_schema.

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?

Description implies usage context (when needing to know creatable types) but does not explicitly exclude alternatives or provide when-not-to-use guidance.

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.2/5.0
Behavior4/5

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

With no annotations, the description sufficiently discloses that the tool retrieves schema data without side effects. It describes what the schema contains and presents an example call, though it could mention idempotence or error handling for missing types.

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 at two sentences plus an example, front-loading the purpose and key detail. Every part 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?

Given no output schema, the description adequately explains the return value (full JSON schema with fields, types, etc.). It is complete for a simple read-only tool, though it could specify that unknown types return an error.

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?

The schema coverage is 100% for the single 'contentType' parameter, and the description repeats the exact schema description. The example adds minimal extra clarity, so the parameter semantics meet but do not exceed the baseline.

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 the full JSON schema for a content type, including details like fields, types, and validation rules. It distinguishes itself from sibling tools like plone_get_types or CRUD operations by specifying its schema-getting purpose.

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 advises using the tool to understand available fields when creating or updating content, providing a concrete example. While it doesn't explicitly contrast with all sibling tools, the guidance is clear and helpful for appropriate usage.

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/5.0
Behavior3/5

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

The description indicates a read operation (fetch) with no side effects. No annotations are provided, so the description carries the burden. It does not disclose auth requirements or rate limits, but for this tool 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 concise, with two sentences and an example. No redundant information, front-loaded with 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?

Given the tool's simplicity and full schema coverage, the description is complete. It does not describe return format, but that is not critical for this tool's usage.

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 the schema describes all parameters. The description adds an example usage, but does not add significant new semantics 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?

The description clearly states it fetches allowed values for a specific field, using specific verb 'Fetches' and resource 'vocabulary values'. It distinguishes from sibling tools which focus on content operations.

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 clear context: 'Useful for finding valid inputs for content fields'. It does not explicitly mention when not to use or 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_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

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It correctly describes a read operation (shows state, transitions) but does not mention permissions, error cases, or side effects. Adequate but not thorough.

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, highly concise with no redundant information. Every sentence adds value.

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 exists, and the description does not specify the return format beyond mentioning workflow state and transitions. It is somewhat complete for a simple read tool but could elaborate on the structure.

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% and the parameter 'path' is described adequately. The description adds an example usage but does not elaborate on the format or constraints 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?

The description clearly states the purpose: 'Shows the current workflow state and available transitions for a content item.' It distinguishes from sibling tools like plone_transition_workflow (which transitions) and plone_get_content (which gets content, not workflow).

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 checking workflow info but does not explicitly state when to use this tool vs alternatives like plone_transition_workflow or plone_get_content. No guidance on prerequisites or when not to use.

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 BlockB

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

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states 'Deletes' but does not disclose consequences (e.g., permanent removal, permission requirements, or impact on layout). While the verb is clear, additional behavioral context is missing.

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 with example, no wasted words. Information is front-loaded: 'Deletes a single block...' immediately conveys 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?

For a simple 2-parameter tool with no output schema, the description is fairly complete: it explains purpose, identifies parameters via schema, and provides an example. Missing only minor behavioral details like permanence.

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 has 100% description coverage for both parameters, so the description adds little beyond schema. Example provides a concrete usage but no additional semantics. Baseline of 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?

Description clearly states 'Deletes a single block from a content item' with verb 'deletes' and resource 'single block'. It distinguishes from sibling tools like 'plone_add_single_block' and 'plone_update_single_block' by specifying deletion behavior.

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 deleting entire content or other block operations. Example shows syntax but does not explain context or exclusions.

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, so description must disclose behavioral traits. It mentions 'changes' but does not explain side effects, error handling (e.g., invalid transition), permission requirements, or whether the operation is reversible.

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 with a clear example; no filler words. Efficiently conveys purpose and usage.

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 no output schema and three parameters, the description covers basic purpose but lacks details on return value, errors, or constraints. For a mutation tool, more completeness is warranted.

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 describes all parameters. The description adds a usage example but no new semantic meaning beyond what the 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 the tool changes workflow state by executing a transition, with examples like 'publish' or 'submit'. It distinguishes from siblings like plone_get_workflow_info (read) and plone_update_content (direct edit).

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 provides an example usage but lacks explicit guidance on when to use this versus alternatives, nor does it mention prerequisites like permissions. Implied usage is clear for workflow transitions.

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.4/5.0
Behavior3/5

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

No annotations, so description must disclose behavior. It notes the ability to update metadata or block structure and mentions a potential 400 error for preview images. However, it omits authentication requirements, reversibility, or side effects of block replacement.

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, no fluff. Front-loaded with purpose. Every sentence contributes meaning.

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 6 parameters and no output schema, the description covers main use cases and references sibling tools for complex operations. Lacks details on return values but is adequate for an agent with complementary tools.

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%, but description adds context: the dual capability of updating metadata or block structure, and a specific example. AdditionalFields gets extra guidance on preview image errors. Adds moderate value 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?

Description clearly states 'Modifies an existing content item in Plone,' specifying a verb and resource. It distinguishes from siblings by recommending alternative tools for different tasks.

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 other tools (e.g., plone_create_blocks_layout for complex block updates, plone_add_single_block and plone_update_single_block for smaller changes) and instructs not to edit block structure directly.

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 BlockB

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

B3.3/5.0
Behavior2/5

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

Since no annotations are provided, the description must carry the full burden of behavioral disclosure. It states that the tool modifies data (write operation) but does not disclose potential side effects, permissions required, or whether the operation is reversible. The example shows the input but not the response or error conditions.

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 exceptionally concise: a single sentence stating the purpose immediately followed by a clear example. Every word contributes to understanding. There is no redundancy or unnecessary detail.

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 the tool's simplicity and the absence of an output schema, the description is moderately complete. It explains what the tool does and provides an example. However, it does not describe the return value or confirm that the tool returns the updated block. With 3 required parameters and a nested object, additional context about the expected format of blockData would improve completeness.

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?

The input schema has 100% description coverage for all three parameters (path, blockId, blockData). The description provides an example that clarifies the structure, but it does not add significant meaning beyond the schema definitions. The schema already explains each parameter adequately.

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 action ('modifies the data of a single, existing block') and specifies the resource ('within a content item, identified by its block ID'). This distinguishes it from sibling tools like plone_add_single_block and plone_remove_single_block. The example provides concrete parameter usage.

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 such as plone_update_content or plone_add_single_block. The description does not mention prerequisites or conditions for use. While the purpose is clear, the lack of when-to-use or when-not-to-use information limits its helpfulness.

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

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It explains role permissions and roles format, but doesn't disclose if updates are partial or full replacements, success/error behavior, or if any existing properties are overwritten.

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?

Three concise sentences plus an example, no wasted words. Front-loaded with purpose and immediately actionable.

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 no output schema and no annotations, the description could cover return values, error conditions, or behavior for missing optional fields. It's adequate but not complete for a mutation tool with 7 parameters.

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 baseline is 3. The description adds an example and clarifies the roles object format, which adds marginal value beyond the schema's description of the same parameter.

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 specifies the verb 'updates' and the resource 'existing user's properties' clearly. It distinguishes from sibling tools like plone_create_user (creation) and plone_delete_content (deletion).

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?

It states role requirements (Manager or self-update) and provides an example, offering clear context. However, it doesn't explicitly mention when not to use this tool versus other user management tools.

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.

  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

Scored across 22 tools

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
ResponsivenessResponsive

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.
    7 npm
    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