Skip to main content
Glama

πŸš€ Medium Blog MCP Server

AI-powered blog generation system built with FastMCP. Automates research, content generation, quality checks, and Medium export for technical blog posts.

✨ Features

  • πŸ” Multi-Source Research: Automatically gathers content from Wikipedia, arXiv, web search, and images

  • πŸ€– AI Content Generation: Uses Claude API to generate high-quality blog posts

  • πŸ“Š Image Processing: Downloads and describes images with AI-generated descriptions

  • πŸ“ Quality Analysis: Comprehensive readability, citation, and SEO checks

  • βœ… Plagiarism Tracking: Hybrid manual/automated plagiarism checking workflow

  • πŸ“€ Medium Export: One-click export to Medium-ready markdown format

  • πŸ’Ύ SQLite Storage: Persistent storage of all drafts and research

Related MCP server: blog-generator-mcp

πŸ—οΈ Architecture

Medium Blog MCP Server
β”œβ”€β”€ Research Engine (Wikipedia, arXiv, Web, Images)
β”œβ”€β”€ AI Content Generator (Claude API)
β”œβ”€β”€ Image Handler (Download + AI Description)
β”œβ”€β”€ Quality Analyzer (Readability, Citations, SEO)
β”œβ”€β”€ Medium Exporter (Markdown + Assets)
└── SQLite Database (Sessions, Drafts, Research)

πŸ“‹ Prerequisites

πŸš€ Quick Start

1. Clone and Install

# Clone repository
git clone <your-repo-url>
cd medium-blog-mcp

# Activate virtual environment
uv init
uv sync

# Install dependencies
uv add -r requirements.txt

# use these uv commands to test , run mcp servers
Test the server - uv run fastmcp dev main.py
Run the server - uv run fastmcp run main.py
Add the server to claude desktop - uv run fastmcp install
claude-desktop main.py

2. Configure Environment

# Copy environment template
cp .env.example .env

# Edit .env and add your DB URL
# DATABASE_URL=YOUR_SQLITE_DB_URL

3. Run the Server

python main.py

The MCP server will start and be available for Claude Desktop or other MCP clients.

πŸ”§ Configuration for Claude Desktop

Add to your Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "medium-blog-generator": {
      "command": "[Your/Path/to/uv]",
      "args": [
        "--directory",
        "C:\\medium_mcp",
        "run",
        "fastmcp",
        "run",
        "main.py"
      ],
      "env": {},
      "transport": "stdio",
      "type": null,
      "cwd": null,
      "timeout": null,
      "description": null,
      "icon": null,
      "authentication": null
    }
  }
}

Config locations:

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

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

πŸ“– Complete Workflow

Step 1: Create Session

create_blog_session(topic="Latest AI Model Advancements", target_length="medium")

Step 2: Research Phase ⭐ USER CHECKPOINT

research_topic(session_id="abc123", depth="comprehensive")
get_research_summary(session_id="abc123")  # Review research
approve_research(session_id="abc123")       # Approve to continue

Step 3: Outline Generation ⭐ USER CHECKPOINT

generate_outline(session_id="abc123", style="technical", num_sections=5)
# Review outline, optionally modify
approve_outline(session_id="abc123")

Step 4: Content Generation

generate_full_content(session_id="abc123")
get_full_draft(session_id="abc123")  # Review full draft

Step 5: Plagiarism Checking ⭐ USER CHECKPOINT (Manual)

prepare_plagiarism_chunks(session_id="abc123")
# Copy chunks to Grammarly/QuillBot/GPTZero manually
record_plagiarism_result(session_id="abc123", chunk_id=1, 
                        plagiarism_score=2.3, ai_detection_score=8.5, 
                        tool_used="Grammarly")

Step 6: Quality Analysis ⭐ USER CHECKPOINT

run_quality_analysis(session_id="abc123")  # Get detailed QA report
approve_final_draft(session_id="abc123")   # Final approval

Step 7: Export to Medium

export_to_medium(session_id="abc123")

πŸ› οΈ Available MCP Tools

Session Management

  • create_blog_session - Start new blog project

  • get_session_status - Check progress

  • list_sessions - List all sessions

Research

  • research_topic - Multi-source research

  • get_research_summary - Review findings

  • add_custom_source - Add manual sources

  • approve_research - ⭐ Proceed to outline

Outline

  • generate_outline - AI-generated structure

  • modify_outline - Make changes

  • approve_outline - ⭐ Proceed to writing

Content Generation

  • generate_full_content - Generate blog

  • get_full_draft - Review content

  • regenerate_section - Improve specific section

Plagiarism Checking

  • prepare_plagiarism_chunks - Split for checking

  • record_plagiarism_result - ⭐ Record manual checks

  • get_plagiarism_summary - View all results

Quality & Export

  • run_quality_analysis - Comprehensive QA

  • approve_final_draft - ⭐ Final approval

  • export_to_medium - Generate export files

πŸ“ Project Structure

