Ghost MCP Server
The Ghost MCP Server allows AI clients (like Claude or Cursor) to fully manage a Ghost CMS instance through 34 tools across 7 resource types:
Tag Management: Create, retrieve (list or single, with filtering by name/slug), update, and delete tags.
Image Handling: Upload images to Ghost by providing a public URL; returns a Ghost-hosted image URL and alt text.
Post Management: Create, retrieve, search, update, and delete posts with support for draft/published/scheduled statuses, tags, featured images, and SEO fields.
Page Management: Create, retrieve, search, update, and delete static pages (similar to posts but without tag support).
Member Management: Create, retrieve, search, update, and delete members/subscribers, including managing labels and newsletter subscriptions.
Newsletter Management: Create, retrieve, update, and delete newsletters, with configurable sender name, email, and auto-subscribe settings.
Tier Management: Create, retrieve, update, and delete membership tiers with pricing (monthly/yearly), currency, and benefits for free or paid tiers.
Optionally integrates with 1Password CLI for securely storing and accessing Ghost API credentials.
Supports configuration through environment variables for storing Ghost API credentials and server settings.
Implements a REST API server alongside the MCP server functionality.
Provides tools for managing Ghost CMS content including creating and retrieving posts and tags, and uploading images to a Ghost blog instance.
Runs on Node.js runtime (version 14.0.0 or higher required).
Supports development mode with automatic server restarting when code changes are detected.
Uses npm for package management and running scripts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ghost MCP Servercreate a new post titled 'Getting Started with AI Writing' with draft status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ghost MCP Server
This project (ghost-mcp-server) implements a Model Context Protocol (MCP) Server that allows an MCP client (like Cursor or Claude Desktop) to interact with a Ghost CMS instance via defined tools.
Requirements
Node.js 18.0.0 or higher
Ghost Admin API URL and Key
Related MCP server: Ghost MCP Server
Ghost MCP Server Details
This server exposes Ghost CMS management functions as MCP tools, allowing an AI client like Cursor or Claude Desktop to manage a Ghost blog.
An MCP client can discover these resources and tools by querying the running MCP server (typically listening on port 3001 by default) at its root endpoint (e.g., http://localhost:3001/). The server responds with its capabilities according to the Model Context Protocol specification.
Resources Defined
ghost/tag: Represents a tag in Ghost CMS. Containsid,name,slug,description.ghost/post: Represents a post in Ghost CMS. Containsid,title,slug,html,status,feature_image,published_at,tags, metadata fields.ghost/page: Represents a page in Ghost CMS. Similar to posts but without tag support.ghost/member: Represents a member/subscriber in Ghost CMS. Containsid,email,name,status,labels, subscriptions.ghost/newsletter: Represents a newsletter in Ghost CMS. Containsid,name,description, sender settings.ghost/tier: Represents a membership tier in Ghost CMS. Containsid,name,description, pricing, benefits.
(Refer to src/mcp_server.js for full resource schemas.)
Tools Defined
The Ghost MCP Server provides 34 tools across 7 resource types. Below is a comprehensive guide:
Tag Tools (5 tools)
ghost_create_tag- Creates a new tag.name(string, required): The name for the new tag.description(string, optional): A description for the tag.slug(string, optional): A URL-friendly slug (auto-generated if omitted).
ghost_get_tags- Retrieves a list of tags with optional filtering.name(string, optional): Filter tags by exact name.limit,page,order(optional): Pagination and sorting options.
ghost_get_tag- Retrieves a single tag by ID or slug.id(string, optional): The ID of the tag.slug(string, optional): The slug of the tag.include(string, optional): Additional resources to include (e.g., "count.posts").
ghost_update_tag- Updates an existing tag.id(string, required): The ID of the tag to update.name,description,slug(optional): Fields to update.
ghost_delete_tag- Deletes a tag permanently.id(string, required): The ID of the tag to delete.
Image Tools (1 tool)
ghost_upload_image- Downloads, processes, and uploads an image to Ghost.imageUrl(string, required): A publicly accessible URL of the image.alt(string, optional): Alt text (auto-generated if omitted).Returns:
{ url, alt }- the Ghost URL and alt text.Usage Note: Call this first to get a Ghost image URL before creating posts/pages.
Post Tools (6 tools)
ghost_create_post- Creates a new post.title(string, required): The title of the post.html(string, required): The main content in HTML format.status(string, optional): 'draft', 'published', or 'scheduled'.tags(array, optional): Tag names (auto-created if missing).published_at(ISO date, optional): Required if status is 'scheduled'.feature_image,feature_image_alt,feature_image_caption(optional): Featured image settings.custom_excerpt,meta_title,meta_description(optional): SEO fields.
ghost_get_posts- Retrieves posts with pagination and filtering.status(optional): Filter by 'published', 'draft', 'scheduled', or 'all'.limit,page,filter,order,include(optional): Query options.
ghost_get_post- Retrieves a single post by ID or slug.id(string, optional): The ID of the post.slug(string, optional): The slug of the post.include(string, optional): Relations to include (e.g., "tags,authors").
ghost_search_posts- Searches posts by title/content.query(string, required): Search query.status(optional): Filter by status.limit(optional): Max results (1-50).
ghost_update_post- Updates an existing post.id(string, required): The ID of the post to update.All other post fields are optional.
ghost_delete_post- Deletes a post permanently.id(string, required): The ID of the post to delete.
Page Tools (6 tools)
ghost_create_page- Creates a new page (pages do NOT support tags).title(string, required): The title of the page.html(string, required): The main content in HTML format.status,published_at,feature_image, SEO fields (optional).
ghost_get_pages- Retrieves pages with pagination and filtering.limit,page,filter,order,include(optional): Query options.
ghost_get_page- Retrieves a single page by ID or slug.id(string, optional): The ID of the page.slug(string, optional): The slug of the page.
ghost_search_pages- Searches pages by title/content.query(string, required): Search query.status,limit(optional): Filtering options.
ghost_update_page- Updates an existing page.id(string, required): The ID of the page to update.
ghost_delete_page- Deletes a page permanently.id(string, required): The ID of the page to delete.
Member Tools (6 tools)
ghost_create_member- Creates a new member/subscriber.email(string, required): The member's email address.name(string, optional): The member's name.note(string, optional): Internal notes about the member.labels(array, optional): Labels to assign.newsletters(array, optional): Newsletter IDs to subscribe to.
ghost_get_members- Retrieves members with pagination and filtering.limit,page,filter,order,include(optional): Query options.
ghost_get_member- Retrieves a single member by ID or email.id(string, optional): The ID of the member.email(string, optional): The email of the member.
ghost_search_members- Searches members by name or email.query(string, required): Search query.limit(optional): Max results (1-50).
ghost_update_member- Updates an existing member.id(string, required): The ID of the member to update.email,name,note,labels,newsletters(optional).
ghost_delete_member- Deletes a member permanently.id(string, required): The ID of the member to delete.
Newsletter Tools (5 tools)
ghost_create_newsletter- Creates a new newsletter.name(string, required): The newsletter name.description(string, optional): Newsletter description.sender_name,sender_email(optional): Sender configuration.subscribe_on_signup(boolean, optional): Auto-subscribe new members.
ghost_get_newsletters- Retrieves all newsletters with filtering.limit,page,filter,order(optional): Query options.
ghost_get_newsletter- Retrieves a single newsletter by ID.id(string, required): The ID of the newsletter.
ghost_update_newsletter- Updates an existing newsletter.id(string, required): The ID of the newsletter to update.name,description, sender settings (optional).
ghost_delete_newsletter- Deletes a newsletter permanently.id(string, required): The ID of the newsletter to delete.
Tier Tools (5 tools)
ghost_create_tier- Creates a new membership tier.name(string, required): The tier name.description(string, optional): Tier description.monthly_price,yearly_price(number, optional): Pricing in cents.currency(string, optional): 3-letter currency code (e.g., "USD").benefits(array, optional): List of tier benefits.
ghost_get_tiers- Retrieves all tiers with filtering.type(optional): Filter by 'free' or 'paid'.limit,page,filter(optional): Query options.
ghost_get_tier- Retrieves a single tier by ID.id(string, required): The ID of the tier.
ghost_update_tier- Updates an existing tier.id(string, required): The ID of the tier to update.Pricing, benefits, and other tier fields (optional).
ghost_delete_tier- Deletes a tier permanently.id(string, required): The ID of the tier to delete.
Installation
NPM Installation (Recommended)
Install globally using npm:
npm install -g @jgardner04/ghost-mcp-serverOr use npx to run without installing:
npx @jgardner04/ghost-mcp-serverAvailable Commands
After installation, the following CLI commands are available:
ghost-mcp-server: Starts the Express REST API server and MCP server (default)ghost-mcp: Starts the improved MCP server with transport configuration support
Configuration
Before running the server, configure your Ghost Admin API credentials:
Create a
.envfile in your working directory:# Required: GHOST_ADMIN_API_URL=https://your-ghost-site.com GHOST_ADMIN_API_KEY=your_admin_api_keyFind your Ghost Admin API URL and Key in your Ghost Admin settings under Integrations -> Custom Integrations.
Running the Server
After installation and configuration:
# Using the global installation
ghost-mcp-server
# Or using npx
npx @jgardner04/ghost-mcp-server
# Run the improved MCP server (recommended for MCP clients)
ghost-mcp
# Or with specific transport
MCP_TRANSPORT=stdio ghost-mcp
MCP_TRANSPORT=http ghost-mcp
MCP_TRANSPORT=websocket ghost-mcpAvailable npm Scripts
For development, the following scripts are available:
Script | Description |
| Start Express REST API + MCP servers |
| Start improved MCP server only |
| MCP server with stdio transport |
| MCP server with HTTP/SSE transport |
| MCP server with WebSocket transport |
| Run tests |
| Run tests with coverage report |
| Check code for linting errors |
| Auto-fix linting errors |
MCP Client Configuration
The Ghost MCP Server works with any MCP-compatible client. Below are quickstart configurations for the most common clients. For a complete guide including WebSocket and HTTP/SSE transports, see docs/MCP_CLIENT_SETUP.md.
Claude Code (including the Sidedoc project)
Create a .mcp.json file at the root of your project (e.g., the Sidedoc repository):
{
"mcpServers": {
"ghost": {
"command": "npx",
"args": ["-y", "@jgardner04/ghost-mcp-server"],
"env": {
"GHOST_ADMIN_API_URL": "https://your-ghost-site.com",
"GHOST_ADMIN_API_KEY": "your_admin_api_key"
}
}
}
}Claude Code will automatically detect this file and make all 34 Ghost MCP tools available within that project. You can also register the server globally:
claude mcp add ghost \
--scope user \
--command npx \
--args "-y @jgardner04/ghost-mcp-server" \
--env GHOST_ADMIN_API_URL=https://your-ghost-site.com \
--env GHOST_ADMIN_API_KEY=your_admin_api_keyTip: Do not commit
.mcp.jsonfiles that contain real API keys. Add.mcp.jsonto your.gitignoreor source credentials from a.envfile.
Claude Desktop
Add the server to your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ghost": {
"command": "npx",
"args": ["-y", "@jgardner04/ghost-mcp-server"],
"env": {
"GHOST_ADMIN_API_URL": "https://your-ghost-site.com",
"GHOST_ADMIN_API_KEY": "your_admin_api_key"
}
}
}
}Restart Claude Desktop after saving the file.
Cursor
Open Cursor Settings → Features → MCP Servers, click Add Server, and provide:
Name:
ghostCommand:
npx -y @jgardner04/ghost-mcp-serverEnvironment Variables:
GHOST_ADMIN_API_URLandGHOST_ADMIN_API_KEY
Development Setup
For contributors or advanced users who want to modify the source code:
Clone the Repository:
git clone https://github.com/jgardner04/Ghost-MCP-Server.git cd Ghost-MCP-ServerInstall Dependencies:
npm installConfigure Environment Variables: Create a
.envfile in the project root (see Configuration section above).Run from Source:
npm start # OR directly: # node src/index.jsDevelopment Mode (using nodemon): For development with automatic restarting:
npm run dev
Troubleshooting
401 Unauthorized Error from Ghost: Check that your
GHOST_ADMIN_API_URLandGHOST_ADMIN_API_KEYin the.envfile are correct and that the Custom Integration in Ghost is enabled.MCP Server Connection Issues: Ensure the MCP server is running (check console logs). Verify the port (
MCP_PORT, default 3001) is not blocked by a firewall. Check that the client is connecting to the correct address and port.Tool Execution Errors: Check the server console logs for detailed error messages from the specific tool implementation. Common issues include invalid input (check against tool schemas in
src/mcp_server.jsand the README guide), problems downloading fromimageUrl, image processing failures, or upstream errors from the Ghost API.Command Not Found: If
ghost-mcp-serverorghost-mcpcommands are not found after global installation, ensure npm's global bin directory is in your PATH. You can find it withnpm bin -g.Dependency Installation Issues: Ensure you have a compatible Node.js version installed (Node.js 18.0.0 or higher - see Requirements section). For global installation issues, try
npm install -g @jgardner04/ghost-mcp-server --force. For development setup, try removingnode_modulesandpackage-lock.jsonand runningnpm installagain.
Available Tools
35 toolsghost_create_memberB
Creates a new member (subscriber) in Ghost CMS.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| name | No | ||
| note | No | ||
| subscribed | No | Whether member is subscribed to newsletter | |
| comped | No | Whether member has complimentary subscription | |
| labels | No | Array of label names to associate with member | |
| newsletters | No | Array of newsletter IDs to subscribe member to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the basic action without revealing side effects, duplicate handling, email sending, or permission requirements. This is insufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, front-loading the core action. It is concise but lacks necessary details; however, for the dimension of conciseness and structure, it is well-formed and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no output schema, and no annotations, the description is severely lacking. It does not explain return values, error conditions, or use context. The single sentence is insufficient for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 57%, meaning the schema already describes some parameters (subscribed, comped, labels, newsletters). The description adds no additional meaning beyond the schema. According to guidelines, baseline is 3 when coverage is above 50%, and since description contributes nothing extra, score remains 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Creates', the resource 'new member (subscriber)', and the system 'Ghost CMS'. This clearly distinguishes it from sibling create tools like ghost_create_page or ghost_create_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other create tools (e.g., ghost_create_newsletter) or update tools (ghost_update_member). There is no mention of prerequisites or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_create_newsletterC
Creates a new newsletter in Ghost CMS with customizable sender settings and display options.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| slug | No | ||
| sender_name | No | ||
| sender_email | No | ||
| sender_reply_to | No | newsletter | |
| status | No | active | |
| visibility | No | members | |
| subscribe_on_signup | No | Whether new members are automatically subscribed | |
| sort_order | No | Display order for newsletters | |
| header_image | No | ||
| show_header_icon | No | ||
| show_header_title | No | ||
| title_font_category | No | sans-serif | |
| title_alignment | No | center | |
| show_feature_image | No | ||
| body_font_category | No | sans-serif | |
| footer_content | No | ||
| show_badge | No | ||
| show_header_name | No | ||
| show_post_title_section | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose side effects or requirements, but it only states the basic action. Does not mention permissions, output, or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 21 parameters, no output schema, and no annotations, the description is far too minimal. It does not explain return values, required parameters beyond name, or important defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% (2 of 21 params have descriptions), and the description adds no further parameter explanations. The agent gets minimal help understanding the many optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'creates' and the resource 'newsletter', distinguishing it from siblings like ghost_create_post. It also mentions customizable settings, which provides specific scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 ghost_update_newsletter or ghost_create_post. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_create_pageB
Creates a new page in Ghost CMS. Note: Pages do NOT typically use tags (unlike posts).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| html | Yes | HTML content of the page | |
| slug | No | ||
| status | No | draft | |
| visibility | No | public | |
| featured | No | ||
| feature_image | No | ||
| feature_image_alt | No | ||
| feature_image_caption | No | ||
| excerpt | No | ||
| custom_excerpt | No | ||
| meta_title | No | ||
| meta_description | No | ||
| og_image | No | ||
| og_title | No | ||
| og_description | No | ||
| twitter_image | No | ||
| twitter_title | No | ||
| twitter_description | No | ||
| canonical_url | No | ||
| tags | No | Array of tag names or IDs (rarely used for pages) | |
| authors | No | Array of author IDs or emails | |
| published_at | No | Scheduled publish time (ISO 8601 format) | |
| codeinjection_head | No | ||
| codeinjection_foot | No | ||
| custom_template | No | Custom template filename | |
| show_title_and_feature_image | No | Whether to show title and feature image on page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose behavioral traits such as return value, authentication needs, rate limits, or side effects. The note about tags adds some context but is insufficient for a creation tool with 27 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence plus a note) but overly minimal. It is not wasteful, but it omits important details that could be included without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count (27), no output schema, and many sibling tools, the description is extremely incomplete. It does not cover return values, parameter effects, or selection criteria among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (22%), and the description adds minimal value beyond the schema. It does not explain the many optional parameters, only reiterating the tags note already present in the schema. The required parameters (title, html) are not described further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('creates') and resource ('new page in Ghost CMS'). It also distinguishes pages from posts by noting that tags are not typically used, which helps differentiate from the sibling tool ghost_create_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives like ghost_create_post or ghost_create_tag. It only implies a distinction regarding tags, but no clear usage context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_create_postC
Creates a new post in Ghost CMS.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| html | Yes | HTML content of the post | |
| slug | No | ||
| status | No | draft | |
| visibility | No | public | |
| featured | No | ||
| feature_image | No | ||
| feature_image_alt | No | ||
| feature_image_caption | No | ||
| excerpt | No | ||
| custom_excerpt | No | ||
| meta_title | No | ||
| meta_description | No | ||
| og_image | No | ||
| og_title | No | ||
| og_description | No | ||
| twitter_image | No | ||
| twitter_title | No | ||
| twitter_description | No | ||
| canonical_url | No | ||
| tags | No | Array of tag names or IDs to associate with the post. On update, this fully replaces the existing tags array (not merged). | |
| authors | No | Array of author IDs or emails. On update, this fully replaces the existing authors array (not merged). | |
| published_at | No | Scheduled publish time (ISO 8601 format) | |
| codeinjection_head | No | ||
| codeinjection_foot | No | ||
| custom_template | No | Custom template filename | |
| email_only | No | Whether post is email-only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states the action, omitting critical details like whether the tool requires authentication, what happens on success (e.g., returns the created post object), or any side effects. The description contradicts annotations only if present (none here), so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but given the tool's complexity (27 parameters), it is too brief to be genuinely helpful. Conciseness should not sacrifice essential information; here it does, earning a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 27 parameters, no output schema, and no annotations. The description fails to explain return values, required permissions, default behaviors (e.g., default status 'draft' is only in schema), or how to handle errors. It is grossly incomplete for the agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 27 parameters with only 22% description coverage (6 parameters have descriptions). The tool description adds no parameter information whatsoever. For a complex tool, this is insufficient; the description should explain key parameters or usage patterns to compensate for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Creates a new post in Ghost CMS' clearly states the verb (creates) and resource (post), making the tool's purpose unambiguous. It distinguishes from sibling tools like ghost_create_member or ghost_create_page, each targeting different resources. However, it doesn't provide additional context beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, such as ghost_update_post for modifications or ghost_get_posts for retrieval. There is no mention of prerequisites, typical workflows, or exclusions, leaving the agent without contextual decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_create_tagC
Creates a new tag in Ghost CMS.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slug | No | ||
| description | No | ||
| feature_image | No | ||
| visibility | No | public | |
| meta_title | No | ||
| meta_description | No | ||
| og_image | No | ||
| og_title | No | ||
| og_description | No | ||
| twitter_image | No | ||
| twitter_title | No | ||
| twitter_description | No | ||
| codeinjection_head | No | ||
| codeinjection_foot | No | ||
| canonical_url | No | ||
| accent_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no behavioral details such as required permissions, side effects, or constraints. The description fails to compensate for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but at the cost of being under-specified. It is not appropriately sized for the tool's complexity; it should provide more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 17 parameters and no output schema, the description is severely incomplete. It does not address key aspects like required fields, behavior, or return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description adds no information about any parameters. It does not help the agent understand the meaning or usage of the 17 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'creates' and the resource 'tag' in the context of Ghost CMS. However, it does not differentiate from sibling tools like ghost_create_post, but the name already implies the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. There are no exclusions or usage context mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_create_tierC
Creates a new tier (membership level) in Ghost CMS with pricing and benefits.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| slug | No | ||
| active | No | Whether tier is currently active/available | |
| type | No | paid | |
| welcome_page_url | No | ||
| visibility | No | public | |
| trial_days | No | Number of trial days for paid tiers | |
| currency | No | ||
| monthly_price | No | ||
| yearly_price | No | ||
| benefits | No | Array of benefit names/descriptions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states 'creates' without disclosing side effects (e.g., payment integration, irreversibility), authorization needs, or error scenarios. Important behavioral traits are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, efficiently front-loading the purpose. However, it sacrifices necessary detail, which is acceptable for conciseness but impacts transparency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, no output schema, no annotations), the description is insufficient. It does not indicate return values, error conditions, or behavioral context, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (25%). The description adds no explanation of parameters beyond 'with pricing and benefits', leaving the meaning and relationships of fields like currency, prices, type, and visibility unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Creates' and the resource 'tier (membership level) in Ghost CMS', and specifies 'with pricing and benefits', which distinguishes it from sibling tools like ghost_create_member or ghost_create_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as ghost_update_tier for modifications or ghost_get_tiers for retrieval. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_delete_memberA
Deletes a member from Ghost CMS by ID. This operation is permanent and cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It discloses that the operation is permanent and cannot be undone, which is critical. However, it lacks details on side effects, authorization needs, or what happens on invalid IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no redundancy. First sentence states the purpose, second adds behavioral warning. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and no output schema, the description covers the essential purpose and irreversibility. It could mention what happens if the ID is invalid, but overall is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It does not add any meaning beyond the schema for the 'id' parameter—no explanation of format, source, or typical use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Deletes a member from Ghost CMS by ID', specifying the verb (delete), resource (member), and method (by ID). It distinguishes from sibling tools like ghost_delete_post or ghost_delete_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., ghost_update_member). The only usage hint is that the operation is permanent, but no prerequisites or context for use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_delete_newsletterB
Deletes a newsletter from Ghost CMS by ID. This operation is permanent and cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states the operation is permanent and cannot be undone, which is a critical behavioral trait. However, it does not mention authorization needs, rate limits, or what happens if the ID is invalid or the newsletter doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff. Every word adds value: the action, resource, method, and consequence. Front-loaded with the verb 'Deletes'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (1 param, no output schema), and the description covers the essential purpose and consequence. However, it lacks information about return values (e.g., success confirmation) and error behavior, which would be helpful for an agent. Given no output schema, completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'id' is described merely as 'by ID' in the description. The schema provides a pattern (24-character hex), but the description adds no further meaning, such as format hints or example. With 0% schema description coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('deletes a newsletter') and the resource ('newsletter from Ghost CMS'), with the specific method ('by ID'). This distinguishes it from sibling tools for other resources (e.g., ghost_delete_member, ghost_delete_post) and from create/update/get operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. For example, it doesn't mention that this is for permanent deletion only, and that a temporary disable could be achieved via ghost_update_newsletter. No context on prerequisites 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.
ghost_delete_pageA
Deletes a page from Ghost CMS by ID. This operation is permanent and cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the page to delete. |
TDQS
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 explicitly notes that the operation is permanent and irreversible, which is a critical behavioral trait beyond a simple delete. However, it could mention required permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, direct sentences with no filler. The key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one required parameter and no output schema, the description covers the essential functionality and the irreversible nature. However, it lacks details about success/error responses or any required permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already explains the 'id' parameter. The description does not add new meaning beyond the schema, so it meets the baseline with no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (deletes), resource (page from Ghost CMS), and identifier (by ID). It differentiates from sibling tools like ghost_delete_post or ghost_delete_tag by specifying 'page'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as ghost_delete_post or ghost_delete_tag. No mention of prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_delete_postB
Deletes a post from Ghost CMS by ID. This operation is permanent and cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation is 'permanent and cannot be undone', which is critical behavioral info. However, it omits details like side effects or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. Front-loaded with the core purpose, followed by the critical warning. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description covers the basics (what it does, permanence) but misses usage context and parameter guidance, leaving gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only says 'by ID' without explaining the format, constraints, or where to obtain the ID. Given the pattern in the schema, more explanation would help the agent use it correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Deletes a post from Ghost CMS by ID', specifying the action, resource, and input. It distinguishes from sibling delete tools (e.g., ghost_delete_member) by explicitly naming the resource as 'post'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention that other delete tools exist or provide context for choosing this one, such as prerequisites or safety checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_delete_tagB
Deletes a tag from Ghost CMS by ID. This operation is permanent and cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is permanent and irreversible, which is critical behavioral info. However, it omits potential side effects (e.g., cascading removal from posts), authorization requirements, or success/failure indicators, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the action ('Deletes a tag') and immediately adding the critical behavioral note about permanence. No filler or redundant information, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter delete tool with no annotations or output schema, the description provides the core action and durability warning. However, it lacks context about what the response looks like or any error handling, making it adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'id' with 0% description coverage. The description only says 'by ID', adding no extra meaning beyond the schema's pattern. It does not explain what the ID represents (e.g., a Ghost tag ID) or how to obtain it, which is insufficient given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Deletes') and resource ('tag from Ghost CMS by ID'), making the tool's purpose unambiguous. It distinguishes itself from sibling tools like create, get, or update tags, and other delete operations (e.g., ghost_delete_member) by mentioning 'tag'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any pointers about prerequisites or contraindications (e.g., what happens if a tag is attached to posts). It simply states the action without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_delete_tierB
Deletes a tier (membership level) from Ghost CMS by ID. This operation is permanent and cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It correctly flags permanence but omits other key traits like side effects on associated members, auth requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy, front-loading the action and a vital warning. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with no output schema, the description is minimally complete. However, it lacks information about return values, error cases, or cascading effects, which would be helpful given the complexity of membership systems.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must add meaning. It mentions 'by ID' but does not explain the 'id' parameter's format (pattern) beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('deletes'), resource ('tier (membership level)'), and method ('by ID'), clearly distinguishing it from sibling delete tools for other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description warns that the operation is permanent and cannot be undone, implying caution, but does not provide explicit guidance on when to use delete vs update or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_memberA
Retrieves a single member from Ghost CMS by ID or email. Provide either id OR email.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The ID of the member to retrieve. | |
| No | The email of the member to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description indicates a read-only, idempotent retrieval operation. It lacks disclosure of potential errors (e.g., member not found), authentication needs, or return behavior. The minimal description just states the action without additional 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences with no filler. Every word serves a purpose: identifying the action, resource, lookup criteria, and usage constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with two fully described parameters and no output schema, the description is adequate but lacks completeness regarding error states, return format, and prerequisites. It doesn't mention that the tool returns a member object or what happens when no member is found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds semantic value beyond the schema by specifying that 'id OR email' are alternatives (mutually exclusive), which is not captured in the schema's individual property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'a single member from Ghost CMS' with the specific lookup methods 'by ID or email'. This distinguishes it from sibling tools like ghost_get_members (plural, returns list) and ghost_search_members (search-based).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the key usage guideline 'Provide either id OR email', indicating the parameters are mutually exclusive. However, it does not explicitly contrast with ghost_get_members or ghost_search_members for when to use each, though the names imply distinct purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_membersB
Retrieves a list of members (subscribers) from Ghost CMS with optional filtering, pagination, and includes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No | ||
| filter | No | NQL filter string (e.g., "status:paid+subscribed:true") | |
| include | No | Comma-separated list of relations (e.g., "labels,newsletters") | |
| order | No | Order results (e.g., "created_at DESC", "name ASC") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'Retrieves a list', implying a read-only operation, but fails to disclose behavioral traits such as pagination behavior, error handling, authentication requirements, or the impact of NQL filtering. The description does not add value beyond what is implied by the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence of 14 words, front-loaded with the key action. It is concise and efficient, though it could benefit from expanding slightly to cover usage guidelines without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description is insufficient. It does not explain the NQL filter format, pagination details, or return value structure. The context signals indicate complexity, but the description fails to provide a complete understanding for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, with filter, include, and order already described in the schema. The description adds the phrase 'optional filtering, pagination, and includes', which aligns with the parameters but does not provide additional meaning beyond acknowledging their existence. Baseline 3 is appropriate as schema does partial work and description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieves', the resource 'list of members (subscribers)', and the context 'Ghost CMS'. It also mentions optional filtering, pagination, and includes, which distinguishes it from siblings like ghost_get_member (singular) and ghost_search_members (likely search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like ghost_search_members or ghost_get_member. Despite many sibling tools, no explicit context or exclusions are given, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_newsletterB
Retrieves a single newsletter from Ghost CMS by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic retrieval operation without disclosing any behavioral traits like idempotency, side effects, or response details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, clear, and no unnecessary words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, the description covers the basic retrieval but lacks information about error states, response structure, or any special behavior. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description only mentions 'by ID' without explaining the format or how to obtain the ID. It adds minimal value beyond the schema's pattern and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (retrieves), resource (single newsletter), and method (by ID). It distinguishes well from sibling tools like ghost_get_newsletters and ghost_create_newsletter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as ghost_get_newsletters or ghost_search_*. No context about prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_newslettersB
Retrieves a list of newsletters from Ghost CMS with optional filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No | ||
| filter | No | NQL filter string (e.g., "status:active") | |
| order | No | Order results (e.g., "sort_order ASC", "created_at DESC") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It states the tool is non-destructive ('Retrieves a list'), but lacks details about pagination behavior, rate limits, or what happens when no results are found. A read operation with minimal parameters, so a 3 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It is front-loaded and easy to scan. Every character earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should provide more context (e.g., return format, pagination details). It is sufficient for a simple list endpoint but incomplete for a fully self-contained tool definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only 'filter' and 'order' have descriptions). The tool description adds no parameter information beyond what is in the schema. The 'limit' and 'page' parameters have defaults and constraints but no semantic explanation in the description, missing an opportunity to clarify pagination usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Retrieves a list of newsletters from Ghost CMS with optional filtering.' However, it does not explicitly distinguish itself from the sibling tool 'ghost_get_newsletter' which retrieves a single newsletter. The name and context imply it is a list endpoint, but direct differentiation would improve clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 other list or search tools (e.g., ghost_get_newsletters vs ghost_search_posts). There is no mention of pagination, limits, or appropriate filtering scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_pageB
Retrieves a single page from Ghost CMS by ID or slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The ID of the page to retrieve. | |
| slug | No | The slug of the page to retrieve. | |
| include | No | Comma-separated list of relations to include (e.g., "authors"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden, but only states 'retrieves,' implying read-only. It does not disclose behavior like authentication needs, error handling, or what happens if both id and slug are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence with no extraneous information, efficiently conveying the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple retrieval tool, but lacks guidance on parameter usage (e.g., that at least one of id or slug should be provided) and no output schema exists. Minimal context beyond basic purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The tool description adds no additional parameter semantics, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single page from Ghost CMS by ID or slug, using a specific verb and resource. It distinguishes itself from sibling tools like ghost_get_pages (plural) and ghost_search_pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as ghost_get_pages for listing or ghost_search_pages for filtering. No information on parameter choice between id and slug or use of include.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_pagesA
Retrieves a list of pages from Ghost CMS with pagination, filtering, and sorting options.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No | ||
| filter | No | NQL filter string (e.g., "status:published+featured:true") | |
| include | No | Comma-separated list of relations (e.g., "tags,authors") | |
| fields | No | Comma-separated list of fields to return | |
| formats | No | Comma-separated list of formats (html, plaintext, mobiledoc) | |
| order | No | Order results (e.g., "published_at DESC", "title ASC") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It correctly implies a read-only operation ('retrieves') but lacks details on authentication, rate limits, or any side effects. It provides a basic overview but not deep transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 12 words. It is front-loaded with the core action and resource, and every word contributes meaning. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the basic purpose and features like pagination, it is incomplete given the lack of an output schema. It does not explain the response structure (e.g., pagination metadata), leaving the agent without a full picture of what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, with 5 out of 7 parameters having descriptions. The description adds general context about pagination, filtering, and sorting but does not elaborate on parameters like limit and page beyond what the schema (with defaults) provides. It offers marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieves', the resource 'pages from Ghost CMS', and explicitly mentions features like pagination, filtering, and sorting. This distinguishes it from siblings like ghost_get_page (single page) and ghost_search_pages (search-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives like ghost_get_page or ghost_search_pages. There is no mention of exclusions or specific contexts, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_postB
Retrieves a single post from Ghost CMS by ID or slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The ID of the post to retrieve. | |
| slug | No | The slug of the post to retrieve. | |
| include | No | Comma-separated list of relations to include (e.g., "tags,authors"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states basic retrieval function but omits behavioral traits like return structure, error handling, authentication needs, or rate limits. For a read tool, more disclosure is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no wasted words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and description does not hint at return structure or pagination. For a retrieval tool with many siblings, more context is needed to fully understand its behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for id, slug, and include. Description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieves', resource 'single post from Ghost CMS', and method 'by ID or slug', distinguishing it from sibling tools like ghost_get_posts (plural) and ghost_search_posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs alternatives (e.g., ghost_get_posts for multiple posts, ghost_search_posts for filtered results). The description is too minimal to help with tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_postsB
Retrieves a list of posts from Ghost CMS with pagination, filtering, and sorting options.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No | ||
| filter | No | NQL filter string (e.g., "status:published+featured:true") | |
| include | No | Comma-separated list of relations (e.g., "tags,authors") | |
| fields | No | Comma-separated list of fields to return | |
| formats | No | Comma-separated list of formats (html, plaintext, mobiledoc) | |
| order | No | Order results (e.g., "published_at DESC", "title ASC") | |
| status | No | Filter posts by status. Options: published, draft, scheduled, all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'retrieves' indicating a read operation, but does not disclose authentication needs, rate limits, side effects (none expected), or pagination details beyond schema. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the core action. Every word contributes meaning; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite many parameters and no output schema, the description does not explain return structure (e.g., array of posts with pagination meta) or how to interpret results. Basic completeness is lacking for complex usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (6 of 8 parameters have descriptions). The tool description adds no extra meaning beyond the structured schema. The baseline 3 is appropriate given high schema coverage, but the description does not compensate for the undocumented limit and page parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Retrieves a list of posts from Ghost CMS with pagination, filtering, and sorting options.' This clearly identifies the verb (retrieves), resource (posts from Ghost CMS), and key capabilities (pagination, filtering, sorting). It distinguishes from siblings like ghost_get_post (single) and ghost_search_posts (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are mentioned. The description implies usage for listing posts with options, but does not differentiate from ghost_get_post or ghost_search_posts. Given the large sibling list, better guidance would improve score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_tagB
Retrieves a single tag from Ghost CMS by ID or slug.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The ID of the tag to retrieve. | |
| slug | No | The slug of the tag to retrieve. | |
| include | No | Additional resources to include (e.g., "count.posts"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states 'Retrieves' (read-only), but does not address edge cases like providing both id and slug, or what happens if 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 12 words, front-loaded with purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple getter, but lacks mention of error conditions (e.g., tag not found) and no output schema explains return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100% with clear descriptions for each parameter. Description does not add new meaning beyond what schema already provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieves', resource 'tag', and method 'by ID or slug'. Distinguishes from sibling 'ghost_get_tags' which retrieves multiple tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'ghost_get_tags'. Implied by name but no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_tagsA
Retrieves a list of tags from Ghost CMS with pagination, filtering, sorting, and relation inclusion. Supports filtering by name, slug, visibility, or custom NQL filter expressions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by exact tag name (legacy parameter, converted to filter internally) | |
| slug | No | Filter by tag slug | |
| visibility | No | Filter by visibility | |
| limit | No | Number of tags to return (1-100) or "all" for all tags | |
| page | No | ||
| filter | No | NQL filter string | |
| include | No | Comma-separated list of relations to include (e.g., "count.posts") | |
| order | No | Order results (e.g., "name ASC", "created_at DESC") |
TDQS
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 core behaviors (pagination, filtering, sorting) but does not mention any side effects, rate limits, default behaviors (e.g., default limit), or error conditions. It adequately describes the read nature but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 32 words across two sentences, front-loading the main purpose. Every sentence contributes meaning with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich parameter set (8 parameters, mostly described) and no output schema, the description covers the essential functionality. It could mention default limit, pagination behavior, or return format, but the schema fills many gaps. Adequate for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is high (88%), with most parameters already described. The description adds value by summarizing the capabilities (pagination, filtering, sorting, relation inclusion) and mentioning filtering by name, slug, visibility, or NQL, which ties the parameters together beyond individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of tags from Ghost CMS, specifying key features like pagination, filtering, sorting, and relation inclusion. This distinguishes it from sibling tools like ghost_get_tag (single tag) and ghost_get_tiers (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for listing tags with filters, but it does not explicitly state when to use it versus alternatives like ghost_get_tag for a single tag. No exclusions or when-not-to-use guidance is provided, though the context from sibling names hints at the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_tierB
Retrieves a single tier (membership level) from Ghost CMS by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states basic retrieval; no disclosure of side effects, idempotency, authentication needs, or rate limits. This is insufficient for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, short sentence with no wasted words. All essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter retrieval tool without output schema, description covers purpose and parameter reference but lacks behavioral and return-value context. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description adds 'by ID' but does not explain the format or meaning of the ID parameter beyond the schema pattern. Lacks compensation for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieves', resource 'single tier (membership level)' from Ghost CMS, and method 'by ID'. This distinguishes it from sibling ghost_get_tiers which retrieves multiple tiers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied for fetching a single tier by ID, but no explicit guidance on when to use this vs. ghost_get_tiers or other tier-related tools. No when-not or alternative hints provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_get_tiersA
Retrieves a list of tiers (membership levels) from Ghost CMS with optional filtering by type (free/paid).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No | ||
| filter | No | NQL filter string (e.g., "type:paid+active:true") | |
| include | No | Comma-separated list of relations to include | |
| order | No | Order results (e.g., "monthly_price ASC", "created_at DESC") |
TDQS
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 retrieval and filtering by type, but omits details on pagination (limit/page), ordering, includes, and authentication requirements. The description adds moderate value beyond the schema but has significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with zero waste. It is front-loaded with the primary action and resource, and efficiently communicates filtering capability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explain return values, but it only says 'list of tiers'. It lacks details on recommended usage (e.g., when to use pagination parameters), potential errors, or required permissions. For a tool with 5 optional parameters and no annotations, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%. The description adds context that filtering can be by type (free/paid), which clarifies the 'filter' parameter's usage. However, it does not explain other parameters like limit, page, include, or order beyond what is in the schema. The baseline of 3 is appropriate as the description partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieves a list'), the resource ('tiers (membership levels)'), and the context ('from Ghost CMS with optional filtering by type (free/paid)'). It effectively distinguishes from siblings like 'ghost_get_tier' (single) and 'ghost_create_tier' (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing tiers with optional filtering, but lacks explicit guidance on when to use this tool versus alternatives (e.g., ghost_get_tier for a single tier, ghost_search_members for searching). No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_search_membersB
Searches for members by name or email in Ghost CMS.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against member name or email. | |
| limit | No | Maximum number of results to return (1-50). Default is 15. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states the search fields but does not disclose behavioral traits such as read-only nature, result ordering, case sensitivity, partial matching, or error handling. Details like these are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, precise sentence of 10 words. It contains no redundant information and is efficiently structured to convey the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is too minimal. It does not explain return format, pagination, or behavior when no results are found. An agent would need additional information to use this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters have descriptions. The tool description adds no new meaning beyond the schema; it simply repeats that search is by name or email. Baseline is 3, and description does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Searches for members'), the search fields ('by name or email'), and the system ('Ghost CMS'). It unambiguously differentiates from sibling tools like `ghost_get_members` (which lists all members) and `ghost_search_pages` (which searches a different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding specific members by name or email, but it does not explicitly state when to prefer this over alternatives such as `ghost_get_members` or `ghost_get_member`. No exclusions or context about when not to use it are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_search_pagesB
Search for pages in Ghost CMS by query string with optional status filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find in page titles. | |
| status | No | Filter by page status. Default searches all statuses. | |
| limit | No | Maximum number of results (1-50). Default is 15. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states basic functionality. It does not disclose behavioral traits like pagination behavior, response format, or any side effects. The agent cannot infer important details such as result ordering or how the limit parameter affects output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose and key parameters. No extraneous words, perfectly front-loaded, and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is insufficient for a search tool. It does not mention return format, pagination, or any limitations. The agent might need to guess how results are structured or if there are any constraints beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 minimal value by summarizing 'by query string with optional status filtering.' It does not provide additional context beyond what the schema offers, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for pages in Ghost CMS by query string with optional status filtering.' It specifies the verb (search), resource (pages), and key parameters, distinguishing it from sibling tools like ghost_search_posts and ghost_search_members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs alternatives such as ghost_get_pages or ghost_search_posts. The description does not mention exclusions, prerequisites, or preferred scenarios, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_search_postsB
Search for posts in Ghost CMS by query string with optional status filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find in post titles. | |
| status | No | Filter by post status. Default searches all statuses. | |
| limit | No | Maximum number of results (1-50). Default is 15. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only mentions searching and filtering. It does not disclose behavioral traits like pagination (limit parameter with default), sorting, return format, or performance implications. The description is insufficient for an agent to understand full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous words. However, it could be slightly expanded to include key details like pagination or default status, which would improve utility without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is incomplete. It does not explain what the tool returns, how results are ordered, or how query matches titles. For a search tool with three parameters, more context is needed for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all parameters have descriptions in the schema. The description adds minimal value by restating 'by query string' and 'optional status filtering', but does not explain the limit parameter or nuances of the query field (e.g., title-only search). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search'), resource ('posts'), and method ('by query string') with optional status filtering. It distinguishes this tool from siblings like ghost_get_posts or ghost_search_members by specifying the search functionality and filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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., ghost_get_posts, ghost_search_pages). There is no mention of when not to use it or any prerequisites, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_set_feature_imageA
Uploads an image and assigns it as the feature image of a post or page (with optional alt text and caption) in one call. Accepts the same imageUrl/imagePath/imageBase64 input modes as ghost_upload_image. Returns the updated resource. If the update fails after the upload, the error response includes the orphaned image URL.
| Name | Required | Description | Default |
|---|---|---|---|
| imageUrl | No | The publicly accessible URL of the image to download and upload. | |
| imagePath | No | Absolute path to a local image file. Only accepted when the GHOST_MCP_IMAGE_ROOT env var is set; paths must resolve inside that root. | |
| imageBase64 | No | Base64-encoded image bytes (with or without data: URI prefix). Decoded size capped at 5MB to respect MCP transport limits. Requires mimeType. | |
| mimeType | No | MIME type for imageBase64 input (e.g. image/png, image/jpeg, image/svg+xml). Required when imageBase64 is used. | |
| alt | No | Alt text for the image. If omitted, a default will be generated from the filename. | |
| purpose | No | Intended use. Ghost validates format/size per purpose (icon/profile_image must be square; icon also accepts ICO). | |
| ref | No | Caller-supplied identifier (e.g. original filename). Ghost echoes it back in the response. | |
| type | Yes | Which resource to attach the feature image to. | |
| id | Yes | ID of the post or page. | |
| caption | No | Optional HTML caption for the feature image (max 5000 chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description discloses upload-then-assign order and orphaned image URL on failure. Adequate for a mutation tool, though auth and rate limits not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. First sentence states core action, second provides error handling detail. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description notes returns updated resource. For 10-param tool with no annotations, description covers key behavioral and error info adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100%, description adds context (e.g., same input modes as ghost_upload_image, alt default from filename). Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states verb (uploads and assigns), resource (feature image of post/page), and distinguishes from ghost_upload_image by combining both actions in one call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly describes the one-call convenience and mentions same input modes as ghost_upload_image, implicitly guiding when to use it. Could explicitly state alternatives but sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_update_memberB
Updates an existing member in Ghost CMS. All fields except id are optional.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| No | |||
| name | No | ||
| note | No | ||
| subscribed | No | Whether member is subscribed to newsletter | |
| comped | No | Whether member has complimentary subscription | |
| labels | No | Array of label names to associate with member | |
| newsletters | No | Array of newsletter IDs to subscribe member to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states 'updates' but does not disclose error handling (e.g., missing member), partial update behavior, or side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is brief and front-loaded but lacks elaboration on update behavior. Not overly verbose, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters and no output schema, description is insufficient. Does not explain return values, error cases, or behavior when optional fields are omitted. Inadequate for a complex update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (4 of 8 params have descriptions). Description adds no additional meaning beyond schema, only restating that optional fields exist. Baseline score due to partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'updates' and resource 'existing member in Ghost CMS'. It distinguishes from sibling tools like ghost_create_member and ghost_get_member by specifying 'existing' and 'update'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs alternatives. Does not mention prerequisites or conditions for updating (e.g., member must exist). Lacks when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_update_newsletterB
Updates an existing newsletter in Ghost CMS. Can update name, description, sender settings, and display options.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| description | No | ||
| slug | No | ||
| sender_name | No | ||
| sender_email | No | ||
| sender_reply_to | No | newsletter | |
| status | No | active | |
| visibility | No | members | |
| subscribe_on_signup | No | Whether new members are automatically subscribed | |
| sort_order | No | Display order for newsletters | |
| header_image | No | ||
| show_header_icon | No | ||
| show_header_title | No | ||
| title_font_category | No | sans-serif | |
| title_alignment | No | center | |
| show_feature_image | No | ||
| body_font_category | No | sans-serif | |
| footer_content | No | ||
| show_badge | No | ||
| show_header_name | No | ||
| show_post_title_section | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states 'updates' and lists field categories, but does not disclose whether it performs partial updates, required permissions, side effects, or return behavior. This is insufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action. Every word earns its place, though it could benefit from a more structured listing of updatable fields for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (22 parameters, no output schema, no annotations), the description is too minimal. It omits crucial context such as partial update behavior, return value, error conditions, and required permissions, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has low description coverage (9%) and the description only groups parameters into broad categories ('name, description, sender settings, and display options'). It adds no specific meaning to individual parameters beyond what the schema already provides, leaving the agent to infer mappings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing newsletter in Ghost CMS, and lists categories of updatable fields. This effectively distinguishes it from sibling tools like ghost_create_newsletter and ghost_get_newsletter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when updating an existing newsletter, but does not explicitly instruct when to use this tool versus alternatives (e.g., create or get). No prerequisites or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_update_pageB
Updates an existing page in Ghost CMS. Can update title, content, status, images, and SEO fields. Only the provided fields are changed; omitted fields remain unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the page to update. | |
| title | No | ||
| html | No | HTML content of the page | |
| slug | No | ||
| status | No | draft | |
| visibility | No | public | |
| featured | No | ||
| feature_image | No | ||
| feature_image_alt | No | ||
| feature_image_caption | No | ||
| excerpt | No | ||
| custom_excerpt | No | ||
| meta_title | No | ||
| meta_description | No | ||
| og_image | No | ||
| og_title | No | ||
| og_description | No | ||
| twitter_image | No | ||
| twitter_title | No | ||
| twitter_description | No | ||
| canonical_url | No | ||
| tags | No | Array of tag names or IDs (rarely used for pages) | |
| authors | No | Array of author IDs or emails | |
| published_at | No | Scheduled publish time (ISO 8601 format) | |
| codeinjection_head | No | ||
| codeinjection_foot | No | ||
| custom_template | No | Custom template filename | |
| show_title_and_feature_image | No | Whether to show title and feature image on page |
TDQS
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 only mentions partial update behavior, but lacks details on permissions, rate limits, error handling, or what happens if the page does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the main action, and every word adds value without repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 28 parameters, no output schema, and no annotations, the description is too brief. It does not explain the response format, validation rules, or the relationship between fields like status and published_at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, and the description groups parameters into categories (e.g., 'SEO fields') but does not explain individual parameters or their constraints beyond the schema, failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it updates an existing Ghost CMS page, lists the types of fields that can be updated (title, content, status, images, SEO), and the sibling tools include ghost_create_page and ghost_update_post, making the distinction clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that only provided fields are changed, which is a critical usage note, but it does not provide when to prefer this over ghost_update_post or any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_update_postA
Updates an existing post in Ghost CMS. Can update title, content, status, tags, images, and SEO fields. Only the provided fields are changed; omitted fields remain unchanged. Note: tags and authors arrays are fully replaced, not merged with existing values.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| html | No | HTML content of the post | |
| slug | No | ||
| status | No | draft | |
| visibility | No | public | |
| featured | No | ||
| feature_image | No | ||
| feature_image_alt | No | ||
| feature_image_caption | No | ||
| excerpt | No | ||
| custom_excerpt | No | ||
| meta_title | No | ||
| meta_description | No | ||
| og_image | No | ||
| og_title | No | ||
| og_description | No | ||
| twitter_image | No | ||
| twitter_title | No | ||
| twitter_description | No | ||
| canonical_url | No | ||
| tags | No | Array of tag names or IDs to associate with the post. On update, this fully replaces the existing tags array (not merged). | |
| authors | No | Array of author IDs or emails. On update, this fully replaces the existing authors array (not merged). | |
| published_at | No | Scheduled publish time (ISO 8601 format) | |
| codeinjection_head | No | ||
| codeinjection_foot | No | ||
| custom_template | No | Custom template filename | |
| email_only | No | Whether post is email-only | |
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It discloses partial update behavior and replacement semantics for tags and authors. Missing details on authorization, rate limits, or side effects, but adequate for a straightforward update.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the action and scope. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 28 parameters, no annotations, and no output schema, the description is somewhat minimal. It covers the update behavior and replacement caveat but omits details on required id, return value, and error handling. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 21%, so many parameters lack descriptions. The description adds value by mentioning updateable categories but does not detail individual parameters beyond tags/authors. It does not fully compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates an existing post in Ghost CMS and lists the types of fields (title, content, status, tags, images, SEO). This distinguishes it from create, delete, and page update siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that omitted fields remain unchanged and tags/authors are fully replaced, which guides usage. It does not explicitly state when to use vs alternatives like ghost_update_page, but the name and context make it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_update_tagC
Updates an existing tag in Ghost CMS.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| slug | No | ||
| description | No | ||
| feature_image | No | ||
| visibility | No | public | |
| meta_title | No | ||
| meta_description | No | ||
| og_image | No | ||
| og_title | No | ||
| og_description | No | ||
| twitter_image | No | ||
| twitter_title | No | ||
| twitter_description | No | ||
| codeinjection_head | No | ||
| codeinjection_foot | No | ||
| canonical_url | No | ||
| accent_color | No | ||
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only says 'updates', omitting behavioral traits like merge vs. overwrite, permission requirements, or side effects. This is insufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) with no fluff. However, this brevity sacrifices necessary detail, making it less useful overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 18 parameters, no annotations, and no output schema, the description is grossly incomplete. It fails to explain how to identify the tag (id required), which fields can be updated, or what the response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds no information about parameters. Despite 18 parameters, the description does not explain their roles or usage, leaving the agent to rely solely on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'updates' and the resource 'existing tag' within 'Ghost CMS', making the purpose understandable. However, it does not differentiate this tool from other update tools like ghost_update_post, but the resource name is sufficiently specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as prerequisites (e.g., tag must exist) or alternatives (e.g., ghost_create_tag). The single-sentence description offers no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_update_tierC
Updates an existing tier (membership level) in Ghost CMS. Can update pricing, benefits, and other tier properties.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| description | No | ||
| slug | No | ||
| active | No | Whether tier is currently active/available | |
| type | No | paid | |
| welcome_page_url | No | ||
| visibility | No | public | |
| trial_days | No | Number of trial days for paid tiers | |
| currency | No | ||
| monthly_price | No | ||
| yearly_price | No | ||
| benefits | No | Array of benefit names/descriptions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only says 'updates' but doesn't disclose side effects, idempotency, authorization needs, or whether omitted fields remain unchanged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action, but could include more context without being verbose. It is concise but not optimal given the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters, low schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain return values or partial update semantics, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (23%). Description groups parameters into 'pricing, benefits, and other tier properties' but adds little detail about individual parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates an existing tier, mentioning pricing, benefits, and other properties. This distinguishes it from create, get, and delete tier tools among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 ghost_create_tier for new tiers. No prerequisites or exclusions mentioned beyond the fact that it updates an existing tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ghost_upload_imageA
Uploads an image to Ghost CMS. Accepts a remote URL, a local file path (when GHOST_MCP_IMAGE_ROOT is configured), or a base64 payload. Returns the Ghost image URL, alt text, and ref (when Ghost echoes it).
| Name | Required | Description | Default |
|---|---|---|---|
| imageUrl | No | The publicly accessible URL of the image to download and upload. | |
| imagePath | No | Absolute path to a local image file. Only accepted when the GHOST_MCP_IMAGE_ROOT env var is set; paths must resolve inside that root. | |
| imageBase64 | No | Base64-encoded image bytes (with or without data: URI prefix). Decoded size capped at 5MB to respect MCP transport limits. Requires mimeType. | |
| mimeType | No | MIME type for imageBase64 input (e.g. image/png, image/jpeg, image/svg+xml). Required when imageBase64 is used. | |
| alt | No | Alt text for the image. If omitted, a default will be generated from the filename. | |
| purpose | No | Intended use. Ghost validates format/size per purpose (icon/profile_image must be square; icon also accepts ICO). | |
| ref | No | Caller-supplied identifier (e.g. original filename). Ghost echoes it back in the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses env var requirement for local paths, base64 size cap (5MB), mimeType requirement, and return fields. Could add more on error handling or auth, but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, input methods with conditions, return values. No unnecessary words, front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description mentions return fields (URL, alt, ref). Complexity is moderate with 7 params; description covers input constraints and output format adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description adds value by explaining conditional constraints (env var for imagePath, size cap and mimeType for imageBase64, Ghost validation for purpose).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Uploads an image to Ghost CMS' and specifies three input methods (URL, local path, base64). It distinguishes from siblings which are CRUD on other entities, not image upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists input methods with conditions (e.g., local file requires GHOST_MCP_IMAGE_ROOT, base64 requires mimeType). It doesn't explicitly contrast with alternatives, but no sibling tool does image upload, so guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource-action pair (member, newsletter, page, post, tag, tier, image) with clear boundaries. Even search and get operations are differentiated by query type, avoiding ambiguity.
All tools follow the pattern ghost_<action>_<resource> with consistent verb usage (create, delete, get, update, search, upload, set). Singular nouns for single-item retrieval and plural for lists, making the set predictable.
35 tools is on the higher side but justified by the comprehensive CRUD coverage for 6 resource types plus image handling. Each tool serves a clear purpose without redundancy, though the count is slightly above typical optimal range.
The tool surface covers create, read (single/list), update, delete, and search for main resources, along with image upload and feature image assignment. No obvious gaps exist for Ghost CMS content management workflows.
Maintenance
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables management of Ghost blog content (posts, pages, and tags) through the Ghost Admin API with SSE transport support.
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables management of Ghost blog content (posts, pages, and tags) through Claude, supporting both SSE and stdio transports.3
- AlicenseAqualityDmaintenanceAn MCP server for interacting with Ghost CMS blogs through AI assistants, supporting both read-only content and full admin operations.8232ISC
- AlicenseNot gradedqualityBmaintenanceMCP server for managing Ghost blogs from AI coding editors. Create, edit, publish, and sync blog posts directly from tools like Claude Code or Cursor.261MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jgardner04/Ghost-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server