Skip to main content
Glama

Misar.Blog MCP Server

Publish and manage articles, series, comments, reactions, newsletters, and analytics — from any AI assistant.

npm license

23 tools · 8 prompts · 5 resources · 6 agent skills

Works with Claude (Desktop, Code, and web), Cursor, VS Code, Windsurf, Cline, Zed, Gemini CLI, ChatGPT, and any other MCP-compatible client — over stdio or Streamable HTTP.


Install

npx -y @smithery/cli install misar/misarblog-mcp --client claude

Claude Code

claude mcp add misarblog -- npx -y @misarblog/mcp@latest

Manual (any client)

{
  "mcpServers": {
    "misarblog": {
      "command": "npx",
      "args": ["-y", "@misarblog/mcp@latest"],
      "env": { "MISARBLOG_API_KEY": "mbk_your_key_here" }
    }
  }
}

Ready-made configs for every client live in connectors/.

Remote (no install)

{
  "mcpServers": {
    "misarblog": {
      "type": "streamable-http",
      "url": "https://www.misar.blog/api/mcp",
      "headers": { "Authorization": "Bearer mbk_your_key_here" }
    }
  }
}

Related MCP server: WordPress MCP

Authentication

Two options — no copy-paste needed for the first:

  1. Browser login. Start the server with no key and run the login tool. It opens the Misar.Blog consent screen, you review the requested permissions, and the key is delivered straight back and saved to ~/.misarblog/config.json.

  2. API key. Create one at https://www.misar.blog/dashboard/settings/api-keys and set MISARBLOG_API_KEY.

Self-hosted instances: set MISARBLOG_BASE_URL.


Tools

Tool

Description

upgrade

Show your current Misar.Blog plan, how much of each quota you have left, and what upgrading unlocks.

get_profile

Get your Misar.Blog creator profile.

get_analytics_summary

Get analytics summary (views, revenue, subscribers) for a time period.

list_my_articles

List your articles on Misar.Blog.

get_article

Get a single article by slug, including full markdown content.

publish_article

Publish a new article (or schedule it) on Misar.Blog.

create_draft

Save an article as a draft on Misar.Blog (for review before publishing).

update_article

Update the title, body, or tags of an existing article or draft.

search_articles

Search PUBLISHED articles across Misar.Blog by keyword, tag, or author — including other creators' work.

research_topic

Research a topic and get AI-generated insights, sources, and a content outline.

generate_title_seo

Generate 5 SEO/AEO/GEO-optimized article titles from a topic or keyword prompt.

suggest_titles

Generate 5 compelling, SEO-friendly article title options from your existing article content.

generate_cover_image

Generate a cover image using AI and upload it to the Misar.Blog CDN.

get_series

List all your series on Misar.Blog.

create_series

Create a new series to group related articles.

add_to_series

Add an existing article to a series.

list_comments

Get the comment thread for an article.

get_follow_status

Get follow status and follower count for a profile UUID.

list_newsletter_subscribers

Get your newsletter subscriber list.

list_newsletter_issues

Get your sent and scheduled newsletter issues.

get_reactions

Get reaction counts and your reactions for an article.

add_reaction

Add a reaction to an article.

remove_reaction

Remove a specific reaction from an article.

Prompts

Reusable workflows your client exposes as slash-commands.

Prompt

Description

draft_article

Write a complete, SEO-optimised article draft and save it to Misar.Blog.

improve_seo

Audit an article for SEO/AEO/GEO and apply the improvements.

write_newsletter

Draft a newsletter issue from recent published articles.

article_ideas

Generate article ideas grounded in what has and has not been covered.

social_caption

Write platform-specific promotional captions for an article.

optimize_headline

Generate and rank stronger headline options for an article.

series_plan

Plan a multi-part article series and set it up on Misar.Blog.

engagement_report

Summarise blog performance and recommend what to do next.

Resources

Read-only context an agent can attach without spending a tool call.

URI

Description

misarblog://profile

Your Misar.Blog profile — username, display name, bio, and payout status.

misarblog://articles/recent

Your 20 most recent published articles.

misarblog://articles/drafts

Your unpublished drafts, so work in progress can be resumed rather than restarted..

misarblog://series

Your series and the articles in each, in order..

misarblog://analytics/summary

Views, revenue, and subscriber counts for the last 30 days — the baseline for any performance question..

Agent skills

Bundled in skills/ — guidance an agent loads when a task matches.

Skill

Use when

blog-analytics-report

Report on Misar.Blog performance — views, revenue, subscribers, engagement. Use for "how is my blog doing", traffic reports, or content performance analysis.

manage-article-series

Plan and manage a multi-part article series on Misar.Blog. Use for "series", "multi-part", "part 2", or organising related posts into a sequence.

newsletter-campaign-report

Draft and review Misar.Blog newsletter issues and subscriber performance. Use for "newsletter", "email my subscribers", or newsletter performance questions.

promote-article

Write platform-specific promotional copy for a Misar.Blog article. Use for "share this post", "social caption", "promote my article", or writing X/LinkedIn/Reddit copy.

publish-blog-post

Write, draft, and publish an article on Misar.Blog. Use when the user wants to write a post, publish an article, save a draft, or turn notes into a blog post.

seo-optimize-article

Audit and improve an existing Misar.Blog article for SEO, AEO, and AI-answer-engine citability. Use for "improve SEO", "why isn't this ranking", "meta description", or "optimise for AI search".


Safety

Destructive and irreversible actions are annotated (destructiveHint) so clients can prompt before running them. The skills instruct agents to confirm before anything that sends mail, publishes content, or is otherwise visible to other people.

Discovery (initialize, tools/list, prompts/list, resources/list) never requires credentials, so registries can index the server without one. Every action does.


MIT © Misar AI

Available Tools

26 tools
add_reactionAdd a reactionA
Idempotent
Inspect

Record one reaction — like, clap, or bookmark — from the authenticated account on an article.

This acts publicly as the account holder, so only call it when the user has actually asked to react; do not react on their behalf to be helpful. Adds a single type per call — react twice for two types.

Safe to repeat: if the reaction already exists the call succeeds and changes nothing, so it will not double-count. Requires an API key. Use remove_reaction to undo, and get_reactions to see the resulting totals.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesWhich reaction to add: 'like' approval, 'clap' stronger approval, 'bookmark' save for later.
article_idYesUUID of the article to react to, from the `id` field of article tools.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, and the description reinforces this by stating the call is safe to repeat and won't double-count. It adds context about acting publicly as the account holder and requiring an API key, which goes beyond annotations. However, it doesn't detail the response format or any rate limits, but with annotations covering idempotency and non-destructiveness, the description adds sufficient value.

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

Conciseness5/5

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

The description is concise, with three short paragraphs that are front-loaded with the core action. Every sentence adds value: the first states the action, the second provides usage guidance, and the third covers idempotency and related tools. No wasted words.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema, no nested objects), the description is complete. It covers the action, usage constraints, idempotency, and related tools. The only minor gap is not describing the response format, but since there's no output schema, the description could have mentioned it, but it's not critical for a simple mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters well. The description adds minimal extra meaning beyond the schema, but it does clarify the 'type' enum values in the schema itself. The description doesn't add new parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool records a reaction (like, clap, or bookmark) from the authenticated account on an article. It distinguishes from siblings by explicitly naming remove_reaction and get_reactions, and the verb 'record' plus resource 'reaction' is specific.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: only call when the user has actually asked to react, not on their behalf. It also explains the single-type-per-call behavior and names alternatives (remove_reaction, get_reactions) for related actions.

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

add_to_seriesAdd an article to a seriesA
Idempotent
Inspect

Place an existing article into an existing series, optionally at a specific position.

Both the series and the article must already exist — this creates neither. Identify them by SLUG, not id: get_series supplies the series slug and the article tools supply the article slug. Omit position to append at the end.

Requires an API key. Adding an article does not change its publication status or URL; it only changes where it appears. Inserting at a position shifts the articles after it down. Errors if either slug is unknown.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo1-based position within the series. Omit to append at the end. Inserting shifts later articles down.
series_slugYesSlug of the target series, from get_series. Not its title or id.
article_slugYesSlug of the article to add, from list_my_articles. Not its title or id.

TDQS

A4.7/5.0
Behavior5/5

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

The description adds meaningful behavioral details beyond the annotations: it notes API key requirements, that adding does not change publication status or URL, that insertion shifts later articles down, and that unknown slugs cause errors. These are important operational traits not captured by the annotations alone.

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

Conciseness5/5

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

The description is compact, front-loaded with the core operation, and every sentence carries useful information. It covers prerequisites, identifier sourcing, optional positioning, side effects, and error behavior without redundant filler.

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

Completeness5/5

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