medium-blog-mcp/
β”œβ”€β”€ main.py                   # FastMCP server (all tools)
β”œβ”€β”€ database.py               # SQLAlchemy models & DB operations
β”œβ”€β”€ research.py               # Multi-source research engine
β”œβ”€β”€ content_generator.py      # Claude API content generation
β”œβ”€β”€ image_handler.py          # Image download & AI descriptions
β”œβ”€β”€ quality.py                # Quality analysis & readability
β”œβ”€β”€ exporter.py               # Medium markdown export
β”œβ”€β”€ config.py                 # Configuration management
β”œβ”€β”€ requirements.txt          # Python dependencies
β”œβ”€β”€ .env.example              # Environment variables template
β”œβ”€β”€ README.md                 # This file
└── data/                     # Generated data (auto-created)
    β”œβ”€β”€ blog_database.db      # SQLite database
    β”œβ”€β”€ sessions/             # Session-specific data
    β”‚   └── {session_id}/
    β”‚       └── images/       # Downloaded images
    β”œβ”€β”€ exports/              # Final exports
    β”‚   └── {session_id}/
    β”‚       β”œβ”€β”€ blog_post.md
    β”‚       β”œβ”€β”€ images/
    β”‚       β”œβ”€β”€ citations.txt
    β”‚       β”œβ”€β”€ metadata.json
    β”‚       └── qa_report.txt
    └── images/               # Image storage

🎯 Usage Example

Here's a complete example of generating a blog about AI models:

# 1. Create session
create_blog_session(topic="GPT-4 vs Claude 3: Technical Comparison", target_length="medium")
# Returns: {"session_id": "abc123", ...}

# 2. Research
research_topic(session_id="abc123", depth="comprehensive")
get_research_summary(session_id="abc123")
# Review the 15-20 sources gathered
approve_research(session_id="abc123")

# 3. Generate outline
generate_outline(session_id="abc123", style="technical", num_sections=5)
# Review outline structure
approve_outline(session_id="abc123")

# 4. Generate content
generate_full_content(session_id="abc123")
get_full_draft(session_id="abc123")
# Review the ~2500 word blog with images

# 5. Check plagiarism manually
prepare_plagiarism_chunks(session_id="abc123")
# Copy chunks to Grammarly, check, then:
record_plagiarism_result(session_id="abc123", chunk_id=1, 
                        plagiarism_score=1.8, ai_detection_score=7.2, 
                        tool_used="Grammarly")

# 6. Quality analysis
run_quality_analysis(session_id="abc123")
# Review QA report
approve_final_draft(session_id="abc123")

# 7. Export
export_to_medium(session_id="abc123")
# Get Medium-ready markdown + all assets!

Total time: 30-45 minutes for a complete 2500-word blog!

πŸ” Quality Checks

The system automatically checks:

Readability

  • Flesch Reading Ease score

  • Flesch-Kincaid Grade Level

  • Average sentence length

  • Passive voice percentage

Citations

  • All sources properly cited

  • Citation format validation

  • Unused sources identified

Images

  • All images have descriptions

  • Alt text present

  • Proper placement

SEO

  • Title length (50-70 chars optimal)

  • Header hierarchy (H1, H2, H3)

  • Keyword presence

  • Meta information

Structure

  • Word count vs target

  • Section balance

  • Overall organization

πŸ“Š Database Schema

Tables

  • sessions - Blog sessions

  • research_sources - Research data

  • outlines - Generated outlines

  • blog_drafts - Blog content versions

  • images - Downloaded images

  • plagiarism_checks - Manual check results

  • quality_checks - QA reports

All data persists across sessions and can be resumed.

πŸ› Troubleshooting

Database Issues

# Reset database (WARNING: deletes all data)
rm data/blog_database.db
python main.py  # Will recreate database

Image Download Failures

  • Check internet connection

  • Some images may be behind authentication

  • System will create fallback descriptions

πŸ”„ Development Roadmap

Current Version (v1.0)

  • βœ… Multi-source research

  • βœ… AI content generation

  • βœ… Image processing

  • βœ… Quality analysis

  • βœ… Medium export

Future Enhancements (v2.0+)

  • πŸ”² Automated plagiarism APIs

  • πŸ”² Multiple format exports (HTML, PDF)

  • πŸ”² Note-taking app integrations (Obsidian, Notion)

  • πŸ”² Multi-blog management

  • πŸ”² SEO optimization suggestions

  • πŸ”² Social media snippet generation

πŸ“ License

MIT License - feel free to use and modify for your needs.

🀝 Contributing

Contributions welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Submit a pull request

πŸ’¬ Support

For issues or questions:

  • Open an issue on GitHub

  • Check the documentation

  • Review example workflows

πŸ™ Credits

Built with:


Happy blogging! πŸš€

Available Tools

23 tools
add_custom_sourceAdd Custom SourceC

Add additional source manually

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSource URL to fetch
session_idYesActive session ID
source_typeNoType of source (web, pdf, image)web

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior1/5

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

The description does not disclose any behavioral traits such as side effects, permission requirements, or the meaning of 'manually'. With no annotations, the description is the sole source of behavioral information and is insufficient.

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

Conciseness5/5

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

The description is a single, concise sentence with no redundant words or elaboration, making it perfectly efficient.

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

Completeness2/5

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

