Skip to main content
Glama
ygstudio-game

BlindWrite MCP

BlindWrite MCP 🖋️

Think with Claude, Write with OpenRouter. Production-grade Model Context Protocol (MCP) server for blind, bias-free AI writing benchmarks and high-speed token-saving writing delegation inside Claude Desktop.

Tests TypeScript Node License


1. Problem & Purpose

Writers, marketers, and knowledge workers face two major challenges when using LLMs for writing:

  1. Token Inefficiency & Cost: Asking Claude to generate thousands of words of draft text burns through Claude output limits and tokens rapidly.

  2. Brand Bias in Model Selection: When picking an AI model, brand names ("GPT-4o", "Claude 3.5 Sonnet") skew perception, even when lightweight, ultra-cheap models (e.g. DeepSeek V3 at $0.14/1M tokens) might write better copy for your specific voice.

BlindWrite MCP introduces the "Think with Claude, Write with OpenRouter" hybrid workflow:

  • Claude for Thinking & Strategy: Claude handles deep reasoning, structural outlines, audience angles, and critical review.

  • OpenRouter for Heavy Writing: Claude delegates long-form drafting directly via writer_generate to your top-ranked OpenRouter model (or DeepSeek V3), generating drafts in seconds while saving thousands of Claude generation tokens.

  • Blind A/B Benchmarking: When testing styles, competing frontier models generate blind drafts (Response A vs Response B) with zero brand leakage. You vote, and the Bradley-Terry MLE & Elo engine trains your personal leaderboard!

  • Preference Analytics: Discovers empirical writing metrics (conciseness, bulleted structure, formality) to show why your top models resonate with you.


Related MCP server: LLM Router MCP

2. Architecture

 ┌─────────────────────────────────────────────────────────────┐
 │                 Claude Desktop (Client UI)                  │
 └──────────────────────────────┬──────────────────────────────┘
                                │
                                │ stdio JSON-RPC (MCP)
                                ▼
 ┌─────────────────────────────────────────────────────────────┐
 │                       BlindWrite MCP                        │
 │                                                             │
 │  ┌───────────────────────────────────────────────────────┐  │
 │  │                    MCP Tools Layer                    │  │
 │  │  10 Tools • Zod Schemas • Strict Blindness Gating     │  │
 │  └───────────────────────────┬───────────────────────────┘  │
 │                              │                              │
 │  ┌───────────────────────────▼───────────────────────────┐  │
 │  │                 Domain Services Layer                 │  │
 │  │  - BenchmarkService    - Duel & RandomizationService  │  │
 │  │  - VotingService       - Bradley-Terry & Elo Engine   │  │
 │  │  - AnalyticsService    - OpenRouterClient & Cost      │  │
 │  └─────────────┬───────────────────────────┬─────────────┘  │
 │                │                           │                │
 │                ▼                           ▼                │
 │  ┌──────────────────────────┐ ┌──────────────────────────┐  │
 │  │   SQLite Data Layer      │ │    OpenRouter Gateway    │  │
 │  │  - WAL mode & Pragma FK  │ │  - Latency measurement   │  │
 │  │  - Repositories: Tasks,  │ │  - Token & cost tracking │  │
 │  │    Models, Outputs,      │ │  - Error & retry policy  │  │
 │  │    Battles, Votes        │ └────────────┬─────────────┘  │
 │  └──────────────────────────┘              │                │
 └────────────────────────────────────────────┼────────────────┘
                                              │ HTTPS
                                              ▼
                               ┌─────────────────────────────┐
                               │       OpenRouter API        │
                               │ ┌─────────┬─────────┬─────┐ │
                               │ │ Claude  │ GPT-4o  │ ... │ │
                               │ └─────────┴─────────┴─────┘ │
                               └─────────────────────────────┘

Critical Stdio Hygiene: Standard output (stdout) is strictly reserved for MCP JSON-RPC protocol packets. All internal diagnostics, logging, and error output route exclusively to stderr, guaranteeing that Claude Desktop never crashes from corrupted transport data.


3. The 11 MCP Tools

Tool Name

Purpose

Role in "Think with Claude, Write with OpenRouter"

writer_generate

Directly generates drafts with OpenRouter

Token-Saver: Claude outlines; OpenRouter model writes the draft

benchmark_create_task

Creates a new writing benchmark task

Assigns clean task ID; status created

benchmark_list_models

Lists models with pricing & status

Used for model selection and registry status

benchmark_generate_outputs

Dispatches prompt to models in parallel

Returns ONLY anonymous tokens (anon_xxxx), zero model names

benchmark_start_duel

Starts a randomized, blind A/B battle