For a mutating relationship-assignment tool with three parameters and no output schema, this description is complete: it covers prerequisites, authentication, how to get inputs, insertion semantics, side effects, and error conditions. Nothing essential is missing.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already provides detailed descriptions for series_slug, article_slug, and position, including the append behavior and shifting semantics. The description reinforces the same information but adds little new parameter-specific meaning beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Place an existing article into an existing series') that clearly identifies the operation and its resources. It also distinguishes itself from creation tools by explicitly stating 'this creates neither'.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use context: both the series and article must already exist. It also directs the agent to get_series and article tools for slugs, and explains the optional position behavior ('Omit position to append at the end').

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

create_draftCreate a draftAInspect

Save an article as an unpublished draft.

Nothing becomes visible to readers: use this whenever the work still needs review, and publish_article only when it should go live. The draft can be edited afterwards with update_article.

Each call creates a NEW draft — not idempotent, so calling twice leaves two drafts. Requires an API key. Returns the draft with an editor_url for finishing it in the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTopic tags to carry through to publication.
titleYesWorking headline. Can be changed before publishing.
body_markdownYesArticle body so far, as Markdown.

TDQS

A4.6/5.0
Behavior5/5

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

The description adds behavioral details beyond annotations: it spells out the non-idempotence consequence ('calling twice leaves two drafts'), assures that 'nothing becomes visible to readers,' requires an API key, and mentions the return value with an editor_url. These go beyond the flags in annotations and provide meaningful context.

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

Conciseness5/5

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

The description is three tightly written sentences: first sentence states purpose, second provides usage guidance, third discloses behavior. It is front-loaded, free of fluff, and every sentence carries meaningful content.

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

Completeness4/5

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

For a simple create operation, the description covers purpose, usage, non-idempotence, auth, and return value. It does not specify the full response shape or error behaviors, but with no output schema and simple parameters, this is nearly complete. A brief note on the returned draft object would earn a 5.

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

Parameters3/5

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

The input schema already has 100% parameter coverage with detailed descriptions (e.g., 'Working headline. Can be changed before publishing.'). The description adds no additional parameter-level information, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Save an article as an unpublished draft,' a specific verb+resource+state combination. It explicitly distinguishes itself from sibling tools by mentioning publish_article and update_article, making it clear this is for the draft stage only.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'use this whenever the work still needs review, and publish_article only when it should go live.' It also states that the draft can be edited with update_article, clearly delineating the tool's role among alternatives.

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

create_seriesCreate a seriesAInspect

Create a new, empty series — a named collection that related articles can be added to.

Creating the series does not move any article into it; follow up with add_to_series for each one. Call get_series first to avoid making a second series with the same title, since each call creates a NEW series and nothing deduplicates them.

Requires an API key. The series and its URL become publicly reachable, though it shows nothing until articles are added. Returns the series with the slug that add_to_series needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDisplay name of the series. The slug is derived from this.
descriptionNoShort summary shown on the series page. Optional.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses required API key, the public URL side effect, and that the series remains empty until articles are added. Also mentions the return value includes the slug needed by add_to_series, covering side effects and return behavior beyond annotations.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: definition, usage guidance, and side effects/return. No redundant information or fluff.

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

Completeness5/5

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

Given the schema covers parameter definitions, the description augments with usage preconditions, side effects, and return value expectations, providing a complete context for using the tool.

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

Parameters3/5

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

The schema already provides complete descriptions for both parameters (title and description), including that the slug is derived from title. The tool description adds no extra parameter-specific details, so it remains at the baseline for full schema coverage.

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

Purpose5/5

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

The description clearly states the tool creates a new, empty series, which is a named collection for articles. It distinguishes itself from sibling tools like add_to_series and get_series by focusing on the creation aspect.

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

Usage Guidelines5/5

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

Explicitly advises calling get_series first to avoid duplicate series, and notes that each call creates a new series without deduplication. This gives clear when-to-use and when-not-to-use guidance.

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

generate_cover_imageGenerate a cover imageAInspect

Generate an image from a text prompt with AI, upload it to the Misar.Blog CDN, and return its public URL for use as cover_image_url when publishing.

Use it when no artwork exists yet; use upload_image for a file the user already has. Each call generates a NEW image and costs generation credits against the account's plan — it is not idempotent, so re-running to 'try again' bills again. Generation takes noticeably longer than other tools.

Requires an API key. The resulting URL is public and cannot be deleted through this server. Results vary between runs for the same prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoOutput dimensions: '1792x1024' landscape (the default, best for article covers), '1024x1024' square, '1024x1792' portrait.1792x1024
promptYesWhat the image should show, in plain language, up to 1000 characters. Describe subject and style; avoid asking for text in the image.

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing: generation costs credits, is not idempotent, takes longer than other tools, requires an API key, produces a public non-deletable URL, and yields varying results. This adds critical context for a state-changing tool with financial implications.

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

Conciseness5/5

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

The description is concise yet information-dense. Each sentence adds value: purpose, usage, side effects, and limitations. No redundant phrases or filler—perfectly structured for quick comprehension.

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

Completeness5/5

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

For a generative, cost-incurring tool with no output schema, the description covers all essential context: output (public URL), prerequisites (API key), side effects (cost, non-deletion, variability), and performance expectations. Very complete for agent decision-making.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for both parameters (prompt and size). The description adds no parameter-specific information beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Generate an image from a text prompt with AI, upload it to the Misar.Blog CDN, and return its public URL for use as cover_image_url when publishing.' It names specific verbs and the resource, and explicitly contrasts with upload_image, distinguishing it from sibling tools.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'Use it when no artwork exists yet; use upload_image for a file the user already has.' It also notes cost implications and non-idempotency, helping the agent decide based on context.

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

generate_title_seoGenerate SEO titles from keywordsA
Read-only
Inspect

Generate 5 search-optimised article titles from a TOPIC OR KEYWORD, each with a keyword-strategy hint. Aims at high-volume, low-competition long-tail phrases and at AI answer engines (ChatGPT, Perplexity, Claude) as well as Google.

Pick between the two title tools by what you have in hand: use this one when you have a topic or keywords and the article may not be written yet. Use suggest_titles when the draft already exists and you want titles drawn from its actual text. Passing context here does not make them equivalent — this one still optimises for the keywords you supply.

Nothing is saved and no article is created or retitled; use update_article to apply a title. Requires an API key and consumes AI credits per call. Generative, so repeated calls return different titles.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesTopic or target keywords, 3-500 characters. Include niche, audience and any long-tail phrase you want to rank for, e.g. 'best AI writing tools for beginner bloggers 2025'.
contextNoOptional draft text (plain or Markdown, up to 8000 chars) so the titles match what the article actually says. Titles still follow `prompt` for keywords.

TDQS

A4.9/5.0
Behavior5/5

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

The description adds valuable behavioral context beyond the annotations: it states nothing is saved, no article is created or retitled, requires an API key and consumes credits, and notes the generative nature (repeated calls return different titles), which aligns with idempotentHint=false and openWorldHint=true. No contradictions found.

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

Conciseness5/5

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

The description is well-structured in three clear paragraphs: function, usage distinction, and side effects. Every sentence earns its place, and it is appropriately concise for the information conveyed.

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

Completeness5/5

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

For a tool with two parameters and no output schema, the description provides complete guidance: what it generates, how it differs from a sibling, prerequisites, side effects, and the fact it's generative. It fully covers the agent's needs for correct invocation and expectation setting.

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

Parameters4/5

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

Schema description coverage is 100% for both parameters, so the baseline is 3. The description adds extra nuance by clarifying that passing context does not make the tool equivalent to suggest_titles—titles still optimize for the supplied keywords. This goes beyond the schema's description of context, providing semantic value.

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

Purpose5/5

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

The description clearly states the tool generates 5 search-optimised article titles from a topic/keyword, each with a keyword-strategy hint. It explicitly distinguishes this from suggest_titles by noting it works from topics/keywords rather than existing drafts, making the purpose unambiguous and differentiated from its sibling.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'use this one when you have a topic or keywords and the article may not be written yet' and contrasts it with suggest_titles for existing drafts. It also clarifies that passing context does not make it equivalent and notes prerequisites (API key, credits) and the need to call update_article to apply a title.

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

get_analytics_summaryGet analytics summaryA
Read-onlyIdempotent
Inspect

Summarise the account's performance over a trailing window: page views, gross and net revenue, and active subscriber count.

Use it for 'how did I do this month' style questions. These are whole-account totals — it cannot break results down per article, and it covers a trailing window ending today rather than an arbitrary date range.