The description omits essential context about what a 'source' is, how it relates to the session, and what the expected outcome or output is. Although an output schema exists, it is not referenced, and the description alone leaves an agent uncertain about the tool's role.

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 descriptions for all three parameters (url, session_id, source_type), achieving 100% coverage. The description adds no extra meaning beyond the schema, so per the rubric, baseline 3 is appropriate.

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

Purpose3/5

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

The description 'Add additional source manually' states a verb and object, but 'source' is ambiguous without context. It doesn't specify what kind of source or its role in the session, which is less specific than the example in the calibration.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives, nor on prerequisites or conditions. The description is purely declarative and offers no decision support.

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

approve_final_draftApprove Final DraftB

⭐ USER FINAL APPROVAL - Mark blog as ready for export

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description must carry the transparency burden. It states the intended effect (marking ready for export) but does not disclose any side effects, state changes, or potential errors. The straightforward nature of the action keeps it from being misleading.

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

Conciseness5/5

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

The description is extremely concise and free of fluff. The emoji and capitalized 'USER FINAL APPROVAL' effectively convey prominence without redundancy.

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

Completeness4/5

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

Given the tool's simplicity and the explicit parameter, the description is sufficient for an agent to understand its purpose. It could benefit from noting that this should be the last approval step before export, but this is implied by the tool name and sibling context.

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 sole parameter 'session_id' is already described in the schema as 'Active session ID'. The description adds no additional meaning beyond this, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Mark blog as ready for export') and the resource (final draft). It distinguishes itself from sibling approval tools like approve_outline and approve_research by specifying 'final approval' and the export outcome.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It lacks context about prerequisites (e.g., after quality analysis) or the broader workflow, so an agent might misuse it prematurely.

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

approve_outlineApprove OutlineA

⭐ USER APPROVES outline to proceed with content generation

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

There are no annotations, so the description carries the transparency burden. It discloses the main side effectβ€”proceeding to content generationβ€”but does not mention whether the action is reversible, whether it changes session state, or what happens if called more than once.

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

Conciseness5/5

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

The description is a single, direct sentence with no filler. The emoji and capitalization draw attention to the key action without adding unnecessary length.

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

Completeness3/5

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

The description is adequate for a simple confirmation action, but it omits what the tool returns and any preconditions (e.g., the outline must exist and be generated first). Given the lack of annotations and output schema details, some context 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?

The only parameter, session_id, is fully covered by the schema description as 'Active session ID'. The tool description does not add any additional semantics, so it stays at the baseline.

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

Purpose5/5

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

The description clearly states the tool's purpose: approving an outline to move forward with content generation. It also distinguishes this from related approval tools like approve_research and approve_final_draft by naming the outline and the next stage.

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

Usage Guidelines4/5

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

The description implies that the tool should be called when the user approves the outline and wants content generation to proceed. It does not explicitly contrast with sibling approval tools, but the phrase 'outline' and 'content generation' provide enough context to select it.

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

approve_researchApprove ResearchC

⭐ USER APPROVES research to proceed to outline generation

ParametersJSON Schema
NameRequiredDescriptionDefault
feedbackNoOptional feedback for outline generation
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, and the description only states the intended workflow transition. It does not explain whether the approval is persistent, reversible, or what underlying state changes occur in the session.

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 very short and contains no unnecessary explanation. The emoji and uppercase wording are stylistic noise, but the core content is concise and direct.

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

Completeness3/5

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

The description is sufficient for a simple approval action but lacks details on side effects, repeatability, or relationship to other workflow steps. It could be more informative about what happens after approval beyond 'proceed to outline generation.'

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?

Param descriptions are provided in the schema, and the description adds no extra meaning beyond stating that feedback is for outline generation. Since schema coverage is effectively full, a baseline score is appropriate.

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

Purpose4/5

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

The description clearly identifies the action (approve research) and its purpose (proceed to outline generation). The verb and object are explicit, though the all-caps and emoji add noise without meaning.

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

Usage Guidelines2/5

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

No guidance is provided on when to call this tool versus alternatives like request_more_research or approve_outline. It implies a workflow position but does not state prerequisites or conditions.

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

create_blog_sessionCreate Blog SessionC

Start a new blog writing session

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesBlog topic (e.g., "Latest advancements in LLMs")
target_lengthNoshort (800-1200), medium (1500-2500), long (3000+)medium

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations to cover safety or side effects, the description carries the full burden. 'Start' implies creation but does not disclose potential consequences, such as whether a session is persisted, whether any initial data is required, or what happens on conflict. The description lacks any behavioral detail beyond the act of starting.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler words. It is perfectly sized for the tool's purpose and contains only the essential action, making it highly efficient.

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

Completeness2/5

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

Even though the tool is simple, its position in a complex workflow (involving research, outline, and export) suggests that a mention of the session ID or next steps would be valuable. The description omits any reference to return values or how the session integrates with subsequent tools, leaving the agent without important contextual information.

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 provides descriptions for both parameters (topic and target_length), including examples and length ranges, so schema coverage is 100%. The tool description itself adds no additional meaning beyond the schema, matching the baseline score of 3.

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

Purpose4/5

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

The description 'Start a new blog writing session' uses a clear verb and resource, distinguishing it from sibling tools like get_session_status and list_sessions. However, it is somewhat generic as it doesn't clarify what a session entails or what the tool's specific role in the workflow is, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. While the name and sibling context imply it should be used to initiate a new session, the description itself does not state any such condition or contrast with other tools, leaving usage to inference.

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