50/50 coin toss determines Response A vs B; eliminates brand bias

benchmark_submit_vote

Submits preference (A, B, or tie)

Records vote, updates Bradley-Terry & Elo ratings

benchmark_get_results

Retrieves task results; unmasks on reveal

Identities remain hidden until explicit user reveal

benchmark_get_leaderboard

Returns personal or global leaderboards

Bradley-Terry MLE & Elo rankings guide writer_generate

benchmark_compare_models

Head-to-head comparison of two models

Direct win/loss record and dimensional ratings

benchmark_analyze_preferences

Discovers personal writing style preferences

Explains why certain models work best for you

benchmark_get_model_stats

Deep performance card for a single model

Battle record, win rate, latency, and token cost


4. Pre-Seeded Writing Categories & Models

Writing Categories

  • General Writing

  • Emails (Cold outreach, executive memos, customer service)

  • Business Writing (Proposals, pitches, quarterly summaries)

  • Creative Writing (Narrative storytelling, dialogue, fiction)

  • Marketing (Ad copy, landing pages, taglines)

  • Summarization (Executive briefs, meeting notes)

  • Rewriting (Tone shifting, simplifying complex text)

  • Technical Writing (API documentation, engineering RFCs)

  • Persuasive Writing (Op-eds, debate arguments, sales letters)

  • Research Writing (Literature synthesis, analytical essays)

  • Social Media (Threads, LinkedIn posts, announcements)

  • Instruction Following (Constraint adherence, exact formatting)

Seed Models (OpenRouter)

  • Anthropic Claude 3.5 Sonnet (anthropic/claude-3.5-sonnet)

  • OpenAI GPT-4o (openai/gpt-4o)

  • Google Gemini 1.5 Pro (google/gemini-pro-1.5)

  • DeepSeek V3 (deepseek/deepseek-chat)

  • Meta Llama 3.3 70B Instruct (meta-llama/llama-3.3-70b-instruct)

  • Qwen 2.5 72B Instruct (qwen/qwen-2.5-72b-instruct)


5. Quickstart & Installation

Option A: 1-Line Autonomous Remote Installer (Fastest — No Git Clone Required)

Run a single command in your terminal. It will automatically check/install Node.js & Git, clone into your user directory, build the project, prompt for your OpenRouter key, auto-install the Writing Orchestrator Skill, and configure Claude Desktop:

Windows (PowerShell):

irm https://raw.githubusercontent.com/ygstudio-game/BlindWrite_MCP/main/scripts/install.ps1 | iex