Reads only. Requires an API key. Revenue is returned in cents (revenue_cents gross, revenue_net_cents after fees) with a formatted revenue_usd added for convenience — read the cents fields when doing arithmetic. Zero views is a real answer, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoSize of the trailing window in days, ending today. 1-365, defaults to 30. Use 7 for a week, 365 for a year.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Beyond this, the description adds important context: requires an API key, revenue is in cents with a formatted USD convenience field, and zero views is a real answer not an error. These go well beyond the annotation baseline.

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

Conciseness5/5

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

The description is organized into three short paragraphs with each sentence earning its place: purpose, usage, then caveats. It is front-loaded with the main function and avoids redundancy, even while covering edge cases like units and zero views.

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

Completeness5/5

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

With no output schema, the description must explain return values, and it does: page views, gross/net revenue in cents, a formatted USD field, and active subscriber count. It also covers prerequisites (API key) and edge-case semantics (zero views). For a one-parameter read-only tool, this is complete.

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

Parameters3/5

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

Schema description coverage is 100% for the only parameter (days), which already specifies the trailing window, range, default, and usage examples. The description mentions the trailing window but does not add new parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Summarise the account's performance over a trailing window: page views, gross and net revenue, and active subscriber count.' It clearly distinguishes from siblings by noting these are whole-account totals and cannot be broken down per article, contrasting with tools like get_article or search_articles.

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

Usage Guidelines5/5

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

Explicit usage guidance is provided: 'Use it for 'how did I do this month' style questions.' It also states exclusions: cannot break results down per article and only covers a trailing window ending today rather than an arbitrary date range, ruling out alternatives.

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

get_articleGet one articleA
Read-onlyIdempotent
Inspect

Fetch a single article by slug, including its full Markdown body.

Use this after list_my_articles or search_articles has given you a slug and you need the actual content — for reading, editing, or repurposing it. Fetching one article at a time is deliberate: the listing tools omit bodies so they stay cheap.

Reads only; nothing is created or modified. Requires an API key for unpublished articles; published ones are readable without. Returns the article object with content_markdown populated. Errors if the slug does not exist or the account cannot see it.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesURL slug of the article, e.g. 'how-we-cut-build-times'. Not the numeric id, and not the full URL.

TDQS

A4.6/5.0
Behavior5/5

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

Despite readOnlyHint already being provided, the description adds valuable context: API key requirement for unpublished articles, published ones readable without, and error conditions. This goes beyond annotations and matches the tool's actual behavior.

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

Conciseness4/5

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

Though slightly verbose with four sentences, each sentence contributes context: purpose, usage, behavior, auth, errors. It is front-loaded with the core action and not redundant given the added info beyond annotations.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description covers all critical aspects: what it does, when to use it, read-only nature, auth requirements, return content, and failure modes. It is essentially complete for an agent to invoke correctly.

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

Parameters3/5

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

The schema already fully describes 'slug' with explanation and example, and the description adds no new parameter-level detail. Baseline of 3 is appropriate given 100% schema coverage.

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

Purpose5/5

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

The description clearly states the action ('Fetch a single article by slug') and distinguishes it from listing tools that omit bodies, making it unambiguous and aligned with its sibling tools.

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

Usage Guidelines5/5

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

It explicitly tells when to use the tool ('after list_my_articles or search_articles has given you a slug') and explains the rationale for fetching one at a time, clearly contrasting with alternatives.

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

get_follow_statusGet follow statusA
Read-onlyIdempotent
Inspect

Check whether the authenticated account follows a given profile, and how many followers that profile has.

Use it before offering to follow someone, so you do not suggest an action that is already done. It answers about ONE profile identified by UUID — there is no tool here that lists everyone you follow.

Reads only; following state is not changed. Requires an API key and counts against the plan's request quota. Returns the follow relationship and follower count. Errors if the UUID does not match a profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesUUID of the profile to check, as returned in author fields by article tools. Not the username.

TDQS

A4.8/5.0
Behavior5/5

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

The description discloses that the tool is read-only, does not change follow state, counts against quota, and errors on invalid UUID. These details go beyond the annotations to set accurate expectations.

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

Conciseness4/5

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

The description is multi-sentence and provides necessary context without excessive verbosity. It is well-structured with clear statements, though slightly longer than strictly needed for a simple tool.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description covers the returned information (follow relationship and follower count) and error conditions, making it complete for typical use.

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

Parameters4/5

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

The parameter schema already includes a detailed description for 'user_id'. The tool description reinforces that it identifies a single profile and clarifies the UUID format, adding contextual usage. This slightly exceeds the schema alone.

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

Purpose5/5

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

The description clearly states the tool checks follow status and follower count for a single profile, distinguishing it from sibling tools that list or manage follows. It uses specific verbs and identifies the resource.

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

Usage Guidelines5/5

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

Explicitly advises using the tool before offering to follow someone to avoid redundant actions, and clarifies it handles one profile rather than listing all followed profiles. This differentiates it from alternatives.

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

get_profileGet my profileA
Read-onlyIdempotent
Inspect

Fetch the authenticated account's own creator profile: id, username, display name, bio, public profile URL, and whether Stripe payouts are connected.

Use it to confirm which account a key belongs to before acting on that account's behalf, to get your own profile id for tools that take a UUID, or to check stripe_connected before discussing paid posts. It only ever describes the caller — there is no tool here for looking up someone else's profile.

Reads only; nothing is modified. Requires an API key, and takes no parameters. Errors if the key is missing or invalid, which is the quickest way to test authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description doesn't need to restate safety. It adds value by mentioning it requires an API key, takes no parameters, and errors on missing/invalid key, which are behavioral details beyond annotations. Not a full 5—could mention response format or exactly when stripe_connected is present.

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

Conciseness4/5

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

The description is reasonably concise, front-loaded with the core action and output fields. It includes necessary usage context and a parenthetical limitation, but the second half could be trimmed slightly; still, every sentence contributes.

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

Completeness5/5

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

For a zero-parameter tool, the description is complete: it specifies the exact purpose, the fields returned, use cases, limitations, and authentication behavior. With no output schema, the description fully conveys what the agent gets back. Sibling context shows it fits well among a broader set.

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

Parameters4/5

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

Schema has zero parameters, so the description needn't explain parameters. However, it effectively communicates that no parameters are needed and explains the output fields, providing semantic value for what the tool returns. A baseline of 4 is appropriate since params are 0.

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

Purpose5/5

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

The description clearly states it fetches the authenticated account's own creator profile, listing specific fields (id, username, display name, bio, public profile URL, stripe_connected). It distinguishes itself from siblings by explicitly noting there is no tool for looking up others' profiles, making its scope unambiguous.

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

Usage Guidelines5/5

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