export_to_mediumExport To MediumC

Export blog to Medium-ready markdown format

Creates:

  • Medium-formatted markdown file

  • Images folder with all images

  • Citations/References section

  • Metadata JSON

  • QA Report

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

The description indicates that files are created but does not disclose side effects such as whether existing files are overwritten, where outputs are stored, or whether any approval is required. With no annotations, this leaves important behavioral details unclear.

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

Conciseness5/5

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

The description is brief, well-structured, and free of unnecessary detail. The bullet list clearly communicates the tool's outputs without verbosity.

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

Completeness3/5

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

The description covers the main purpose and output artifacts, but it lacks context about when the export should be performed, what the return value looks like, and any dependencies on prior steps. It is adequate for a simple tool but not fully self-contained.

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 only parameter, session_id, already has a clear schema description ('Active session ID'), so the description adds no additional semantic value. Schema coverage for parameters is effectively complete, meriting a baseline score.

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

Purpose4/5

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

The description clearly states the tool exports a blog to Medium-ready markdown and enumerates the created artifacts. It is specific about the resource and action, though it does not explicitly distinguish itself from the sibling get_export_files.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as an approved final draft. An agent would have to infer the appropriate context from the tool name alone.

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

generate_full_contentGenerate Full ContentA

Generate complete blog post - Claude Desktop will write the blog based on outline

This tool provides the outline and research context. Claude (you) should:

  1. Review the approved outline and research

  2. Write the complete blog post in markdown

  3. Call save_draft() with the generated content

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description transparently discloses that the tool triggers a call to save_draft() with generated content, which is a side effect. It also indicates that it only uses the outline and research context, with no hidden destructive actions.

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 header and numbered steps, avoiding unnecessary fluff while delivering all necessary information.

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 explains the tool's purpose, workflow, and side effects. It lacks details about error handling or return values, but given the simplicity and the presence of sibling tools, it is sufficiently complete for an agent to use 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 schema already describes session_id as 'Active session ID', but the description adds context that this session is used to provide outline and research context, enhancing the meaning beyond the basic schema.

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

Purpose5/5

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

The description clearly states the tool generates complete blog posts based on an outline, with specific steps. It distinguishes itself from sibling tools like generate_outline and save_draft by focusing on full content generation and explicitly referencing the context it provides.

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 usage instructions: review the approved outline and research, write the blog post in markdown, and call save_draft(). This gives a clear workflow for when and how to use the tool.

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

generate_outlineGenerate OutlineB

Generate blog outline - Claude Desktop will create the outline based on research

This tool provides the research context and instructions. Claude (you) should:

  1. Review the research sources and images

  2. Create a comprehensive outline in JSON format

  3. Call save_outline() with the generated outline

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoWriting style (technical, storytelling, how-to, listicle, comparative)technical
session_idYesActive session ID
num_sectionsNoNumber of main sections (3-7)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly states that the agent (not the tool) must review research, create an outline, and call save_outline() – making the tool's role as a context provider transparent. It also hints at the need for research sources and images. However, it does not mention potential side effects beyond saving, nor does it address error cases or state changes, leaving some ambiguity.

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 well-structured with a clear list of steps, and the primary action is front-loaded. It is moderately concise, though the opening phrase 'Claude Desktop will create the outline' is somewhat redundant with 'Generate blog outline'. Overall, it is efficient and easy to parse.

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

Completeness3/5

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

Given the tool's role in a multi-step workflow with 23 siblings, the description is incomplete. It does not specify when in the process this should be called (e.g., after research approval), nor does it mention that the outline must be approved later. It also does not explain what the tool returns (though an output schema exists, which mitigates that). The description covers the agent's immediate task but lacks broader workflow context.

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 each parameter (style, session_id, num_sections) is already documented in the input schema. The description adds no extra meaning to these parameters – it does not explain their interplay or provide examples. According to the calibration, with high schema coverage, a baseline of 3 is appropriate, and the description does not exceed that.

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

Purpose4/5

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

The description states a clear purpose: 'Generate blog outline' with a verb and resource. It also clarifies that the tool provides context and instructions for the agent to create the outline, distinguishing it from a simple generator. However, it does not explicitly differentiate from sibling tools like modify_outline or generate_full_content, so it misses that opportunity for disambiguation.

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

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives like modify_outline or approve_outline. It implies a workflow by instructing to call save_outline() afterwards, but does not state prerequisites (e.g., research must be approved) or conditions that would make this tool the right choice. This is a significant gap given the rich sibling set.

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

get_export_filesGet Export FilesC

Retrieve all export files for download

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior1/5

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

Without annotations, the description carries full responsibility for disclosing side effects. 'Retrieve' implies read-only, but there is no explicit statement about mutating state, and the output format or potential errors are not mentioned.

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

Conciseness5/5

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

The description is a single, concise sentence that directly states the purpose without unnecessary words or structure.

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

Completeness3/5

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

For a simple retrieval tool with one parameter and no annotations, the description conveys the basic purpose. However, it lacks context about the relationship to other tools, expected output structure, or potential edge cases, making it only minimally 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?