(Tip: You can pre-supply your key to make it 100% headless: $env:OPENROUTER_API_KEY="sk-or-v1-..."; irm https://raw.githubusercontent.com/ygstudio-game/BlindWrite_MCP/main/scripts/install.ps1 | iex)

macOS & Linux (Terminal):

curl -fsSL https://raw.githubusercontent.com/ygstudio-game/BlindWrite_MCP/main/scripts/install.sh | bash

(Tip: Or headless: OPENROUTER_API_KEY="sk-or-v1-..." curl -fsSL https://raw.githubusercontent.com/ygstudio-game/BlindWrite_MCP/main/scripts/install.sh | bash)

Manual Skill Installation (If using 1-Line Remote Installer):

While the remote installer automatically registers the MCP server in claude_desktop_config.json, you can also manually install or upload the Writing Orchestrator Skill to your Claude environment:

  1. Claude Desktop App (Account Upload via UI):

    • Download the pre-packaged ZIP archive: writing-orchestrator.zip (or grab it from your installation folder at %LOCALAPPDATA%\BlindWrite_MCP\skills\writing-orchestrator.zip on Windows, or ~/.blindwrite-mcp/skills/writing-orchestrator.zip on macOS/Linux).

    • In Claude Desktop, open Customize > Skills from the sidebar.

    • Click the + button and choose "Upload a skill", then select writing-orchestrator.zip.

    • Ensure the skill toggle is switched ON (synced directly to your Anthropic account in the cloud).

  2. Claude Code / Terminal Integration (Local Filesystem):

    • Windows (PowerShell):

      New-Item -ItemType Directory -Force -Path "$HOME\.claude\skills\writing-orchestrator"
      Invoke-WebRequest -Uri "https://raw.githubusercontent.com/ygstudio-game/BlindWrite_MCP/main/skills/writing-orchestrator/SKILL.md" -OutFile "$HOME\.claude\skills\writing-orchestrator\SKILL.md"
    • macOS / Linux (Bash):

      mkdir -p ~/.claude/skills/writing-orchestrator && curl -fsSL https://raw.githubusercontent.com/ygstudio-game/BlindWrite_MCP/main/skills/writing-orchestrator/SKILL.md -o ~/.claude/skills/writing-orchestrator/SKILL.md
  3. Zero-Setup Native MCP Prompt:

    • The installer already configures Claude Desktop to expose the /writing-orchestrator MCP Prompt natively. You can type /writing-orchestrator directly in any chat without copying any files!


Option B: Local 1-Click Setup (If already cloned)

On Windows:

Simply run setup.bat (or double-click it in File Explorer):

setup.bat
  • Auto-installs Node.js via winget if not detected on your system.

  • Installs dependencies (npm install).

  • Compiles TypeScript (npm run build).

  • Prompts for your OpenRouter API key.

  • Automatically merges the configuration into %APPDATA%\Claude\claude_desktop_config.json (with automatic backup).

  • Auto-installs the Writing Orchestrator Skill into ~/.claude/skills/writing-orchestrator and agent environments.

On macOS / Linux:

chmod +x setup.sh
./setup.sh
# or after npm install:
npm run setup

Option C: Manual Setup

  1. Clone and Install:

git clone https://github.com/ygstudio-game/BlindWrite_MCP.git
cd BlindWrite_MCP
npm install
  1. Configure Environment:

cp .env.example .env

Edit .env and set OPENROUTER_API_KEY=sk-or-v1-....

  1. Build and Run Setup Wizard:

npm run build
npm run setup

The interactive wizard will automatically resolve exact paths and update Claude Desktop for you!


6. Claude Desktop Configuration (Manual)

If you prefer to configure Claude Desktop manually instead of using npm run setup:

  1. Open your Claude Desktop configuration file:

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

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

  2. Add the blindwrite server:

{
  "mcpServers": {
    "blindwrite": {
      "command": "node",
      "args": [
        "/absolute/path/to/BlindWrite_MCP/dist/index.js"
      ],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-your-openrouter-key-here",
        "DB_PATH": "/absolute/path/to/BlindWrite_MCP/data/blindwrite.sqlite",
        "LOG_LEVEL": "info"
      }
    }
  }
}

Platform Path Examples:

  • macOS / Linux: "/Users/yourname/projects/BlindWrite_MCP/dist/index.js"

  • Windows: "C:\\Users\\yourname\\projects\\BlindWrite_MCP\\dist\\index.js" (ensure backslashes are escaped with \\)

  1. Restart Claude Desktop. You will see the hammer icon with all 11 BlindWrite tools ready to use!

  2. Writing Orchestrator Skill & Prompt:

    • Skill Source: Read the complete skill definition in skills/writing-orchestrator/SKILL.md.

    • 1-Click Upload ZIP: Download the pre-packaged writing-orchestrator.zip and upload it directly in Claude Desktop (Customize > Skills > + > Upload a skill).

    • Auto-Installed Local Folders: The setup script auto-populates %APPDATA%\Claude\skills\writing-orchestrator\SKILL.md, ~/.claude/skills/writing-orchestrator/SKILL.md, and project-level .claude/skills/.

    • Native MCP Prompt: The server natively registers the /writing-orchestrator prompt accessible directly inside Claude Desktop chat without uploading any files!

    • Project Instructions: For Claude Desktop Projects, copy CLAUDE_PROMPT.md into your Project's Custom Instructions.

    • How to invoke in chat: Simply tell Claude:

      "Use the writing-orchestrator skill to outline our strategy and draft..."
      or select the /writing-orchestrator prompt template from the chat input menu.


7. Example Workflows in Claude Desktop

Workflow A: High-Conversion B2B Cold Outreach Email

Goal: Craft a personalized, high-response email while saving Claude output tokens.

You:

"Help me draft a 120-word cold outreach email to a VP of Sales about our developer platform. Use the writing-orchestrator skill to outline the strategy first and use writer_generate to draft it."

Claude (Thinking & Strategy Brain):

  1. Analyzes the VP of Sales persona (time-poor, quota-focused, values proven ROI).

  2. Formulates the prompt blueprint (Hook: shortening deal cycles by 40%; Body: 2 concrete metrics; CTA: 10-minute intro).

  3. Delegates drafting: Calls writer_generate(category: "Emails", prompt: "...", max_tokens: 400).

  4. OpenRouter generates the draft in ~800ms using your personal #1 model (e.g. DeepSeek V3 for $0.0003).

  5. Claude presents the generated email, reports token metrics (saved ~300 Claude output tokens), and suggests two high-impact subject lines.


Workflow B: Technical Architecture RFC / Migration Spec

Goal: Generate a comprehensive 1,500-word engineering RFC with deep strategic framing.

You:

"We need an RFC for migrating our monolithic PostgreSQL database to a globally distributed database with zero downtime. Use the writing-orchestrator skill to structure the technical plan and delegate the drafting."

Claude (Thinking & Strategy Brain):

  1. Produces an architectural breakdown:

    • Problem statement & current bottlenecks

    • Dual-write replication architecture & cutover sequence

    • Failure modes, rollback triggers, and data validation

  2. Calls writer_generate(category: "Technical Writing", prompt: "Write section 2 and 3 covering dual-write synchronization and consistency models...", max_tokens: 2500).

  3. OpenRouter streams the extensive technical draft in seconds.

  4. Claude critically audits the draft, flags edge cases in network partition scenarios, and polishes the summary.


Workflow C: High-Converting SaaS Landing Page Copy

Goal: Draft hero headlines, subheads, and 3 value pillars.

You:

"Write landing page hero section copy and 3 core value pillars for an AI agent observability tool. Use the writing-orchestrator skill."

Claude (Thinking & Strategy Brain):

  1. Outlines the positioning: Anti-hype, focused on debugging production hallucinations and latency spikes.

  2. Calls writer_generate(category: "Marketing Copy", prompt: "Craft punchy H1 headline, 2-sentence subhead, and 3 customer-outcome pillars with proof points...", max_tokens: 800).

  3. Displays the full landing page copy with clear visual hierarchy, ready for deployment.


Workflow D: Thought Leadership / Technical Blog Post

Goal: Write an engaging 800-word essay with a contrarian engineering thesis.

You:

"Draft an engineering blog post arguing why autonomous agent swarms will replace traditional CI/CD pipelines by 2027. Use the writing-orchestrator skill."

Claude (Thinking & Strategy Brain):

  1. Establishes the contrarian hook, 3 narrative beats, and concrete code pipeline analogies.

  2. Calls writer_generate(category: "Blog Posts", prompt: "...", max_tokens: 1500).

  3. OpenRouter drafts the essay using your preferred style profile.

  4. Claude reviews flow, rhythm, and tone, delivering an impactful publication-ready draft.


Workflow E: Blind A/B Benchmark Duel (Style Discovery)

Goal: Objectively determine which frontier model writes best for your personal voice without brand bias.

You:

"Benchmark the best models for writing an executive pitch email to CTOs."

Claude:

  1. Calls benchmark_create_task(title: "CTO Pitch", category: "Emails", prompt: "...").

  2. Calls benchmark_generate_outputs(taskId) to query competing models in parallel via OpenRouter.

  3. Calls benchmark_start_duel(taskId) and displays anonymous options:

    Response A:
    [Anonymous output]

    Response B:
    [Anonymous output]

    Which response is more compelling, A or B?

  4. You vote: "Response A is punchier and highlights developer productivity much better."

  5. Claude calls benchmark_submit_vote(battleId, choice: "A").

  6. When satisfied, you ask: "Reveal results!"

  7. Claude calls benchmark_get_results(taskId, reveal: true):

    • Response A was Claude 3.5 Sonnet (Score: 1240, Latency: 780ms)

    • Response B was GPT-4o (Score: 1195, Latency: 910ms)

  8. Claude calls benchmark_get_leaderboard and benchmark_analyze_preferences to update your personal ranking!


8. Mathematical Ranking Details

Bradley-Terry Maximum Likelihood Estimation (MLE)

Pairwise choice probabilities follow: $$P(i \succ j) = \frac{\pi_i}{\pi_i + \pi_j} = \frac{e^{\beta_i}}{e^{\beta_i} + e^{\beta_j}}$$

The model latent parameters $\pi$ are solved using the iterative Minorization-Maximization (MM / Hunter 2004) algorithm with Laplace prior regularization ($\alpha = 1.0$) for numerical stability with disconnected matchup graphs: $$\pi_i^{(t+1)} = \frac{W_i + \alpha}{\sum_{j \ne i} \frac{N_{ij}}{\pi_i^{(t)} + \pi_j^{(t)}} + \alpha}$$

  • Uncertainty Quantification: Standard errors are derived from the observed Fisher Information matrix:

    • $< 5$ battles: Preliminary (High Uncertainty)

    • $5–15$ battles: Emerging (Moderate Uncertainty)

    • $> 15$ battles: Established (High Confidence)


9. Testing

The project includes an extensive test suite verifying mathematical correctness, zero-bias coin toss distributions, strict anonymity boundaries, and end-to-end tournament simulations:

# Run all unit and integration tests
npm test

# Run tests in watch mode
npm run test:watch

10. License

MIT © Yadnyesh Borole.

Available Tools

11 tools
benchmark_analyze_preferencesB

Analyze empirical user preference patterns (conciseness, structure, tone) from battle voting history.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional writing category to analyze
min_votesNoMinimum votes threshold

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It identifies the data source ('battle voting history') and analysis dimensions, but fails to disclose whether this is a read-only operation, what aggregation or statistical methods are used, what output format to expect, or any side effects. The agent is left guessing about core runtime 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?

A single, front-loaded sentence that conveys the core function without filler. It clearly states the verb, object, and key dimensions, making it easy to scan and parse. No wasted words.

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?

There is no output schema, yet the description does not describe the return value at all. It also omits details like how preferences are quantified, what the output structure is, and how the two optional parameters alter behavior. For an analysis tool, this is a significant completeness gap.

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 'category' and 'min_votes'. The description adds no extra meaning beyond what the schema provides, such as how the category filter interacts with preferences or what min_votes affects. Baseline 3 is appropriate given the 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 uses a specific verb ('Analyze') and names a distinct resource: 'empirical user preference patterns (conciseness, structure, tone) from battle voting history.' This clearly differentiates it from sibling tools like benchmark_get_results, benchmark_get_leaderboard, and benchmark_compare_models.

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 states what the tool does but gives no guidance on when to choose it over alternatives. It does not mention exclusions, prerequisites, or which sibling tools to use for other analysis purposes. The intended context is implied but not explicitly spelled out.

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

benchmark_compare_modelsB

Compare two AI models head-to-head using accumulated pairwise benchmark battle history.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter for head-to-head records
model_a_idYesFirst model ID to compare
model_b_idYesSecond model ID to compare

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It does suggest a read-only, historical operation via 'accumulated pairwise benchmark battle history', but it does not disclose return format, edge cases, rate limits, permissions, or whether any state is changed.

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 filler. Every word contributes meaning, and the core action and data source are front-loaded.

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?

With no output schema and no annotations, the description leaves important context unstated: what the returned comparison looks like, how category filtering behaves, and what happens when no battle history exists. It is enough for basic invocation but not fully 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%, so all three parameters are already documented in the schema. The description adds no new parameter-specific semantics beyond implying model_a_id and model_b_id are the two compared models, which is baseline 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 uses a specific verb ('Compare') and resource ('two AI models head-to-head'), and adds meaningful scope ('using accumulated pairwise benchmark battle history'). This clearly differentiates it from sibling tools like benchmark_get_leaderboard or benchmark_get_model_stats.

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

Usage Guidelines3/5

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

The description implies when to use it: when a direct head-to-head comparison of two models from prior duel history is needed. However, it does not explicitly state alternatives, exclusions, or when a different tool such as benchmark_start_duel or benchmark_get_leaderboard would be more appropriate.

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

benchmark_create_taskA

Create a new blind AI writing benchmark task with a category, prompt, and optional evaluation criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle describing the writing task
promptYesThe writing prompt sent identically to competing models
user_idNoUser/session IDdefault_user
categoryYesWriting category, e.g. Emails, Technical Writing, Marketing
difficultyNoTask difficultymedium
evaluation_criteriaNoOptional criteria for judging outputs

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must explain side effects itself, but it only says 'Create' without disclosing persistence, authentication needs, rate limits, or what the response contains. The blind benchmark context is mentioned, but no behavioral detail about the created resource or follow-up actions is provided.

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

Conciseness5/5

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

One dense sentence front-loads the action and resource, then lists the key fields in a natural order. There is no redundant wording or fluff.

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

Completeness3/5

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

Given the fully described 6-parameter schema, an agent can probably invoke the tool correctly. Yet the absence of annotations and an output schema, combined with no mention of what the create operation returns or how the task relates to the other benchmark workflows, leaves a modest but not critical context gap.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter already has a description. The tool description adds only slight reinforcement for category, prompt, and evaluation_criteria; it does not add meaning for title, user_id, or difficulty. Baseline 3 is appropriate because the schema carries the semantic load.

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 states the exact verb ('Create'), the resource ('a new blind AI writing benchmark task'), and the core content fields ('category, prompt, and optional evaluation criteria'). It clearly differentiates from sibling tools such as benchmark_compare_models, benchmark_get_results, and writer_generate, which cover comparing, retrieving, or writing rather than creating tasks.

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

Usage Guidelines3/5

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

Usage is implied by the verb: call this when creating a new benchmark task. However, the description does not state when to prefer this over related alternatives, nor does it mention any exclusions or prerequisites (e.g., whether a user must exist beforehand).

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

benchmark_generate_outputsA

Generate writing outputs for a benchmark task across competing models via OpenRouter. Models remain strictly anonymous.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the benchmark task
model_idsNoOptional specific model IDs; defaults to all enabled models
temperatureNoSampling temperature for generation

TDQS

A3.7/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 burden of behavioral disclosure. It does reveal a meaningful behavior: models remain strictly anonymous, and it names the OpenRouter dependency. However, it does not disclose side effects such as whether outputs are persisted, whether generation is costly or slow, or what the caller receives back.

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

Conciseness5/5

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

Two sentences carry the entire definition, with the main action front-loaded and the key anonymity constraint in the second sentence. There is no filler, redundancy, or unnecessary detail.

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

Completeness3/5

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

The definition is adequate for a three-parameter tool, but with no output schema it leaves several gaps: no return-value description, no prerequisites such as the benchmark task needing to exist, and no statement about whether outputs are stored or only returned. Sibling relationships and alternatives are also not addressed.

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 documents all 100% of the parameters, including defaults and constraints. The description adds no parameter-level 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.

Purpose5/5

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

The description clearly states the action (Generate), the resource (writing outputs for a benchmark task), and the mechanism (across competing models via OpenRouter). It also adds the distinctive guarantee that models remain anonymous, which helps separate it from general writer_generate and other benchmark workflow tools.

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 phrase 'for a benchmark task across competing models' implies when the tool should be used, but there is no explicit guidance about when not to use it or which sibling tool should be preferred instead. It does not reference benchmark_start_duel, writer_generate, or any alternative.

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

benchmark_get_leaderboardA

Get personal or global model rankings calculated with Bradley-Terry Maximum Likelihood Estimation and Elo.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoRankings scopepersonal
metricNoRanking algorithmbradley_terry
categoryNoFilter leaderboard by writing category
min_battlesNoMinimum battles required to appear on the leaderboard

TDQS

A3.7/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 behavioral disclosure burden. It discloses the ranking methodology (Bradley-Terry and Elo), which is useful, and 'Get' implies a read operation. However, it does not state whether authentication is needed for 'personal' scope, what the response format is, or whether any side effects occur.

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, front-loaded sentence with no wasted words. It states the action and key scoping information immediately and remains focused on what the tool does.

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 straightforward leaderboard retrieval tool, but it lacks context about return values, default metrics, and whether 'personal' requires caller identity. With no output schema and no annotations, the agent must infer several important details from the parameter defaults and examples.

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 parameters are already documented. The description adds semantic context for 'scope' and 'metric' by mentioning personal/global and Bradley-Terry/Elo, but it does not add meaning for 'category' or 'min_battles'. This matches the baseline of 3 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 uses a specific verb ('Get') and resource ('personal or global model rankings'), making the tool's purpose immediately clear. It also distinguishes itself from siblings like benchmark_get_model_stats and benchmark_compare_models by focusing on leaderboard rankings rather than stats or comparisons.

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

Usage Guidelines3/5

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

The description implies the tool should be used when the agent needs leaderboard rankings, but it provides no explicit when-to-use guidance or alternatives. There is no mention of when to prefer this over benchmark_get_model_stats or benchmark_compare_models, leaving the choice mostly to inference from the tool name.

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

benchmark_get_model_statsA

Get comprehensive performance metrics, win rates, and ranking score for a specific model.

ParametersJSON Schema
NameRequiredDescriptionDefault
model_idYesThe model ID to inspect

TDQS

A3.6/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 behavioral disclosure burden. It communicates a read-only intent through 'Get' and enumerates the returned information categories, but it does not describe aggregation details, data freshness, or error/edge-case 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?

One concise, front-loaded sentence with no filler or redundancy. Every word adds information relevant to selecting or invoking the tool.

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 one-parameter, no-output-schema tool, the description provides essential context: what is returned and the target model. Some detail about the exact response shape is missing, but the tool's simplicity makes the description reasonably 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 input schema already documents model_id with 100% coverage, so the baseline of 3 applies. The description does not add new parameter details, but 'for a specific model' aligns naturally with the single required parameter.

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 that this tool gets performance metrics, win rates, and ranking score for a specific model. It differentiates from leaderboard/comparison tools by scoping to a single model, though it does not explicitly name siblings.

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 intended use is implied: inspect statistics for one model. However, there is no explicit guidance on when to prefer this over benchmark_compare_models, benchmark_get_leaderboard, or benchmark_get_results, and no exclusions or prerequisites are given.

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

benchmark_get_resultsB

Retrieve benchmark results for a task. When reveal is true, model identities are unmasked.

ParametersJSON Schema
NameRequiredDescriptionDefault
revealNoSet to true to unmask model identities and end the blind stage
task_idYesThe benchmark task ID

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose a nontrivial behavior: setting reveal to true unmask model identities and end the blind stage. However, it does not explain whether this is reversible or what side effects 'ending the blind stage' has beyond unmasking.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the primary purpose and then adds the key behavioral caveat about reveal, making it easy to scan and understand.

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 fully documented parameters, the description is mostly adequate. However, there is no output schema, and the description does not describe what the returned benchmark results contain or how the blind stage context affects them, leaving some ambiguity about expected output.

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 task_id and reveal. The description slightly reinforces the reveal semantic by restating the unmasking behavior, but it adds no new parameter meaning beyond what the schema provides.

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 ('Retrieve') and the resource ('benchmark results for a task'), making the core purpose obvious. It does not explicitly differentiate from sibling tools like benchmark_get_leaderboard or benchmark_get_model_stats, but the task-scoped phrasing provides enough distinctiveness.

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 choose this tool over sibling alternatives such as benchmark_compare_models or benchmark_get_leaderboard. The only usage hint is the reveal behavior, which addresses a parameter rather than tool selection context.

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

benchmark_list_modelsB

List all AI writing models available in the benchmark registry with pricing information.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter
enabled_onlyNoFilter to enabled models only

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It does mention listing and pricing, but it says 'all' models while the enabled_only parameter defaults to true, meaning the default call returns only enabled models. This is misleading and omits the filtering 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 a single, front-loaded sentence with no filler. Every word contributes to identifying the tool's basic function.

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?

For a tool with no output schema, the description should clarify what fields are returned and how filters affect results. It does not mention the category filter, the enabled_only default, or the exact response shape, and the 'all' wording conflicts with the default 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?

Schema description coverage is 100%, so both parameters are already documented in the input schema. The description adds no additional parameter meaning, but with full schema coverage 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 a specific action and resource: listing AI writing models from the benchmark registry with pricing information. This distinguishes it from sibling tools like benchmark_compare_models or benchmark_get_leaderboard, which serve different purposes.

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 guidance on when to use this tool versus alternatives, nor does it mention any exclusions or preferred contexts. It only states the action, leaving the agent to infer when a plain list is the right choice.

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

benchmark_start_duelB

Start a randomized, blind A/B battle between two outputs for evaluation. Model identities remain masked.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe benchmark task ID
output_a_idNoOptional specific anonymous output ID for Response A
output_b_idNoOptional specific anonymous output ID for Response B

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful behavioral traits: randomization, blind evaluation, and masked model identities. However, it doesn't explain side effects, what the call returns, whether execution is asynchronous, or what happens when no output IDs are provided.

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

Conciseness5/5

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

Two short sentences, both informative and non-wasteful. The core action is front-loaded and the key detail about hidden model identities comes immediately after, with no redundant material.

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?

Despite a clear one-line purpose, the description is incomplete for a mutation-like state-changing tool. It doesn't state what the response contains, whether output IDs must come from a prior step, or how the duel flows into sibling voting/result tools. No annotations or output schema compensate for these gaps.

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 documents all three parameters with 100% coverage, so the baseline is appropriate. The description adds no new parameter-level detail beyond implying that two outputs are involved; the optional output IDs and task_id semantics are left to 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 names a specific action ('Start'), a specific resource ('a randomized, blind A/B battle'), and the evaluation purpose. It also distinguishes the tool from siblings like benchmark_compare_models and benchmark_submit_vote by emphasizing that it initiates a battle rather than analyzing, voting, or retrieving results.

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 about when to use this tool versus the many benchmark siblings. It doesn't mention prerequisites, how it relates to benchmark_generate_outputs or benchmark_submit_vote, or when an agent should choose it over benchmark_compare_models.

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

benchmark_submit_voteA

Submit a blind user preference vote ('A', 'B', or 'tie') with optional reasoning and dimension ratings.

ParametersJSON Schema
NameRequiredDescriptionDefault
choiceYesThe winner ('A', 'B', or 'tie')
reasonNoOptional user reasoning explaining the vote
battle_idYesThe battle ID being voted on
dimension_scoresNoOptional dimension ratings e.g. {"clarity": 5, "tone": 4, "conciseness": 5}

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses the blind nature of the vote and optional fields, but it does not mention any side effects such as whether votes are updatable, idempotent, or require authentication. Since no annotations are provided, this is acceptable but not thorough.

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

Conciseness5/5

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

The description is concise, with two sentences that cover the essential action and optional parameters without unnecessary detail or 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?

The description provides sufficient context for the tool's purpose and parameters, but it does not specify the response format or any post-submission behavior. Given the lack of an output schema, this is a minor gap.

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 all parameters, and the description repeats the same information without adding new semantic nuances (e.g., the meaning of 'dimension_scores' or constraints beyond the schema). It meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's function: submitting a blind preference vote with a specific set of choices (A, B, or tie) and optional reasoning/ratings. It is distinct from sibling tools that compare, analyze, or generate results.

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 its action-oriented wording, but it does not explicitly state when to prefer this tool over alternatives or provide context about prerequisites (e.g., needing a valid battle_id from a duel).

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

writer_generateA

PRIMARY WRITING TOOL. Use this tool whenever the user asks to write, draft, or compose content (emails, articles, proposals, essays, sales copy, social posts). Instead of generating long-form drafts with Claude output tokens, first outline the strategy and key arguments, then call this tool to delegate the draft generation to OpenRouter models (DeepSeek V3, Llama 3.3, GPT-4o, etc.). Automatically selects the user's #1 ranked model from their personal leaderboard or cost-effective DeepSeek V3.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe writing prompt crafted by Claude after thinking/outlining
categoryNoOptional writing category (e.g. "Emails", "Creative Writing", "Technical Writing") used to pick the top-ranked model from your personal leaderboard
model_idNoOptional specific OpenRouter model ID (e.g. "deepseek/deepseek-chat", "openai/gpt-4o", "anthropic/claude-3.5-sonnet"). Defaults to your #1 ranked model or DeepSeek V3.
max_tokensNoOptional maximum output tokens
temperatureNoSampling temperature
system_promptNoOptional system prompt defining voice, tone, or style guidelines

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it discloses the most non-obvious trait: output is generated by external OpenRouter models rather than Claude, with automatic model selection from the user's leaderboard or a cost-effective default. It does not cover failure modes, costs, rate limits, or latency of the external dependency, which are the remaining gaps.

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

Conciseness5/5

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

Three sentences with no waste: the purpose and trigger are front-loaded in sentence one, the workflow in sentence two, and the model-selection behavior in sentence three. Each sentence adds distinct, 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?

For a tool with 6 parameters and no output schema, the description covers the essentials: when to trigger it, what workflow to follow before calling, and which models will execute generation. The gaps — unspecified return format and no guidance on external-service unavailability — are modest and do not block correct invocation.

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 baseline is 3; the schema already documents prompt, category, model_id, max_tokens, temperature, and system_prompt with defaults and examples. The description adds only marginal framing around the leaderboard-based model selection, which largely restates what the schema says about category and model_id defaults.

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 'PRIMARY WRITING TOOL' and states a specific verb+resource: write, draft, or compose content, with enumerated types (emails, articles, proposals, essays, sales copy, social posts). It also discloses the core mechanism — delegation to OpenRouter models — which clearly distinguishes it from the benchmark_* 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?

Explicitly states when to use: 'Use this tool whenever the user asks to write, draft, or compose content.' It also defines the exact workflow — outline strategy first, then delegate generation to OpenRouter rather than spending Claude output tokens — and implies the exclusion of direct long-form generation with Claude. No writing alternative exists among the siblings, so no other routing is needed.

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

Tool Schema Changelog

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

  1. 11 tool updatesv1.0.0
    • First observedbenchmark_analyze_preferences
    • First observedbenchmark_compare_models
    • First observedbenchmark_create_task
    • First observedbenchmark_generate_outputs
    • First observedbenchmark_get_leaderboard
    • First observedbenchmark_get_model_stats
    • First observedbenchmark_get_results
    • First observedbenchmark_list_models
    • First observedbenchmark_start_duel
    • First observedbenchmark_submit_vote
    • First observedwriter_generate

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation4/5

Most benchmark tools have clearly distinct resource-action boundaries, but benchmark_compare_models, benchmark_get_model_stats, and benchmark_get_leaderboard all describe performance summaries and could be confused by an agent. benchmark_generate_outputs and writer_generate are somewhat related, though writer_generate is explicitly marked as the primary writing tool.

Naming Consistency4/5

Ten tools consistently follow a benchmark_<verb>_<noun> naming pattern, which is highly predictable. writer_generate breaks the pattern by using noun_verb form and dropping the benchmark_ prefix, making the set slightly inconsistent.

Tool Count5/5

Eleven tools is well-scoped for a blind benchmark workflow plus an integrated writing generation tool. Each tool serves a recognizable step or query in the system, and the count is neither bloated nor thin.

Completeness4/5

The core benchmark lifecycle is covered: create task, generate outputs, start duel, submit vote, get results, and retrieve leaderboards. Obvious gaps include no list/update/delete for tasks and no way to enumerate active duels, but these are workable minor omissions.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ygstudio-game/BlindWrite_MCP'

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