Provides explicit use cases: confirming which account a key belongs to, getting own profile id for tools requiring UUID, checking stripe_connected before discussing paid posts. Also clarifies when not to use it (for others' profiles) and states it can be used to test authentication via errors.

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

get_reactionsGet article reactionsA
Read-onlyIdempotent
Inspect

Read the reaction totals on one article, plus which reactions the authenticated account has left on it.

Use it before add_reaction or remove_reaction so you know the current state — it is how you tell 'not yet liked' from 'already liked'. Covers one article at a time.

Reads only; no reaction is added or removed. Requires an API key. Returns counts per type (like, clap, bookmark) alongside the caller's own reactions. Zero counts are a real answer, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYesUUID of the article, from the `id` field returned by article tools.

TDQS

A4.6/5.0
Behavior4/5

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

The description states it is read-only, reinforcing the annotations (readOnlyHint, idempotentHint, destructiveHint: false). It adds context that no reaction is added or removed, requires an API key, returns counts per type, and clarifies that zero counts are valid answers. It goes beyond annotations by mentioning API key requirement and response semantics.

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

Conciseness5/5

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

The description is compact and front-loaded, opening with the core function. It uses bullet-like sentences with no filler, and every sentence adds value—usage guidance, read-only reassurance, and zero-count clarification. No wasted words.

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

Completeness4/5

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

Given the low parameter count, high schema coverage, and robust annotations, the description is quite complete. It provides usage context, response expectations, and authentication note, but doesn't explain the output schema (though none exists). The only minor gap is not detailing exact response format, but that is not required given the tool's simplicity.

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

Parameters4/5

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

The input schema already has 100% coverage with a description for article_id (UUID from article tools). The description adds the context that the tool returns the caller's own reactions and counts, but does not add much parameter-specific info beyond what's in the schema. Since schema coverage is high and the parameter is simple, the baseline of 3 gets a slight bump for confirming usage context.

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

Purpose5/5

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

The description clearly states the tool reads reaction totals on one article and which reactions the authenticated account has left, specifying the scope ('one article at a time'). It distinguishes itself from sibling tools like add_reaction and remove_reaction by focusing on reading current state rather than mutating it.

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

Usage Guidelines5/5

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

It explicitly advises using this tool before add_reaction or remove_reaction to determine current state ('not yet liked' vs 'already liked'), and notes it covers one article at a time. This gives clear guidance on when to use it and how it fits with alternatives.

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

get_seriesList my seriesA
Read-onlyIdempotent
Inspect

List every series the authenticated account owns. Despite the name this returns the whole collection, not one series — there is no single-series lookup.

Use it to find a series slug before calling add_to_series, or to check whether a series already exists before create_series makes a duplicate.

Reads only; nothing is created or modified. Requires an API key, and takes no parameters — it is unfiltered and unpaginated. Returns { series, total } where each entry carries id, slug, title, description, url and article_count. An empty list means the account has no series yet, which is not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds rich behavioral context: it requires an API key, is unfiltered and unpaginated, returns a specific structure `{ series, total }` with detailed per-entry fields, and defines empty-list semantics ('not an error'). This goes well beyond the annotations and fully discloses behavior.

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

Conciseness5/5

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

The description is concise despite containing multiple pieces of information. Each sentence serves a purpose: purpose, clarification of name, use cases, behavioral details, and return format. It is front-loaded with the main action and flows logically. No filler or redundancy.

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

Completeness5/5

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

Given the tool has zero parameters and no output schema, the description goes beyond the minimum by defining the exact return shape and edge-case behavior (empty list). It also covers authentication, rendering it fully self-contained. The agent has everything needed to select and invoke the tool without ambiguity.

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

Parameters5/5

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

Input schema has zero parameters (100% coverage). Baseline for zero params is 4, but the description adds valuable context by stating 'takes no parameters — it is unfiltered and unpaginated.' This explicitly prevents the agent from attempting to pass filters or pagination, which is meaningful for correct invocation. Thus it exceeds the baseline.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List every series the authenticated account owns.' It further distinguishes itself from a single-series lookup by explicitly noting that despite the name, it returns the whole collection and that there is no single-series lookup. This clearly differentiates from sibling tools like create_series and add_to_series.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'Use it to find a series slug before calling add_to_series, or to check whether a series already exists before create_series makes a duplicate.' It also clarifies the read-only nature, telling the agent it can be safely used for lookups without side effects. No exclusions are needed, making this highly actionable.

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

list_commentsList article commentsA
Read-onlyIdempotent
Inspect

Read the comment thread on one article, oldest first, paginated.

Use it to review reader feedback or summarise a discussion. It reads comments only; there is no tool here for posting or moderating a reply.

Reads only. Requires an API key and counts against the plan's request quota. Page through with limit and offset — the default returns the first 20. Returns the comments with their authors and timestamps; an empty list simply means no comments yet, which is not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoComments per page, 1-100. Defaults to 20.
offsetNoComments to skip before this page. Defaults to 0.
article_idYesUUID of the article, as returned in the `id` field by article tools. Not the slug.

TDQS

A4.9/5.0
Behavior5/5

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

Despite annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds significant value: API key requirement, quota consumption, pagination behavior, response shape, and the useful disambiguation that an empty list is not an error. These behavioral details go well beyond what the annotations communicate.

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

Conciseness5/5

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

Four sentences, each earning its place: purpose, use case, and error semantics. Front-loaded with the most important information first. No fluff or redundancy.

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

Completeness5/5

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

For a simple read-only tool with 3 params and no output schema, the description is thorough: it covers ordering, pagination, auth, quota, response contents, and error handling. The context is fully provided within the description and annotations.

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

Parameters4/5

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

Schema coverage is 100% so baseline is 3. The description adds marginal value by framing limit/offset as a pagination workflow ('Page through with limit and offset') and reiterating the default of 20, which reinforces the conceptual model even though the schema documents the parameters thoroughly.

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

Purpose5/5

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

The opening sentence 'Read the comment thread on one article, oldest first, paginated' uses a specific verb (read), specific resource (comment thread on one article), and adds scope (one article) plus ordering (oldest first). This clearly distinguishes it from sibling tools like get_reactions or get_article, and the explicit 'It reads comments only; there is no tool here for posting or moderating' further differentiates it.

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

Usage Guidelines5/5

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

Explicitly states when to use it ('Use it to review reader feedback or summarise a discussion') and when not to ('reads comments only; there is no tool here for posting or moderating a reply'). This gives clear when/when-not guidance without ambiguity.

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

list_my_articlesList my articlesA
Read-onlyIdempotent
Inspect

List articles owned by the authenticated account, newest first, including drafts and scheduled posts.

Use this to find your own work — it is the only listing that sees unpublished content. To search across the whole site, including other creators, use search_articles instead.

Reads only; nothing is created or modified. Requires an API key. Returns { articles, total }, where each article carries id, slug, title, status, url, editor_url, tags and timestamps, but NOT the article body — call get_article for that. total counts all matches, not just the page returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum articles to return, 1-100. Defaults to 20.
statusNoReturn only articles in this state. Omit to return every state the account owns.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context beyond annotations: requires an API key, returns a specific shape with fields, notably excludes the article body, and clarifies that 'total' counts all matches, not just the returned page. This goes beyond the structured hints.

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

Conciseness5/5

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

Four sentences, each earning its place: purpose+scope, when to use, read-only reassurance/auth, and return shape with a key exclusion. Information-dense without redundancy or fluff.

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

Completeness5/5

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

Though no output schema exists, the description fully covers the return structure, field list, the notable absence of body content, and pagination/authentication details. For a list tool with two optional parameters and strong annotations, this is complete enough for an agent to select and invoke correctly.

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

Parameters4/5

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

Schema covers both parameters fully with descriptions, giving a baseline of 3. The description adds meaning by clarifying default status behavior ('including drafts and scheduled posts' when status omitted) and pagination semantics ('total counts all matches, not just the page returned'). This compensates beyond the schema.

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

Purpose5/5

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

The description uses specific verb 'List' with a clear resource: 'articles owned by the authenticated account'. It immediately distinguishes from siblings by noting it is 'the only listing that sees unpublished content' and explicitly contrasts with search_articles, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'Use this to find your own work' and names the alternative: 'To search across the whole site, including other creators, use search_articles instead.' Also directs users to get_article for body content, covering exclusions and alternatives clearly.

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

list_newsletter_issuesList newsletter issuesA
Read-onlyIdempotent
Inspect

List newsletter issues the account has sent or scheduled, newest first.

Use it to check what went out and when, or to confirm a scheduled send exists before queueing another. For WHO receives them, use list_newsletter_subscribers.

Reads only — this neither sends nor cancels an issue. Requires an API key. Returns each issue with its subject, status and send time. An empty list means nothing has been sent yet, which is not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoIssues to return, 1-50, newest first. Defaults to 10.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, but the description adds valuable context: it states this neither sends nor cancels an issue, requires an API key, returns subject/status/send time, and clarifies that an empty list is not an error. This goes well beyond the structured annotations.

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

Conciseness5/5

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

The description is tightly structured: main purpose first, then use cases, alternative tool, read-only note, auth requirement, return contents, and empty-list clarification. Every sentence contributes meaningful information without redundancy or fluff.

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

Completeness5/5

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

For a simple read-only list tool with one optional parameter, the description is complete: it covers what is returned, when to use it, the alternative tool, auth needs, and edge-case behavior. The absence of an output schema is compensated by the explicit mention of returned fields.

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

Parameters3/5

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

The input schema fully documents the single 'limit' parameter with range, default, and ordering semantics, so schema coverage is 100%. The description does not add parameter-specific detail, but the schema already carries the full burden, earning the baseline score.

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

Purpose5/5

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

The description uses a specific verb ('List') with a clear resource ('newsletter issues') and scope ('sent or scheduled, newest first'). It also distinguishes itself from the sibling tool list_newsletter_subscribers by explicitly stating it covers issues, not recipients.

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

Usage Guidelines5/5

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

The description gives concrete use cases: checking what went out and when, and confirming a scheduled send before queueing another. It also explicitly names the alternative tool for recipient-related queries, providing clear when-to-use guidance.

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

list_newsletter_subscribersList newsletter subscribersA
Read-onlyIdempotent
Inspect

List the people subscribed to the authenticated account's newsletter, paginated.

Use it to size the audience or export the list. For what has been SENT to them, use list_newsletter_issues instead.

Reads only — no email is sent and no subscriber is added or removed. Requires an API key. This returns personal data (email addresses), so treat the result as confidential and do not echo it into shared transcripts. Page with limit and offset; the default returns the first 20.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoSubscribers per page, 1-100. Defaults to 20.
offsetNoSubscribers to skip before this page. Defaults to 0.

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it states that no email is sent, no subscriber is added/removed, and that it returns personal data requiring confidentiality. The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description reinforces and adds the privacy warning, which is valuable. It doesn't contradict annotations.

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

Conciseness5/5

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

The description is concise and well-structured, with a clear first sentence stating the purpose, followed by usage guidance, safety/privacy notes, and pagination details. Every sentence adds value, and it's appropriately sized for the tool's complexity.

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

Completeness5/5

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

Given the tool's simplicity (2 optional params, no output schema, no nested objects), the description covers all necessary aspects: purpose, usage, safety, privacy, and pagination. It's complete for an agent to use correctly without further clarification.

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

Parameters3/5

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

The input schema already provides full descriptions for both parameters (limit and offset) with defaults and ranges. The description mentions pagination with limit and offset and the default of 20, but doesn't add much beyond the schema. Since schema coverage is 100%, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists newsletter subscribers for the authenticated account, with pagination. It distinguishes itself from the sibling tool list_newsletter_issues by explicitly noting the difference between subscribers and sent issues.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool (to size audience or export list) and when not to (for sent issues, use list_newsletter_issues). It also mentions the requirement of an API key and the read-only nature, which helps the agent decide when to invoke it.

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

loginLog in via browserAInspect

Connect a Misar.Blog account by browser consent, with no API key to copy and paste.

Use it when status reports no key, or when a tool fails as unauthenticated. It opens the authorisation page in the user's browser, waits for them to review the permissions and click Authorize, then stores the returned key in ~/.misarblog/config.json.

Two things to know before calling it. It BLOCKS until a human acts in the browser, so it can hang for as long as they take — never call it speculatively or in a retry loop. And force=true ROTATES the key, invalidating the existing one everywhere else it is used; without force, an already-valid session returns immediately and changes nothing. It listens on a short-lived local port to receive the callback.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoLocal port for the one-shot callback listener, 9001-9099. Random by default; set it only when a firewall requires a fixed port.
forceNoRe-authenticate even when already logged in. This ROTATES the API key and breaks any other client using the old one — only on explicit request.
base_urlNoBase URL of a self-hosted Misar.Blog. Omit for the hosted service.

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the tool BLOCKS until human action, that force=true ROTATES and invalidates existing keys, that an existing valid session returns immediately without changes, and that it listens on a short-lived local port. These are critical behavioral traits. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is front-loaded with a clear one-sentence purpose, then usage conditions, then critical warnings. Each paragraph earns its place, and nothing is redundant with the schema. The entry is moderately long but all pieces are necessary for safe invocation.

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

Completeness4/5

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

The description fully covers the success flow, key storage location, blocking behavior, force semantics, port selection, and base_url handling. It does not explicitly state what happens if the user cancels or fails to respond, nor the exact return value format, but the absence of an output schema makes this a minor gap. Overall the agent has enough context to invoke the tool appropriately.

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

Parameters4/5

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

Even though the schema already provides 100% parameter coverage, the description adds behavioral nuance: force=false does not change anything if already authenticated, the port is where the short-lived callback listener runs, and base_url should be omitted for the hosted service. This enriches the schema's semantic values rather than just repeating parameter names.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Connect a Misar.Blog account by browser consent', specifying the verb, resource, and unique method. This distinguishes it from all sibling tools, which are post-reading/publishing/analytics operations, not authentication.

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

Usage Guidelines5/5

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

It gives explicit when-to-use conditions: 'Use it when status reports no key, or when a tool fails as unauthenticated.' It also gives strong when-not-to-use guidance: 'never call it speculatively or in a retry loop.' No alternatives are named, but no other sibling provides this function, so the guidance is sufficiently clear.

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

publish_articlePublish an articleAInspect

Create a new article and make it live immediately, or schedule it for a future time.

This PUBLISHES: without schedule_at the article is world-readable the moment this returns, at the visibility you choose. If the piece is not ready, use create_draft instead and publish later. Each call creates a NEW article — it is not idempotent, so calling twice publishes twice; use update_article to change one that exists.

Requires an API key and consumes one publish from the account's plan quota; the response warns when the allowance is nearly spent. Returns the created article with its public url and editor_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoUp to 10 topic tags used for discovery and filtering.
titleYesHeadline, 1-250 characters.
visibilityNoAudience: 'public' anyone, 'subscribers' newsletter subscribers, 'paid' paying members, 'private' only you. Defaults to 'public'.public
schedule_atNoISO 8601 timestamp to publish at, e.g. '2026-09-01T09:00:00Z'. Omit to publish immediately. A past timestamp publishes immediately.
body_markdownYesComplete article body as Markdown. Images may be referenced by URL.
cover_image_urlNoAbsolute URL of the hero image. generate_cover_image returns a URL suitable here.

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses key behavioral traits beyond annotations: it publishes immediately (world-readable), is not idempotent (calling twice publishes twice), requires an API key, consumes quota, and warns when allowance is nearly spent. It also mentions the return value includes public url and editor_url. This adds significant context beyond the annotations (readOnlyHint=false, idempotentHint=false) and does not contradict them.

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

Conciseness5/5

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

The description is concise and well-structured: it opens with the core action, then explains key behaviors in a clear paragraph, and ends with return value. Every sentence adds value, and it is front-loaded with the most important information. No fluff or repetition.

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

Completeness5/5

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

Given the tool's complexity (6 params, scheduling, visibility, non-idempotency, quota), the description is complete. It covers the main use cases, side effects, prerequisites (API key), and return value. The schema covers parameter details, and the description adds the behavioral context needed for correct invocation. No output schema exists, but the description mentions the return fields, so the agent knows what to expect.

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

Parameters4/5

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

The schema already covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds value by explaining the effect of schedule_at (omit to publish immediately, past timestamp publishes immediately) and the visibility options, which are not fully detailed in the schema. It also mentions cover_image_url can come from generate_cover_image, linking to a sibling tool. This goes beyond the schema, so a 4 is appropriate.

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

Purpose5/5

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

The description clearly states the tool creates a new article and makes it live immediately or schedules it, with a specific verb ('Create') and resource ('article'). It distinguishes from siblings by explicitly contrasting with create_draft and update_article, and notes the non-idempotent behavior.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: use create_draft if the piece is not ready, use update_article to change an existing article. It also explains the scheduling option and the immediate publication effect, giving clear context for choosing this tool over alternatives.

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

remove_reactionRemove a reactionA
DestructiveIdempotent
Inspect

Withdraw one reaction the authenticated account previously left on an article.

Removes exactly the type you name and leaves the account's other reactions on that article intact — removing 'like' does not remove a 'bookmark'. Nothing else is deleted: the article and its comments are untouched.

Safe to repeat: removing a reaction that is not there succeeds and changes nothing. Requires an API key. Call get_reactions first if you need to know what is currently set.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesWhich reaction to withdraw: 'like', 'clap', or 'bookmark'.
article_idYesUUID of the article to un-react to, from the `id` field of article tools.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint, idempotentHint), the description adds crucial behavioral details: it specifies that only the named reaction type is removed, other reactions remain intact, nothing else is deleted, and calling with a non-existent reaction is a no-op. This enriches the annotation-provided hints without contradiction.

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