The tool description does not discuss any parameters, but the schema already provides a description for 'session_id' (Active session ID), covering 100% of parameters. Therefore, baseline of 3 applies as no additional meaning is added.

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 verb 'Retrieve' and resource 'export files' clearly specify the action and object. The purpose is unambiguous and distinct from sibling tools like 'export_to_medium' which perform export actions.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, conditions, or typical usage scenarios such as after an export.

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

get_full_draftGet Full DraftA

Retrieve the complete generated blog post

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. The verb 'Retrieve' implies a read-only operation with no side effects, but this is not explicitly stated. No contradiction, but not fully transparent about 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?

Single, concise sentence with no unnecessary words or repetition. Highly efficient and easy to parse.

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 retrieval tool, the description is sufficient. Since an output schema exists, return values are not needed. However, it could mention that the draft must be generated first, but that is a minor omission.

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 covers 100% of parameters (session_id is described) and the description adds no extra meaning beyond what the schema already provides. 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?

Clearly states the verb 'Retrieve' and the resource 'complete generated blog post', which distinguishes it from sibling tools like get_research_summary or get_plagiarism_summary.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives, nor any mention of prerequisites like having already generated content. The purpose is implied but not stated.

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

get_plagiarism_summaryGet Plagiarism SummaryC

Summary of all plagiarism checks performed

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description bears full responsibility for disclosing behavior. It merely states that a summary is provided, with no mention of whether it is read-only, has side effects, or requires specific permissions. The lack of transparency about its operational characteristics is a significant gap.

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 extremely concise, containing only a single phrase. It is not overly verbose, which is a positive, but it might benefit from a bit more detail to be fully informative. The structure is clean and to the point, leading to a high but not perfect score.

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

Completeness2/5

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

The description is minimal and does not explain what the summary includes, how it is formatted, or whether it is a list, a count, or a detailed report. Since no output schema is provided, this lack of context makes it difficult for the agent to know what to expect, leaving the tool incomplete in terms of contextual information.

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 provides a description for the only parameter, 'session_id' as 'Active session ID', which gives basic context. The main description adds no further detail about this parameter, so the schema description carries the semantic weight. This is adequate but not enhanced beyond the schema baseline.

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

Purpose4/5

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

The description 'Summary of all plagiarism checks performed' clearly indicates the tool provides a summary of plagiarism checks. Although it lacks an explicit verb, the name 'get_plagiarism_summary' and the context make the purpose clear, and it is distinct from sibling tools that perform other plagiarism-related actions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus the sibling tools (e.g., after running checks, before viewing detailed results). It does not mention any prerequisites or context-specific usage, leaving the agent to infer the appropriate timing or workflow.

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

get_research_summaryGet Research SummaryB

⭐ USER CHECKPOINT: Review all research before proceeding

Returns detailed summary of all sources, images, themes, and credibility scores

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The verbs 'Review' and 'Returns' imply a read-only operation with no side effects, which is accurate. However, it does not explicitly state that this is a non-destructive retrieval, nor does it disclose behavior when research is incomplete or when the session is invalid. The read-only nature is mostly left to the 'get_' naming convention rather than stated.

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

Conciseness3/5

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

The description is short, and the checkpoint directive is front-loaded. However, the '⭐ USER CHECKPOINT' formatting with emoji and all-caps is noisy for an agent parser and reads more like a human-facing UI label than a machine-readable directive. The two sentences are efficient but the first is workflow guidance that could be tightened.

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

Completeness3/5

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

An output schema exists, so return format is covered elsewhere. For a tool sitting in a research workflow, the 'USER CHECKPOINT' line conveys its position as a review-before-proceeding step, which is useful. But it doesn't clarify the workflow sequence relative to siblings like research_topic or approve_research, or what 'proceeding' refers to specifically. Adequate but with gaps in workflow positioning.

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% β€” the single required parameter session_id is fully described in the schema ('Active session ID'). The description adds nothing about the parameter, but that's acceptable since the schema fully covers it. Baseline 3 applies as the schema does the heavy lifting and no additional semantic context is needed.

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

Purpose4/5

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

The description states a specific verb and resource: 'Returns detailed summary of all sources, images, themes, and credibility scores.' It distinguishes from siblings like get_full_draft (draft content) and get_session_status (session state). The 'USER CHECKPOINT' preface adds workflow framing but is not part of the purpose statement, keeping the core purpose clear.

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 'Review all research before proceeding' directive gives useful context that this tool is a checkpoint used before advancing in the workflow, and 'get_' naming implies it's for retrieving rather than mutating. However, it does not explicitly name when not to use it, nor does it reference siblings like research_topic, approve_research, or get_full_draft to disambiguate. The usage context is implied rather than explicit.

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

get_session_statusGet Session StatusC

Check current progress of a blog session

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesThe session ID to check

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral aspects such as read-only nature, side effects, or error conditions. The single sentence offers no transparency regarding what side effects or guarantees the operation has.

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

Conciseness5/5

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

The description is a single, concise sentence with no unnecessary words or redundancy. It is well-structured and directly conveys the core action.

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

Completeness3/5

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