Conciseness5/5

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

The description is concise and well-structured, using three clear sentences. It fronts the core action, then elaborates on scope and side effects, and ends with practical guidance. No fluff or repetition.

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

Completeness5/5

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

With only two parameters, no output schema, and strong annotations, this description fully covers the necessary context: it explains the tool's purpose, safety, idempotency, authentication requirement, and a recommended precondition (get_reactions). It is complete for a tool of this complexity.

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

Parameters4/5

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

The schema covers all parameters (100%), so the baseline is 3. The description adds value by clarifying that the 'type' parameter is specific to the exact reaction being removed, and that removing one type does not affect others. It also reinforces the purpose of article_id in context, though it doesn't add new syntax or format details.

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

Purpose5/5

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

The description clearly states the tool's function: withdrawing a specific reaction from an article. It specifies the resource (reaction) and the action (withdraw/remove), and explicitly differentiates from sibling tools like add_reaction and get_reactions by focusing on removal semantics.

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

Usage Guidelines5/5

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

The description provides explicit guidance: it notes the need for an API key, advises calling get_reactions first when unsure of current reactions, and highlights the safe-to-repeat nature. This gives the agent clear context on when to use this tool and what prerequisites exist.

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

research_topicResearch a topicA
Read-only
Inspect

Research a topic with AI and return insights, sources, and a suggested content outline.

Use it at the START of a piece, before drafting — it produces raw material to write from, not a finished article and not a title. For titles use generate_title_seo; to see what already exists on Misar.Blog use search_articles.

Nothing is saved: no draft, article, or file is created, and calling it has no effect on the blog. Requires an API key and consumes AI credits from the account's plan, so each call costs whether or not you use the output. Runs noticeably longer than a plain read, and being generative, two identical calls give different text. Returns prose to read, not structured JSON — verify any factual claims it makes.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe topic or question to research, 5-500 characters. Specific beats broad: 'how small SaaS teams price annual plans' returns more than 'pricing'.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral detail: nothing is saved, it consumes AI credits and costs per call, runs noticeably longer than a plain read, produces non-deterministic results, and returns prose rather than structured JSON. This goes well beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then each subsequent sentence adds a distinct practical point: when to use, alternatives, side effects, cost, runtime, non-determinism, output format, and verification caveat. No sentence is wasted.

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

Completeness5/5

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

For a generative, non-deterministic tool with no output schema, the description is remarkably complete. It covers return shape, side effects, cost, timing, determinism, and how to verify output, plus differentiates from sibling tools. This is more than sufficient for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

The single parameter `query` is fully documented in the schema, including length constraints and a concrete example of specificity. The description does not need to add much parameter-level detail, so the baseline of 3 applies.

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

Purpose5/5

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

The description opens with a specific action verb and resource: 'Research a topic with AI and return insights, sources, and a suggested content outline.' It clearly distinguishes itself from siblings by stating it is not a finished article, not for titles (use generate_title_seo), and not for checking existing content (use search_articles).

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'Use it at the START of a piece, before drafting.' It also names direct alternatives for related tasks and states that the tool produces raw material, not a finished article or title.

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

search_articlesSearch published articlesA
Read-onlyIdempotent
Inspect

Search PUBLISHED articles across all of Misar.Blog, including other creators' work.

Use this for discovery, research, and competitive reading. It never returns drafts, scheduled, or private posts — not even your own — so reach for list_my_articles when you want your unpublished work.

Reads only. No API key required; unauthenticated callers are rate-limited by IP. Filters combine with AND. Returns an array of article summaries without bodies; pass a slug to get_article for the full text. An empty array means no matches, which is not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text query matched against title and body. Minimum 2 characters.
tagNoRestrict to articles carrying this exact tag.
limitNoMaximum results to return, 1-20. Defaults to 10.
authorNoRestrict to one author, by username.

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnly annotation, the description details behavior: it is read-only, requires no API key (with IP rate-limit), filters combine with AND, returns summaries without bodies (directing to get_article for full text), and states that an empty array means no matches (not an error). This thoroughly discloses behavior and edge cases.

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

Conciseness5/5

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

The description is concise but information-dense, structured with a clear purpose statement, usage guidance, and behavioral details. Every sentence adds value without redundancy, making it well-organized and easy to parse.

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

Completeness5/5

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

Given the tool's nature (read-only search), the description covers essential context: what it returns (summaries without bodies), how to get full text (via get_article), authentication requirements, rate limiting, and error semantics (empty array). It also points to the appropriate alternative for unpublished content, making it fully self-contained.

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

Parameters5/5

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

Each parameter has a clear schema description (e.g., q matches title and body with min 2 chars, tag is exact, limit defaults to 10 and ranges 1-20, author is by username). The tool description adds the crucial interaction that filters combine with AND, enhancing semantic understanding beyond the schema alone.

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

Purpose5/5

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

The description explicitly states the tool searches published articles across all of Misar.Blog, including other creators' work, and clearly distinguishes it from list_my_articles by specifying it does not return drafts, scheduled, or private posts. This makes the purpose unambiguous and differentiates it from siblings.

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

Usage Guidelines5/5

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

The description provides direct usage guidance ('Use this for discovery, research, and competitive reading'), explains when not to use it (for unpublished work, pointing to list_my_articles), and mentions rate-limiting for unauthenticated callers, giving clear context on when and how to invoke the tool.

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

statusCheck authentication statusA
Read-onlyIdempotent
Inspect

Report whether this client holds a working Misar.Blog API key, and which account it belongs to.

Run it first when anything is failing with an auth error, and before a run of write operations, so you find out up front rather than midway. It distinguishes three states: no key stored, a key that is stored but rejected, and a valid key with its username. If it reports no key, run login.

Reads only; it never creates or rotates a key — login does that. Takes no parameters. Unlike most tools here it does not fail when unauthenticated: 'not authenticated' is a normal successful answer, not an error. For plan and quota, use upgrade; for the full profile, get_profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description adds valuable behavioral context beyond annotations: it states the tool is read-only ('Reads only; it never creates or rotates a key'), clarifies that 'not authenticated' is a successful response rather than an error, and describes the three distinct states it distinguishes. This is rich detail beyond the readOnlyHint and idempotentHint annotations.

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

Conciseness5/5

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

The description is three sentences, each earning its place: purpose, usage trigger with alternative, and behavioral disclosure. It is front-loaded with the core purpose and contains zero fluff. Every clause contributes actionable information.

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

Completeness5/5

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

For a tool with no parameters and no output schema, the description is remarkably complete. It covers purpose, when to use, failure semantics (no-key state and login fallback), what it does not do (create/rotate keys), and how it differs from sibling tools (upgrade, get_profile). This fully equips an agent to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters, which sets a baseline of 4. The description appropriately focuses on what the tool inspects (the stored key state) rather than parameters, and there is no schema detail to repeat. The description adds no parameter-specific meaning, but none is needed.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Report whether this client holds a working Misar.Blog API key, and which account it belongs to.' It uses a specific verb ('report') and resource ('Misar.Blog API key') and distinguishes it from siblings by explicitly referencing login, upgrade, and get_profile as alternatives for other actions.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'Run it first when anything is failing with an auth error, and before a run of write operations.' It also gives a conditional action: 'If it reports no key, run `login`.' This clearly differentiates it from write operations and other auth-related tools.

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

suggest_titlesSuggest titles from draft textA
Read-only
Inspect

Generate 5 title options FROM AN EXISTING DRAFT, derived from what the article actually says.

Pick between the two title tools by what you have in hand: use this one when the text exists and should drive the headline. Use generate_title_seo when you are starting from a topic or keyword, or want titles aimed at specific search terms — this tool takes no keyword input at all.

Nothing is saved and the article is not retitled; apply a choice with update_article. Requires an API key and consumes AI credits per call. Generative, so repeated calls return different titles. Needs at least 20 characters of text to work from.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesThe article text to draw titles from, plain or Markdown, 20-8000 characters. More of the real draft yields better-fitting titles than a summary.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint true, destructiveHint false), the description explicitly states that nothing is saved, the article is not retitled, and requires an API key with credit consumption. It also discloses the generative (non-deterministic) nature of the tool and the 20-character minimum, providing critical behavioral context that annotations alone do not convey.

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

Conciseness5/5

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

The description is concise and well-structured: it leads with the core purpose, then explains usage differentiation, followed by side effects and constraints. Each sentence adds unique value, and no redundant or filler content exists.

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

Completeness5/5

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

Given the tool's simplicity (single parameter, no output schema) and strong annotations, the description fully covers what an agent needs to know: when to use it, what it returns (5 titles), that it is read-only and doesn't persist changes, cost implications, and the non-deterministic output. It also mentions the specific update_article tool to apply a title, covering the follow-up action.

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

Parameters3/5

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

Schema coverage is 100%, and the schema description already fully explains the 'context' parameter (plain/Markdown, 20-8000 chars, and advice to use the full draft for better titles). The tool description repeats these points but adds no new parameter-level information that isn't already in the schema, so it meets the baseline without exceeding it.

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

Purpose5/5

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

The description clearly states 'Generate 5 title options FROM AN EXISTING DRAFT, derived from what the article actually says.' It specifies the exact deliverable (5 titles) and the input (existing draft). It also distinguishes itself from the sibling tool generate_title_seo by explaining when each should be used, making the tool's purpose unmistakable.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: 'use this one when the text exists and should drive the headline' and contrasts with generate_title_seo for keyword-driven scenarios. It also notes the tool 'takes no keyword input at all,' reinforcing the selection criteria.

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

update_articleUpdate an articleA
Idempotent
Inspect

Change the title, body, or tags of an article or draft that already exists.

Only the fields you pass are touched; omitted fields keep their current values. Passing tags REPLACES the whole tag list rather than adding to it, so send the full set you want. Editing a published article changes what readers see immediately; it does not unpublish or re-date it.

Safe to repeat: the same call twice leaves the same result. Requires an API key, and the account must own the article. Errors if no updatable field is supplied. Returns the updated article.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesArticle or draft id from a listing tool. This is the id, not the slug.
tagsNoReplacement tag list, up to 10. Overwrites the existing tags entirely.
titleNoReplacement headline.
body_markdownNoReplacement body as Markdown. Replaces the whole body, not a patch.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already provide idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds rich detail: partial update semantics, tags replacement behavior, immediate effect on published articles, API key/ownership requirements, and an error condition. This goes well beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is appropriately sized with a front-loaded purpose statement, followed by behavioral details, then security/error/return info. Every sentence provides necessary information without fluff or redundancy.

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