The tool is simple, but the description lacks context about when this status check is needed, what kind of progress is tracked, or any prerequisites. It provides minimal context for an agent to decide when to invoke it, though the simple scope does not demand extensive explanation.

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 describes the single parameter (session_id) with a clear explanation. Since schema coverage is 100%, the baseline is 3; the description does not add further semantic detail beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('Check') and the resource ('progress of a blog session'), making the purpose evident. However, it does not explicitly distinguish itself from sibling getters like get_full_draft or get_research_summary, though the focus on 'status' provides some differentiation.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios where this status check is appropriate or where other getter tools should be preferred, leaving the agent to infer usage from the tool name alone.

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

list_sessionsList SessionsC

List all blog sessions

ParametersJSON Schema
NameRequiredDescriptionDefault
status_filterNoFilter by status (all, active, completed)all

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior1/5

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

Annotations are absent, so the description carries the full burden of disclosing behavioral aspects like read-only nature, side effects, or authentication requirements. The description only states the action and gives no transparency about potential side effects or permissions.

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

Conciseness5/5

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

The description is a single, concise sentence 'List all blog sessions' that is front-loaded with the primary verb and object. There is no redundant or extraneous information, making it efficient and well-structured.

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

Completeness3/5

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

Given the simplicity of the tool and the presence of an output schema, the description is adequate but not thorough. It does not address edge cases like behavior with invalid filter values, pagination, or ordering, but these are not critical for a basic listing function and could be inferred from the schema or context.

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 a description for status_filter ('Filter by status (all, active, completed)') with 100% coverage. The tool description adds no additional meaning beyond referencing 'all' in its title, so it neither enhances nor detracts from the schema, warranting the baseline score for high coverage.

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

Purpose4/5

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

The description explicitly states 'List all blog sessions', which clearly identifies the tool's function as listing sessions. The parameter for filtering is also present in the schema, but the description itself does not fully clarify whether filtering is optional or default behavior, so it falls short of a perfect 5.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_session_status or get_full_draft. There is no mention of scenarios where listing is preferred or how it differs from other session-related tools.

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

modify_outlineModify OutlineB

Modify outline sections, titles, or structure

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID
modificationsYesDictionary with changes to make { "title": "new title", "subtitle": "new subtitle", "sections": { "2": {"name": "new name", "key_points": [...], "target_words": 800} }, "add_section": {"order": 4, "name": "...", "key_points": [...], "target_words": 500}, "remove_section": 3 }

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose side effects such as whether changes are persisted, whether the outline's approval status is affected, or whether validation is performed. The agent is left to infer these behaviors from 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 exceptionally concise, containing only the essential verb, object, and scope. No filler or redundant content exists, and the structure is straightforward.

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

Completeness3/5

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

Given the rich set of sibling tools, the description lacks contextual information about how this tool fits into the overall workflow. However, the schema is self-explanatory for basic modifications, so it is not severely incomplete.

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 provides 100% coverage of parameters, including a detailed example for the 'modifications' object. The description adds a useful example of the nested structure, but does not clarify semantics for each field (e.g., required keys within nested objects or how 'remove_section' is keyed).

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

Purpose4/5

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

The description clearly states the verb 'Modify' and the resource 'outline', and specifies the scope: sections, titles, or structure. It distinguishes the tool from related outline tools like generate_outline and save_outline, though it could be more specific about the expected outcome.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like generate_outline or approve_outline. It does not mention prerequisites (e.g., an existing outline must be present) or the intended stage in the workflow.

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

prepare_plagiarism_chunksPrepare Plagiarism ChunksB

Split content into <10k character chunks for external plagiarism tools

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior1/5

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

No annotations are provided, and the description does not mention any side effects, state changes, or retention of data. It is unclear whether this tool modifies session state or returns chunks directly.

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

Conciseness5/5

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

The description is a single, concise sentence that directly states the operation without unnecessary detail or repetition.

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

Completeness3/5

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

The description is adequate for a simple utility, but it lacks information on what 'chunks' entail, how they are stored or returned, and any relationship to the plagiarism workflow. These details would improve completeness.

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

Parameters3/5

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

The sole parameter session_id is described in the schema ('Active session ID'), but the tool description adds no further meaning or constraints. With 100% schema coverage, 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 clearly states the action ('Split content') and the purpose ('into <10k character chunks for external plagiarism tools'), making the tool's function unambiguous.

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

Usage Guidelines2/5

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

The description gives a general purpose but provides no explicit guidance on when to use this tool versus alternatives (e.g., get_plagiarism_summary, record_plagiarism_result) or when it should not be used.

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

record_plagiarism_resultRecord Plagiarism ResultC

⭐ USER records results from external plagiarism check

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAdditional observations
chunk_idYesWhich chunk was checked
tool_usedYesName of tool used
session_idYesActive session ID
plagiarism_scoreYesPercentage (0-100)
ai_detection_scoreYesPercentage (0-100)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral transparency. It only states that results are recorded, but does not disclose side effects (e.g., whether it appends or overwrites), potential errors, permissions, or any other behavioral aspects beyond the basic action.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the core action. It is appropriately sized for a simple record operation, though it lacks some detail that could be included without becoming verbose.

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

Completeness2/5

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

Given the tool's role within a larger workflow (evidenced by numerous sibling tools), the description lacks contextual information about how this fits into the process. It does not explain the purpose of recording results, how they will be used later, or any dependencies, making it incomplete for a user unfamiliar with the overall system.

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%, with each parameter having its own description. The tool description adds no additional parameter-specific meaning, but since the schema is complete, 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.

Purpose4/5

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

The description clearly states the action ('records') and the resource ('results from external plagiarism check'), providing a specific verb-object pair. It implicitly distinguishes from sibling tools like 'prepare_plagiarism_chunks' (preparation) and 'get_plagiarism_summary' (retrieval), though no explicit comparison is made.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention any conditions, prerequisites, or scenarios where this should be invoked, leaving users to infer context from the sibling tool list.

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

regenerate_sectionRegenerate SectionC

Regenerate specific section with user feedback

ParametersJSON Schema
NameRequiredDescriptionDefault
feedbackYesUser feedback for regeneration
session_idYesActive session ID
section_nameYesName of section to regenerate

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must convey side effects. It implies modification (regenerate) but does not state whether it overwrites the section, saves automatically, or is reversible. No mention of impact on the overall draft or dependency on prior steps.

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

Conciseness5/5

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

The description is a single, direct sentence with no filler. It is perfectly concise for the simple action it describes.

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

Completeness2/5

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

The tool appears to be part of a larger content-generation workflow (siblings include outline, draft, approval, export). The description does not situate it in that flow, nor does it mention expected output or relation to other tools. Missing output schema details also reduce completeness.

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

Parameters3/5

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

The schema covers all three parameters with descriptions, so baseline is 3. Descriptions are minimal but adequate: 'Name of section to regenerate' and 'User feedback for regeneration' convey the needed meaning, though they lack format or examples. No extra semantic enrichment beyond the schema.

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

Purpose4/5

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

The description clearly states the action (regenerate) and the resource (specific section) and mentions user feedback as the driver. It is distinguishable from siblings like generate_full_content or save_draft, though it does not explicitly contrast them.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus siblings, preconditions (e.g., existing draft, approved outline), or workflow context. The description is purely declarative with no conditional usage hints.

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

request_more_researchRequest More ResearchA

Request additional focused research

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID
specific_queriesYesList of specific topics to research

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries full responsibility for transparency. It states the intent but does not describe side effects (e.g., whether it triggers a background process), return format, or what happens after the request is made.

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

Conciseness5/5

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

The description is extremely concise, using only four words to convey the essential action and resource. No unnecessary words or redundancy.

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

Completeness3/5

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

The description is minimal and does not specify the expected output, error conditions, or how it fits into the broader workflow (e.g., whether it updates the session state). Given the tool's simplicity, it is adequate but leaves room for ambiguity about its exact behavior.

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 includes clear descriptions for both parameters: session_id as 'Active session ID' and specific_queries as 'List of specific topics to research'. The description adds no extra meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Request') and the resource ('additional focused research'), making its purpose understandable. However, it does not explicitly differentiate itself from sibling tools like 'research_topic' or 'get_research_summary' beyond the word 'additional', which is somewhat implicit.

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 when more research is needed after an initial phase, but it does not explicitly state when to use this tool versus alternatives such as 'research_topic' or 'approve_research'. No clear prerequisites or conditions are given.

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

research_topicResearch TopicB

Research topic from multiple sources + fetch relevant images

Sources:

  • Wikipedia API

  • arXiv API (for AI/ML papers)

  • DuckDuckGo web search

  • Image search for charts/benchmarks/diagrams

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoquick (5 sources), standard (10-15), comprehensive (20+)comprehensive
session_idYesActive session ID
specific_queriesNoOptional specific things to research

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of explaining side effects. It states that it fetches from multiple sources and images, but it does not disclose that it likely stores research results to the session, that it may mutate session state, or that it involves network calls with potential latency/cost. The description is accurate but incomplete regarding behavioral side effects.

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

Conciseness5/5

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

The description is concise and well-structured: a one-line purpose followed by a bulleted list of sources. It front-loads the main action and avoids unnecessary verbiage. Every sentence contributes useful information.

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

Completeness3/5

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

Given that an output schema exists and all parameters are described, the description is mostly self-contained. However, it lacks workflow contextβ€”such as whether research results are saved to the session or whether this is a one-time call versus iterative research. It is adequate but not fully complete for understanding its place in the broader tool suite.

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 100% coverage of parameter descriptions, including depth options and specific_queries. The description does not add any meaning beyond the schema. Since schema coverage is high, the baseline of 3 applies; the description neither enhances nor detracts from parameter understanding.

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: 'Research topic from multiple sources + fetch relevant images.' It names concrete sources (Wikipedia, arXiv, DuckDuckGo, image search), which distinguishes it from sibling tools like get_research_summary or generate_outline. The verb and object are specific enough to understand its role.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives such as request_more_research or add_custom_source. It does not mention whether it should be called after create_blog_session or before approve_research, nor does it explain how depth choices affect workflow. The only implicit hint is the presence of session_id and the sources listed.

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

run_quality_analysisRun Quality AnalysisB

Run automatic quality checks on final draft