Completeness5/5

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

The tool has no output schema, but the description states it 'Returns the updated article.' It also covers partial update behavior, tags replacement, published-article effects, idempotency, auth requirements, ownership, and an error condition. This is very complete for a mutation tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining that only passed fields are touched (partial update) and that an error occurs if no updatable field is supplied. It reinforces the tags replacement meaning already in the schema but adds the partial-update context.

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

Purpose5/5

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

The description clearly states 'Change the title, body, or tags of an article or draft that already exists.' This uses a specific verb (change) and resource (existing article/draft), clearly distinguishing it from creation or publication tools in the sibling list.

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

Usage Guidelines3/5

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

The description implies usage by specifying 'article or draft that already exists' and discusses effects on published articles, but it never explicitly names alternative tools (e.g., create_draft, publish_article) or states when NOT to use it. Context is clear but exclusions/alternatives are absent.

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

upgradeShow plan and quota, or upgradeA
Idempotent
Inspect

Show the account's current plan, how much of each quota remains, and what a higher plan unlocks.

Called with no arguments it only reads — useful any time, not just after hitting a limit, and the natural follow-up when a write tool reports a quota error. Two arguments make it act rather than report, so pass them only on explicit instruction from the user: start_trial ENROLS the account in the free trial immediately (a real account change, not a preview), and open LAUNCHES a checkout page in the user's browser. Neither charges a card by itself.

Requires an API key. No billing state changes unless you pass start_trial; the returned quota snapshot already reflects a trial started in the same call. For whether you are authenticated at all, use status.

ParametersJSON Schema
NameRequiredDescriptionDefault
openNoOpen the checkout page in the user's default browser. Side effect on their desktop — only when they asked to upgrade.
planNoPlan slug to open, e.g. 'pro' or 'business'. Defaults to the recommended plan. Only meaningful with open=true.
start_trialNoEnrol in the free no-card trial now, if eligible. This changes the account's plan — do not set it speculatively.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds materially richer behavioral context: start_trial is a real account change, open launches a checkout page in the user's browser, neither charges a card by itself, an API key is required, and the returned quota snapshot already reflects a same-call trial. No contradiction with annotations exists.

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

Conciseness4/5

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

The description is front-loaded with the purpose, then explains usage, then covers safety and authentication. It is slightly longer than strictly necessary, with minor overlap between 'No billing state changes unless you pass start_trial' and 'Neither charges a card by itself,' but the length is justified given the tool's dual read/action nature.

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

Completeness5/5

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

Given the tool's complexity, three optional parameters, and no output schema, the description is remarkably complete. It covers default read behavior, what the read mode returns, when to use it, the side effects of both action arguments, API key requirements, trial behavior, and how it relates to the `status` sibling. An agent can safely decide when and how to invoke this tool.

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

Parameters4/5

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

Since the input schema has 100% description coverage, the baseline is 3. The description adds value by clarifying that passing either argument shifts the tool from reporting to acting, that these arguments should only be passed on explicit user instruction, and that plan defaults to the recommended plan. It reinforces safety-critical semantics without merely repeating the schema.

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

Purpose5/5

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

The description opens with a specific purpose: 'Show the account's current plan, how much of each quota remains, and what a higher plan unlocks.' It clearly differentiates the no-argument read mode from the two-argument action mode, and the title reinforces this dual behavior. This distinguishes it from siblings like status, which is about authentication rather than plan/quota information.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: called with no arguments it only reads and is 'useful any time, not just after hitting a limit,' and it is 'the natural follow-up when a write tool reports a quota error.' It explicitly warns that arguments should be passed 'only on explicit instruction from the user' and directs authentication questions to the sibling tool `status`, providing both when-to-use and when-not-to-use guidance.

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

upload_imageUpload a local imageAInspect

Upload an image file from the local filesystem to the Misar.Blog CDN and return its public URL.

Use it for images the user already has on disk; use generate_cover_image when the image does not exist yet. Available only when the server runs locally over stdio — the hosted endpoint cannot see your disk, so it does not offer this tool at all.

Reads the file and creates a NEW CDN object each call; uploading twice yields two URLs. Nothing on the filesystem is modified or deleted. Requires an API key. The resulting URL is public and undeletable through this server, so do not upload anything private. Accepts JPEG, PNG, WebP and GIF.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the image on this machine, e.g. '/Users/me/cover.png'. JPEG, PNG, WebP or GIF; the type is inferred from the extension.

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses that each call creates a new CDN object, the URL is public and undeletable, and nothing on the filesystem is modified. It also warns against uploading private content. This is rich, annotation-complementing behavioral detail.

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

Conciseness5/5

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

Every sentence earns its place: main action, usage guideline, behavioral warnings, and format constraints. The description is compact yet comprehensive, front-loaded with the primary purpose and followed by increasingly specific caveats.

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

Completeness5/5

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

With only one parameter and no output schema, the description covers all essential context: return value (public URL), idempotency behavior, filesystem side effects (none), access restrictions (local only, API key), and format support. Nothing important is left unstated.

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

Parameters5/5

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

Although the schema already fully documents 'file_path' with an example, the description adds semantics: absolute path required, accepted formats (JPEG, PNG, WebP, GIF), and that type is inferred from extension. This goes beyond the schema to make parameter usage foolproof.

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

Purpose5/5

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

The description opens with a specific verb+resource+outcome: 'Upload an image file from the local filesystem to the Misar.Blog CDN and return its public URL.' It also distinguishes the tool from its sibling 'generate_cover_image' by explicitly naming it, making the purpose unmistakable.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'Use it for images the user already has on disk; use generate_cover_image when the image does not exist yet.' It additionally covers environmental constraints (local stdio only) and prerequisites (API key), leaving no ambiguity about when this tool is appropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updatesv5.1.0
    • Changedadd_reaction2 fields changed
      • changedInput schema / properties / article_id / description
        Previous value: -"UUID of the article"New value: +"UUID of the article to react to, from the `id` field of article tools."
      • changedInput schema / properties / type / description
        Previous value: -"Reaction type: like, clap, or bookmark"New value: +"Which reaction to add: 'like' approval, 'clap' stronger approval, 'bookmark' save for later."
    • Changedadd_to_series3 fields changed
      • changedInput schema / properties / article_slug / description
        Previous value: -"The article slug to add"New value: +"Slug of the article to add, from list_my_articles. Not its title or id."
      • changedInput schema / properties / position / description
        Previous value: -"Position in the series (optional, appends if omitted)"New value: +"1-based position within the series. Omit to append at the end. Inserting shifts later articles down."
      • changedInput schema / properties / series_slug / description
        Previous value: -"The series slug"New value: +"Slug of the target series, from get_series. Not its title or id."
    • Changedcreate_draft3 fields changed
      • changedInput schema / properties / body_markdown / description
        Previous value: -"Full article body in Markdown"New value: +"Article body so far, as Markdown."
      • changedInput schema / properties / tags / description
        Previous value: -"Tags for the draft"New value: +"Topic tags to carry through to publication."
      • changedInput schema / properties / title / description
        Previous value: -"Draft title"New value: +"Working headline. Can be changed before publishing."
    • Changedcreate_series2 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"Short description of the series"New value: +"Short summary shown on the series page. Optional."
      • changedInput schema / properties / title / description
        Previous value: -"Series title"New value: +"Display name of the series. The slug is derived from this."
    • Changedgenerate_cover_image2 fields changed
      • changedInput schema / properties / prompt / description
        Previous value: -"Description of the image to generate"New value: +"What the image should show, in plain language, up to 1000 characters. Describe subject and style; avoid asking for text in the image."
      • changedInput schema / properties / size / description
        Previous value: -"Image dimensions (default: landscape 1792x1024)"New value: +"Output dimensions: '1792x1024' landscape (the default, best for article covers), '1024x1024' square, '1024x1792' portrait."
    • Changedgenerate_title_seo2 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Optional: existing article content (plain text or markdown). Providing it lets the AI align titles with your actual content."New value: +"Optional draft text (plain or Markdown, up to 8000 chars) so the titles match what the article actually says. Titles still follow `prompt` for keywords."
      • changedInput schema / properties / prompt / description
        Previous value: -"Your article topic or target keywords. Be specific — include your niche, audience, and any long-tail phrases you want to rank for. Example: 'best AI writing tools for beginner bloggers 2025'"New value: +"Topic or target keywords, 3-500 characters. Include niche, audience and any long-tail phrase you want to rank for, e.g. 'best AI writing tools for beginner bloggers 2025'."
    • Changedget_analytics_summary1 field changed
      • changedInput schema / properties / days / description
        Previous value: -"Number of days to look back (default: 30, max: 365)"New value: +"Size of the trailing window in days, ending today. 1-365, defaults to 30. Use 7 for a week, 365 for a year."
    • Changedget_article1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"The article slug"New value: +"URL slug of the article, e.g. 'how-we-cut-build-times'. Not the numeric id, and not the full URL."
    • Changedget_follow_status1 field changed
      • changedInput schema / properties / user_id / description
        Previous value: -"UUID of the profile to check follow status for"New value: +"UUID of the profile to check, as returned in author fields by article tools. Not the username."
    • Changedget_reactions1 field changed
      • changedInput schema / properties / article_id / description
        Previous value: -"UUID of the article"New value: +"UUID of the article, from the `id` field returned by article tools."
    • Changedlist_comments3 fields changed
      • changedInput schema / properties / article_id / description
        Previous value: -"UUID of the article to fetch comments for"New value: +"UUID of the article, as returned in the `id` field by article tools. Not the slug."
      • addedInput schema / properties / limit / description
        Added value: +"Comments per page, 1-100. Defaults to 20."
      • addedInput schema / properties / offset / description
        Added value: +"Comments to skip before this page. Defaults to 0."
    • Changedlist_my_articles2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of articles to return"New value: +"Maximum articles to return, 1-100. Defaults to 20."
      • changedInput schema / properties / status / description
        Previous value: -"Filter by status (omit for all published)"New value: +"Return only articles in this state. Omit to return every state the account owns."
    • Changedlist_newsletter_issues1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"Issues to return, 1-50, newest first. Defaults to 10."
    • Changedlist_newsletter_subscribers2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Subscribers per page, 1-100. Defaults to 20."
      • addedInput schema / properties / offset / description
        Added value: +"Subscribers to skip before this page. Defaults to 0."
    • Changedlogin3 fields changed
      • changedInput schema / properties / base_url / description
        Previous value: -"Misar.Blog base URL for self-hosted instances."New value: +"Base URL of a self-hosted Misar.Blog. Omit for the hosted service."
      • changedInput schema / properties / force / description
        Previous value: -"Force re-authentication even if already logged in (rotates your API key)."New value: +"Re-authenticate even when already logged in. This ROTATES the API key and breaks any other client using the old one — only on explicit request."
      • changedInput schema / properties / port / description
        Previous value: -"Local callback port (9001–9099). Random by default."New value: +"Local port for the one-shot callback listener, 9001-9099. Random by default; set it only when a firewall requires a fixed port."
    • Changedpublish_article6 fields changed
      • changedInput schema / properties / body_markdown / description
        Previous value: -"Full article body in Markdown"New value: +"Complete article body as Markdown. Images may be referenced by URL."
      • changedInput schema / properties / cover_image_url / description
        Previous value: -"URL of the cover image"New value: +"Absolute URL of the hero image. generate_cover_image returns a URL suitable here."
      • changedInput schema / properties / schedule_at / description
        Previous value: -"ISO 8601 timestamp to schedule. Omit to publish immediately."New value: +"ISO 8601 timestamp to publish at, e.g. '2026-09-01T09:00:00Z'. Omit to publish immediately. A past timestamp publishes immediately."
      • changedInput schema / properties / tags / description
        Previous value: -"Up to 10 tags"New value: +"Up to 10 topic tags used for discovery and filtering."
      • changedInput schema / properties / title / description
        Previous value: -"Article title"New value: +"Headline, 1-250 characters."
      • changedInput schema / properties / visibility / description
        Previous value: -"Who can read this article"New value: +"Audience: 'public' anyone, 'subscribers' newsletter subscribers, 'paid' paying members, 'private' only you. Defaults to 'public'."
    • Changedremove_reaction2 fields changed
      • changedInput schema / properties / article_id / description
        Previous value: -"UUID of the article"New value: +"UUID of the article to un-react to, from the `id` field of article tools."
      • changedInput schema / properties / type / description
        Previous value: -"Reaction type to remove: like, clap, or bookmark"New value: +"Which reaction to withdraw: 'like', 'clap', or 'bookmark'."
    • Changedresearch_topic1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Research topic or question. Be specific for best results."New value: +"The topic or question to research, 5-500 characters. Specific beats broad: 'how small SaaS teams price annual plans' returns more than 'pricing'."
    • Changedsearch_articles4 fields changed
      • changedInput schema / properties / author / description
        Previous value: -"Filter by author username"New value: +"Restrict to one author, by username."
      • changedInput schema / properties / limit / description
        Previous value: -"Results to return (1-20)"New value: +"Maximum results to return, 1-20. Defaults to 10."
      • changedInput schema / properties / q / description
        Previous value: -"Keyword query (min 2 characters)"New value: +"Free-text query matched against title and body. Minimum 2 characters."
      • changedInput schema / properties / tag / description
        Previous value: -"Filter by tag"New value: +"Restrict to articles carrying this exact tag."
    • Changedsuggest_titles1 field changed
      • changedInput schema / properties / context / description
        Previous value: -"Your article content in plain text or markdown"New value: +"The article text to draw titles from, plain or Markdown, 20-8000 characters. More of the real draft yields better-fitting titles than a summary."
    • Changedupdate_article4 fields changed
      • changedInput schema / properties / body_markdown / description
        Previous value: -"New body in Markdown"New value: +"Replacement body as Markdown. Replaces the whole body, not a patch."
      • changedInput schema / properties / id / description
        Previous value: -"Article or draft ID"New value: +"Article or draft id from a listing tool. This is the id, not the slug."
      • changedInput schema / properties / tags / description
        Previous value: -"Replace the tag list"New value: +"Replacement tag list, up to 10. Overwrites the existing tags entirely."
      • changedInput schema / properties / title / description
        Previous value: -"New title"New value: +"Replacement headline."
    • Changedupgrade3 fields changed
      • changedInput schema / properties / open / description
        Previous value: -"Open the upgrade/checkout page in the default browser."New value: +"Open the checkout page in the user's default browser. Side effect on their desktop — only when they asked to upgrade."
      • changedInput schema / properties / plan / description
        Previous value: -"Plan slug to open (e.g. 'pro', 'business'). Defaults to the recommended plan."New value: +"Plan slug to open, e.g. 'pro' or 'business'. Defaults to the recommended plan. Only meaningful with open=true."
      • changedInput schema / properties / start_trial / description
        Previous value: -"Start the free no-card trial immediately, if you're eligible."New value: +"Enrol in the free no-card trial now, if eligible. This changes the account's plan — do not set it speculatively."
    • Changedupload_image1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to the image file (JPEG, PNG, WebP, or GIF)"New value: +"Absolute path to the image on this machine, e.g. '/Users/me/cover.png'. JPEG, PNG, WebP or GIF; the type is inferred from the extension."
  2. 26 tool updatesv2.0.0
    • First observedadd_reaction
    • First observedadd_to_series
    • First observedcreate_draft
    • First observedcreate_series
    • First observedgenerate_cover_image
    • First observedgenerate_title_seo
    • First observedget_analytics_summary
    • First observedget_article
    • First observedget_follow_status
    • First observedget_profile
    • First observedget_reactions
    • First observedget_series
    • First observedlist_comments
    • First observedlist_my_articles
    • First observedlist_newsletter_issues
    • First observedlist_newsletter_subscribers
    • First observedlogin
    • First observedpublish_article
    • First observedremove_reaction
    • First observedresearch_topic
    • First observedsearch_articles
    • First observedstatus
    • First observedsuggest_titles
    • First observedupdate_article
    • First observedupgrade
    • First observedupload_image

TDQS

A4.1/5.0

Scored across 26 tools

Disambiguation4/5

Most tools target a distinct resource and action, and the close pairs like generate_title_seo vs suggest_titles and publish_article vs create_draft are clearly separated by their descriptions. The only mild issue is get_series, which despite its name returns the whole collection, but the description removes the ambiguity.

Naming Consistency4/5

The majority of tools follow a clear verb_noun pattern such as create_draft, update_article, and add_reaction. A few bare verbs like login, status, and upgrade, plus the get_/list_ split for read operations, are minor deviations from an otherwise predictable convention.

Tool Count2/5

At 26 tools, this exceeds the comfortable range and feels heavy even for a full blogging platform. Several narrow operations—three reaction tools, two newsletter list tools, and get_follow_status with no follow action—could be consolidated or omitted.

Completeness2/5

The article lifecycle lacks delete and unpublish, series have no update/remove/delete operations, and follow, comment, and newsletter features are read-only or missing key actions. Agents will hit dead ends on common requests like deleting an article, following a profile, or replying to a comment.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Halo blog systems through natural language, supporting article creation/editing/publishing, categories, tags, attachments, and includes 10 AI writing prompts for content optimization and SEO.
    18
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage WordPress sites through natural conversation, supporting post creation, content updates, site queries, and draft-to-publish workflows via the WordPress REST API.
    9
    MIT