Checks:

  1. Readability scores (Flesch-Kincaid)

  2. Citation tracking

  3. Image placement validation

  4. Structure analysis

  5. SEO basics

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

The description lists the checks but does not disclose the output format, whether the tool is read-only, or if it saves results. Since annotations are absent, the description carries full responsibility for behavioral transparency, and it falls short.

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 highly concise, using a single sentence and a bullet-point list. Every word adds value, and the structure is clear and scannable.

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

Completeness2/5

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

The description lacks information about the return value, success/failure criteria, or how the results are used in the broader workflow. Given the tool's role as a quality gate, this context is important but 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?

The single parameter session_id is described in the schema with 'Active session ID', which provides adequate meaning. The tool description itself adds no further detail, but 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 action ('Run automatic quality checks'), the object ('final draft'), and enumerates the specific checks performed. It is unambiguous and distinguishes the tool's purpose from others.

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

Usage Guidelines2/5

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

The description does not specify when this tool should be invoked relative to other tools, nor does it mention any prerequisites or conditions. It simply states what it does without guiding the agent on choosing it over alternatives.

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

save_draftSave DraftB

Save the generated blog draft to database

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesComplete blog content in markdown
session_idYesActive session ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

The description only states that it saves to a database, which implies a write operation, but it does not disclose whether existing drafts are overwritten, whether it is idempotent, what the return value is, or any failure conditions. No annotations are present to clarify this.

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

Conciseness5/5

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

The description is a single, concise sentence with no superfluous words. It follows a clear structure and gets straight to the point.

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

Completeness3/5

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

The description is adequate for a simple save operation but lacks details about the output schema (despite it being present) and does not cover edge cases such as invalid session IDs, duplicate saves, or error handling. This leaves some gaps in operational understanding.

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?

Both parameters are clearly described in the schema: session_id is the active session ID and content is the complete blog content in markdown. Schema coverage is 100% and descriptions are unambiguous, providing full semantic clarity.

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

Purpose4/5

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

The description clearly states the action (save), object (generated blog draft), and destination (database). It is specific enough to distinguish it from outline-related tools, though it could explicitly mention it saves the full content draft.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like save_outline or generate_full_content. The description does not mention any precondition (e.g., content must be generated first) or relationship to other tools.

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

save_outlineSave OutlineC

Save the generated outline to database

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesActive session ID
outline_dataYesGenerated outline JSON with title, subtitle, sections, etc.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

The description only says the outline is saved to a database. It does not disclose whether saving overwrites an existing outline, whether it requires prior approval, or what side effects occur beyond persistence. No annotations are present to supplement this.

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

Conciseness5/5

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

The description is a single, focused sentence with no superfluous words. It is appropriately concise for the simple operation it describes.

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

Completeness3/5

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

For a basic save operation, the description is understandable and actionable. However, it omits any mention of return values, error conditions, or dependencies on other steps in the workflow, which limits completeness in a larger agent context.

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 provides full coverage for both parameters with descriptions, so the baseline is 3. The tool description adds no extra meaning beyond the schema, leaving parameter semantics entirely to the schema.

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

Purpose4/5

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

The description clearly states the action ('Save') and the resource ('generated outline') with a destination ('to database'). It is distinguishable from sibling tools like generate_outline or approve_outline, though it does not explicitly name them.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of preconditions (e.g., outline must be generated or approved) or contextual cues that should trigger saving.

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 updatesv0.1.0
    • First observedadd_custom_source
    • First observedapprove_final_draft
    • First observedapprove_outline
    • First observedapprove_research
    • First observedcreate_blog_session
    • First observedexport_to_medium
    • First observedgenerate_full_content
    • First observedgenerate_outline
    • First observedget_export_files
    • First observedget_full_draft
    • First observedget_plagiarism_summary
    • First observedget_research_summary
    • First observedget_session_status
    • First observedlist_sessions
    • First observedmodify_outline
    • First observedprepare_plagiarism_chunks
    • First observedrecord_plagiarism_result
    • First observedregenerate_section
    • First observedrequest_more_research
    • First observedresearch_topic
    • First observedrun_quality_analysis
    • First observedsave_draft
    • First observedsave_outline

TDQS

B3.1/5.0

Scored across 23 tools

Disambiguation4/5

Most tools map to distinct workflow stages (research, outline, draft, plagiarism, QA, export), but a few could be confused: generate_outline/generate_full_content are agent instructions that overlap conceptually with save_outline/save_draft, and the multiple get_*_summary tools require reading descriptions to distinguish.

Naming Consistency5/5

Every tool follows a consistent verb_noun snake_case pattern (create_*, get_*, list_*, approve_*, save_*, export_*). The verbs are predictable and the workflow stage is clear from the name.

Tool Count3/5

At 23 tools, the surface feels heavy and falls in the borderline 16-25 range, though the multi-stage workflow gives most tools a purpose. Several session and file getters could potentially be consolidated.

Completeness3/5

The end-to-end pipeline is covered (research β†’ outline β†’ draft β†’ plagiarism β†’ QA β†’ export), but there are notable gaps: sessions can be created/listed but not updated/deleted, saved outlines cannot be retrieved directly, and the server exports markdown rather than publishing to Medium.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers