Skip to main content
Glama
PendingSpark

KiraHub MCP Server

by PendingSpark

KiraHub MCP Server

Model Context Protocol (MCP) server for integrating KiraHub with Claude Code and other MCP-compatible clients.

Features

This MCP server provides comprehensive access to KiraHub's task management capabilities through standardized tool calls:

Task Management

  • get_next_task - Get the next task from the queue

  • claim_task - Claim a task to work on

  • complete_task - Mark task complete with automatic validation Q&A

  • create_task - Create new tasks

  • update_task - Update task details

  • get_task_details - Get full task information

Epic Management

  • list_epics - List project epics

  • get_epic - Get epic details with tasks

  • create_epic - Create new epics

  • update_epic - Update epic details

Working Notes

  • add_working_note - Add todo/bug/edge_case/optimization notes

  • resolve_working_note - Mark notes as resolved

  • escalate_working_note - Escalate note to a new task

  • get_task_notes - Get all notes for a task

Project Knowledge

  • get_project_knowledge - Search project knowledge base

  • add_project_knowledge - Add knowledge entries

Plan Wiki Integration (PlanCreator)

  • get_plan_overview - Get project plan overview with epics and statistics

  • list_plan_tasks - List all tasks in the project plan

  • get_plan_task_details - Get detailed task documentation from plan wiki

  • search_plan_tasks - Search for tasks in the plan wiki

Related MCP server: devto-mcp

Automatic Validation Conversations

The complete_task tool handles multi-turn validation automatically:

  1. Complete Task: Call complete_task with task_id

  2. Validation Question: If KiraHub needs validation, the response contains a question

  3. Answer Question: Call complete_task again with the answer in the message parameter

  4. Repeat: Continue answering questions until validation completes

  5. Result: Final response shows validation result (passed/failed) with score

Example Validation Flow

# Step 1: Complete task
complete_task(task_id="AUTH-5")
→ Response: "Task completion noted. I have a few questions...
   **Validation Question 1** (architecture):
   Which OAuth 2.0 flow(s) did you implement and why?
   **To answer this question, call complete_task again with the answer in the message parameter.**"

# Step 2: Answer question
complete_task(message="I implemented OAuth 2.0 Authorization Code flow with PKCE...")
→ Response: "Answer recorded. Next question:
   **Validation Question 2** (best_practice):
   How did you implement token refresh and rotation?
   **To answer this question, call complete_task again with the answer in the message parameter.**"

# Step 3: Answer next question
complete_task(message="Refresh token rotation is implemented with a 7-day rotation window...")
→ Response: "Validation complete! ✅ All questions answered satisfactorily
   **Validation PASSED** - Score: 85%"

Installation

The KiraHub MCP server is available as an npm package and can be used directly with npx:

# No installation needed! Use with npx:
npx -y @pendingspark/kirahub-mcp@latest

# Or install globally:
npm install -g @pendingspark/kirahub-mcp

# Or install locally for development:
git clone https://github.com/PendingSpark/kirahub-mcp.git
cd kirahub-mcp
npm install
npm run build

Getting Your API Key

  1. Start KiraHub:

    cd kirahub
    make up
  2. Open the Dashboard: Navigate to http://localhost and login with:

    • Email: demo@kirahub.com

    • Password: demo123

  3. Create API Key:

    • Go to SettingsAPI Keys

    • Click Generate New Key

    • Fill in the form:

      • Key Name: Claude Code Agent

      • Agent ID: claude-code-mcp

      • Project Assignment: Select a project or leave as "All Projects"

      • Capabilities: Select all capabilities (or customize as needed)

    • Click Generate Key

    • Copy the API key (you won't see it again!)

  4. Update your MCP configuration with the generated API key (see Usage section below)

Usage with Claude Code

Complete Setup Guide

Follow these steps to integrate KiraHub with Claude Code:

Step 1: Get Your API Key

Use the Dashboard (Option 1 above) to create an API key.

Step 2: Configure Claude Code

  1. Find your Claude Code config directory:

    • macOS: ~/Library/Application Support/Claude/

    • Linux: ~/.config/Claude/

    • Windows: %APPDATA%\Claude\

  2. Create or edit .mcp.json in your project root (recommended) or in the Claude config directory:

    {
      "mcpServers": {
        "kirahub": {
          "command": "npx",
          "args": [
            "-y",
            "@pendingspark/kirahub-mcp@latest"
          ],
          "env": {
            "KIRAHUB_API_URL": "http://localhost",
            "KIRAHUB_API_KEY": "kh_live_your-api-key-here"
          }
        }
      }
    }

    Important:

    • Replace kh_live_your-api-key-here with the API key you generated

    • The API key starts with kh_live_

    • The @latest tag ensures you always get the newest version

  3. Restart Claude Code to load the MCP server

Step 3: Verify Setup

In Claude Code, try:

"Get my next task"

If successful, Claude will use the get_next_task tool and show you a task from your assigned project!

Configuration Options

Place .mcp.json in your project root. This keeps MCP config with your project.

Option B: Global Config

Place .mcp.json in Claude's config directory. This makes the MCP server available in all projects.

Option C: Using Specific Version

For production or to pin to a specific version:

{
  "mcpServers": {
    "kirahub": {
      "command": "npx",
      "args": [
        "-y",
        "@pendingspark/kirahub-mcp@0.1.0"
      ],
      "env": {
        "KIRAHUB_API_URL": "http://localhost",
        "KIRAHUB_API_KEY": "kh_live_your-api-key-here"
      }
    }
  }
}

Plan Wiki Integration Setup

The Plan Wiki integration allows agents to access detailed task documentation from PlanCreator while managing tasks in KiraHub. This provides rich context and instructions for each task.

Prerequisites

  1. PlanCreator must be running alongside KiraHub

  2. Project-scoped API key is required for agents to access plan documentation

Step-by-Step Setup

Step 1: Verify PlanCreator is Running

# Check if PlanCreator is accessible
curl http://localhost/api/wiki/health

# Should return: {"status":"ok"}

Step 2: Add Plan Wiki URL to MCP Configuration

Update your .mcp.json to include the PLAN_EDITOR_API_URL environment variable:

{
  "mcpServers": {
    "kirahub": {
      "command": "npx",
      "args": [
        "-y",
        "@pendingspark/kirahub-mcp@latest"
      ],
      "env": {
        "KIRAHUB_API_URL": "http://localhost",
        "KIRAHUB_API_KEY": "kh_live_your-api-key-here",
        "PLAN_EDITOR_API_URL": "http://localhost/api/wiki"
      }
    }
  }
}

Important: The PLAN_EDITOR_API_URL should point to the wiki API endpoint, typically http://localhost/api/wiki.

Step 3: Create a Project-Scoped API Key

Plan Wiki integration requires a project-scoped API key so agents can access the plan documentation for their assigned project.

Option A: Using the Dashboard

  1. Navigate to http://localhost and login

  2. Go to SettingsAPI Keys

  3. Click Generate New Key

  4. Fill in the form:

    • Key Name: claude-code-project-beta (or your project name)

    • Agent ID: claude-code-mcp

    • Project Assignment: Select a specific project (e.g., "Project Beta")

    • Capabilities: Select all or customize as needed

  5. Click Generate Key

  6. Copy the API key immediately (format: kh_live_...)

Option B: Using the API

#!/bin/bash
# Get JWT token
TOKEN=$(curl -s -X POST http://localhost/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"demo@kirahub.com","password":"demo123"}' | jq -r '.token')

# Get project UUID (replace "project-beta" with your project slug)
PROJECT_ID=$(curl -s -X GET http://localhost/api/projects \
  -H "Authorization: Bearer $TOKEN" | jq -r '.[] | select(.slug == "project-beta") | .id')

# Create API key
curl -s -X POST http://localhost/api/agent-api-keys \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d "{
    \"keyName\": \"claude-code-project-beta\",
    \"agentId\": \"claude-code-mcp\",
    \"projectId\": \"$PROJECT_ID\",
    \"capabilities\": []
  }" | jq '.'

Step 4: Update MCP Configuration with New API Key

Replace the API key in your .mcp.json with the newly created project-scoped key:

{
  "mcpServers": {
    "kirahub": {
      "command": "npx",
      "args": [
        "-y",
        "@pendingspark/kirahub-mcp@latest"
      ],
      "env": {
        "KIRAHUB_API_URL": "http://localhost",
        "KIRAHUB_API_KEY": "kh_live_ee805f5304771831c9d10db36733803e6ec8f6a243c0fc0eb8859cc8c70d0419",
        "PLAN_EDITOR_API_URL": "http://localhost/api/wiki"
      }
    }
  }
}

Step 5: Restart Claude Code

After updating the configuration, restart Claude Code to load the new settings.

Step 6: Test Plan Wiki Integration

Test the integration with natural language commands:

You: "Get my next task and show me the detailed plan documentation"

Claude will:
1. Call get_next_task to fetch a task from KiraHub
2. Automatically call get_plan_task_details to fetch detailed instructions from Plan Wiki
3. Present both the task summary and detailed documentation

Plan Wiki Workflow Example

Here's a typical workflow using Plan Wiki integration:

You: "Get the next task"
Claude: [Calls get_next_task]
        "Task AUTH-5: Implement OAuth Authentication
         Description: Set up OAuth 2.0 authentication flow
         Wiki: http://localhost/wiki?project=project-beta&task=auth-oauth"

You: "Show me the detailed plan for this task"
Claude: [Calls get_plan_task_details with task description]
        "# OAuth Authentication Implementation

         ## Overview
         Implement OAuth 2.0 authorization code flow with PKCE...

         ## Technical Requirements
         - Support for multiple OAuth providers (Google, GitHub)
         - PKCE for mobile apps
         - Refresh token rotation

         ## Implementation Steps
         1. Create OAuth provider configuration
         2. Implement authorization endpoint
         3. Implement token exchange
         ..."

You: "What other tasks are in the plan related to auth?"
Claude: [Calls search_plan_tasks with query="auth"]
        "Found 3 related tasks:
         1. AUTH-5: OAuth Authentication
         2. AUTH-6: Session Management
         3. AUTH-7: API Key Validation"

Plan Wiki Tools Reference

get_plan_overview

Get high-level overview of the project plan including epics and statistics.

Parameters:

  • project_id (optional): Project ID (defaults to agent's assigned project)

Returns:

  • Project name, description, version

  • List of epics with descriptions

  • Total task count

  • Project overview markdown

Example:

get_plan_overview({ project_id: "89bc9621-ac3a-4b0f-b69f-9de10358de2c" })

list_plan_tasks

List all tasks in the project plan with metadata.

Parameters:

  • project_id (required): Project ID

Returns:

  • Array of task summaries with id, title, description, tags, dependencies

Example:

list_plan_tasks({ project_id: "89bc9621-ac3a-4b0f-b69f-9de10358de2c" })

get_plan_task_details

Get full detailed documentation for a specific plan task.

Parameters:

  • task_id (required): Task ID or title from the plan

Returns:

  • Complete task documentation in markdown

  • Task metadata (type, tags, dependencies)

  • Epic information if task belongs to an epic

  • Project overview excerpt

Example:

// Automatically extracts wiki URL from KiraHub task description
get_plan_task_details({ task_id: "AUTH-5" })

// Or directly with plan task ID
get_plan_task_details({ task_id: "implement-oauth" })

Note: This tool can extract plan information from KiraHub task descriptions that contain wiki URLs in the format: http://localhost/wiki?project={project_id}&task={task_id}

search_plan_tasks

Search for tasks in the plan wiki by keyword.

Parameters:

  • query (required): Search string

  • project_id (optional): Project ID (defaults to agent's assigned project)

Returns:

  • Array of matching tasks (up to 10 results)

  • Each result includes id, title, description, tags, file name

Example:

search_plan_tasks({
  query: "authentication",
  project_id: "89bc9621-ac3a-4b0f-b69f-9de10358de2c"
})

Troubleshooting Plan Wiki Integration

"Plan Editor integration is not enabled"

Cause: PLAN_EDITOR_API_URL is not set or is set to "disabled"/"none"

Fix:

"env": {
  "PLAN_EDITOR_API_URL": "http://localhost/api/wiki"
}

"Unable to verify project access" (401)

Cause: API key is not being passed to PlanCreator, or PlanCreator cannot verify it with KiraHub

Fix:

  1. Ensure your API key is valid: curl http://localhost/api/agents/verify -H "x-api-key: kh_live_..."

  2. Check KiraHub logs for agent verification errors

  3. Verify PlanCreator can reach KiraHub API

"Unable to verify project access" (403)

Cause: Your API key is assigned to a different project than the one you're trying to access

Fix:

  1. Check your API key's project assignment:

    • Dashboard → Settings → API Keys → Check "Project" column

  2. Either:

    • Create a new API key for the correct project

    • Create an "All Projects" API key (less secure but more flexible)

Cause: KiraHub task doesn't have a wiki URL in its description

Fix:

  • Ensure tasks are created with wiki URLs in format: http://localhost/wiki?project={project_id}&task={task_id}

  • Or use list_plan_tasks and get_plan_task_details with explicit task IDs instead

PlanCreator not responding

Check if PlanCreator is running:

# Test health endpoint
curl http://localhost/api/wiki/health

# Check Kubernetes pods
kubectl get pods | grep plancreator

API key works for KiraHub but not PlanCreator

Cause: PlanCreator verifies agents by calling KiraHub's /api/agents/verify endpoint. Network connectivity or API key format may be wrong.

Debug:

# Test agent verification endpoint
curl -s http://localhost/api/agents/verify \
  -H "x-api-key: kh_live_your-key-here" | jq '.'

# Should return agent details including projectId

Example Usage in Claude Code

Once configured, you can use natural language commands with Claude Code:

You: "Get my next task and start working on it"
Claude: [Calls get_next_task and claim_task tools]
        "I've claimed task AUTH-5: Implement OAuth authentication.
         This task requires implementing OAuth 2.0 with PKCE..."

You: "Mark this task as complete"
Claude: [Calls complete_task tool]
        "KiraHub is asking validation questions.
         Question 1 (architecture): Which OAuth 2.0 flow(s) did you implement?"

You: "I implemented Authorization Code flow with PKCE"
Claude: [Calls complete_task with your answer]
        "Question 2 (best_practice): How did you implement token refresh?"

You: "Using refresh token rotation with 7-day window"
Claude: [Calls complete_task with your answer]
        "Validation passed! ✅ Score: 85%
         The task has been marked as completed."

Tool Reference

Task Management Tools

get_next_task

Get the next task from the queue based on priority and dependencies.

Parameters:

  • project_id (optional): Filter tasks by project

Example:

get_next_task({ project_id: "proj-123" })

claim_task

Claim a task to work on it.

Parameters:

  • task_id (required): ID of the task to claim

Example:

claim_task({ task_id: "AUTH-5" })

complete_task

Mark a task as completed. Handles automatic validation Q&A.

Parameters:

  • task_id (optional): ID of the task to complete

  • message (optional): Answer to validation question

Examples:

// Initial completion
complete_task({ task_id: "AUTH-5" })

// Answer validation question
complete_task({ message: "I implemented OAuth 2.0 with PKCE..." })

create_task

Create a new task.

Parameters:

  • title (required): Task title

  • description (optional): Task description

  • project_id (optional): Project ID

  • epic_id (optional): Epic ID

  • tags (optional): Array of tags

Example:

create_task({
  title: "Implement login page",
  description: "Create login UI with OAuth",
  project_id: "proj-123",
  tags: ["frontend", "auth"]
})

update_task

Update task details.

Parameters:

  • task_id (required): Task ID

  • title (optional): New title

  • description (optional): New description

  • status (optional): New status (new/in-progress/blocked/completed)

  • tags (optional): New tags

Example:

update_task({
  task_id: "AUTH-5",
  status: "in-progress",
  tags: ["backend", "auth", "oauth"]
})

get_task_details

Get detailed information about a task.

Parameters:

  • task_id (required): Task ID

Example:

get_task_details({ task_id: "AUTH-5" })

Epic Management Tools

list_epics

List all epics for a project.

Parameters:

  • project_id (required): Project ID

Example:

list_epics({ project_id: "proj-123" })

get_epic

Get epic details with all tasks.

Parameters:

  • epic_id (required): Epic ID

Example:

get_epic({ epic_id: "PROJ-1" })

create_epic

Create a new epic.

Parameters:

  • project_id (required): Project ID

  • name (required): Epic name

  • description (optional): Epic description

Example:

create_epic({
  project_id: "proj-123",
  name: "Authentication System",
  description: "Complete OAuth 2.0 implementation"
})

update_epic

Update epic details.

Parameters:

  • epic_id (required): Epic ID

  • name (optional): New name

  • description (optional): New description

  • status (optional): New status (active/archived)

Example:

update_epic({
  epic_id: "PROJ-1",
  status: "archived"
})

Working Notes Tools

add_working_note

Add a working note to a task.

Parameters:

  • task_id (required): Task ID

  • note (required): Note content

  • type (required): Note type (todo/bug/edge_case/optimization)

  • priority (required): Priority (must_fix/should_fix/nice_to_have)

Example:

add_working_note({
  task_id: "AUTH-5",
  note: "Need to handle token expiry edge case",
  type: "edge_case",
  priority: "must_fix"
})

resolve_working_note

Mark a working note as resolved.

Parameters:

  • task_id (required): Task ID

  • note_id (required): Note ID

Example:

resolve_working_note({
  task_id: "AUTH-5",
  note_id: "note-123"
})

escalate_working_note

Escalate a working note to a new task.

Parameters:

  • task_id (required): Current task ID

  • note_id (required): Note ID to escalate

  • epic_id (optional): Epic ID for the new task

Example:

escalate_working_note({
  task_id: "AUTH-5",
  note_id: "note-123",
  epic_id: "PROJ-1"
})

get_task_notes

Get all working notes for a task.

Parameters:

  • task_id (required): Task ID

Example:

get_task_notes({ task_id: "AUTH-5" })

Project Knowledge Tools

get_project_knowledge

Search project knowledge base.

Parameters:

  • project_id (required): Project ID

  • search (optional): Search query

  • type (optional): Knowledge type filter

Example:

get_project_knowledge({
  project_id: "proj-123",
  search: "OAuth authentication",
  type: "architecture"
})

add_project_knowledge

Add a new knowledge entry.

Parameters:

  • project_id (required): Project ID

  • knowledge_type (required): Type (architecture/best_practice/spec/etc.)

  • title (required): Knowledge title

  • content (required): Knowledge content

  • tags (optional): Array of tags

Example:

add_project_knowledge({
  project_id: "proj-123",
  knowledge_type: "best_practice",
  title: "OAuth Token Storage",
  content: "Store tokens in httpOnly cookies with SameSite=Strict...",
  tags: ["auth", "security"]
})

Development

Build

npm run build

Watch Mode

npm run dev

Test Locally

Option 1: Using npx (Quick Test)

# Make sure KiraHub is running
KIRAHUB_API_URL=http://localhost \
KIRAHUB_API_KEY=your-api-key \
npx -y @pendingspark/kirahub-mcp@latest

Option 2: Local Development

# Clone and build from source
git clone https://github.com/PendingSpark/kirahub-mcp.git
cd kirahub-mcp
npm install
npm run build

# Test the local build
KIRAHUB_API_URL=http://localhost \
KIRAHUB_API_KEY=your-api-key \
node dist/index.js

Troubleshooting

"Error: KIRAHUB_API_KEY environment variable is required"

Set the KIRAHUB_API_KEY in your .env file or MCP configuration.

Connection errors

  • Verify KiraHub is running: curl http://localhost:3000/api/health

  • Check KIRAHUB_API_URL is correct

  • Verify API key is valid

"No available tasks found"

  • Check project assignment: Your API key may be assigned to a specific project

    • Go to Dashboard → Settings → API Keys

    • Check the "Project" column for your agent

    • If assigned to a project, you'll only see tasks from that project

  • Create tasks in the assigned project:

    • Use create_task or create tasks via the dashboard

    • Make sure they're in the same project as your agent

  • Change project assignment:

    • Delete the current API key

    • Create a new one with "All Projects" or a different project

Validation questions not appearing

  • Ensure the task has relevant tags

  • Check that project has knowledge base entries with matching tags

  • Verify knowledge base is populated: get_project_knowledge(project_id="...")

Agent gets tasks from wrong project

  • Check your API key's project assignment in the dashboard

  • Update the API key or create a new one with the correct project

  • Remember: If projectId is set, the agent ONLY sees tasks from that project

Architecture

The MCP server consists of:

  1. index.ts - Main MCP server with tool handlers

  2. a2a-client.ts - A2A protocol client wrapper

  3. MCP SDK - Handles stdio communication with Claude Code

The server translates MCP tool calls into A2A protocol messages, sends them to KiraHub, and returns the responses in a format Claude Code understands.

Available Tools

28 tools
add_project_knowledgeB

Add a new knowledge entry to the project

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoKnowledge tags
titleYesKnowledge title
contentYesKnowledge content
project_idYesProject identifier (UUID, readable_id, or name/slug)
knowledge_typeYesType of knowledge (architecture, best_practice, spec, etc.)

TDQS

B3.2/5.0
Behavior2/5

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

Given no annotations, the description carries the burden of behavioral disclosure. It only states the action 'Add' without any behavioral details such as whether the operation is idempotent, overwrites existing entries, or has specific permission requirements.

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, compact sentence that conveys the core purpose without any unnecessary words. It is appropriately front-loaded and easy to parse.

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 extremely sparse. For a write operation with no annotations or output schema, it fails to provide context about expected behavior, valid knowledge_type values, or how this relates to sibling tools. The schema covers parameters but not the broader usage 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 has descriptions for all 5 parameters (100% coverage), so the schema already provides the necessary parameter semantics. The description does not add any parameter-specific meaning beyond what the schema offers.

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 identifies the action (Add), the resource (knowledge entry), and the context (to the project). It distinguishes itself from siblings like get_project_knowledge and other 'add' tools by specifying the knowledge entry resource.

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, or any prerequisites or exclusions. The description simply states what it does, leaving the agent to infer appropriate usage.

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

add_task_dependencyB

Add a blocking dependency between tasks (blocked_task waits for blocking_task to complete)

ParametersJSON Schema
NameRequiredDescriptionDefault
blocked_task_idYesTask ID that is blocked (must wait)
blocking_task_idYesTask ID that blocks (must be completed first)

TDQS

B3.3/5.0
Behavior2/5

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

Annotations are absent, so the description bears the full burden of behavioral disclosure. It explains the dependency direction but does not mention edge cases such as existing dependency behavior, cycle prevention, or error conditions for invalid task IDs.

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, compact sentence with a clarifying parenthetical. It is front-loaded with the action and contains no unnecessary words.

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

Completeness3/5

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

For a simple two-parameter tool, the description covers the core functionality. However, it lacks contextual information about when to use it, potential validation issues, and interaction with existing dependencies. Given the presence of sibling tools like remove_task_dependency, more usage context would improve completeness.

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

Parameters3/5

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

The input schema already provides fully descriptive parameter names and descriptions for both blocked_task_id and blocking_task_id, covering 100% of parameters. The description's parenthetical reinforces the direction but adds no additional parameter-level details.

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

Purpose5/5

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

The description clearly states the action ('Add'), the resource ('blocking dependency between tasks'), and defines the directional semantics ('blocked_task waits for blocking_task to complete'). It distinguishes from the sibling tool remove_task_dependency by describing the creation side.

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 remove_task_dependency or update_task. The description defines the operation but lacks context about prerequisites, conflict handling, or use cases.

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

add_working_noteA

Add a working note to a task (todo, bug, edge case, optimization, plan, or information). Plan notes auto-resolve previous plans. Priority defaults to informational for plan/information types.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesNote content
typeYesType of note
task_idYesTask ID
priorityNoPriority level (defaults to informational for plan/information types)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses two behavioral traits: plan notes auto-resolve previous plans and priority defaults for plan/information types, which are non-obvious. However, it does not specify whether the note is appended or if there are other side effects, so it's not fully transparent.

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, front-loaded with the main action. No wasted words; each sentence adds meaningful 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 simple tool, the description covers the core purpose and two important behavioral details. It lacks mention of return value or explicit statement that a new note is created (though implied), but schema covers parameters, so context is largely adequate.

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

Parameters3/5

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

Schema coverage is 100%, with descriptions for all four parameters. The description adds some behavioral context (auto-resolve) but mostly repeats schema info like priority defaults, so it provides minimal additional parameter semantics.

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 ('Add a working note') and the resource ('to a task'), and enumerates valid note types, distinguishing it from retrieval (get_task_notes) and resolution (resolve_working_note) 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 description implies when to use (adding a note to a task) but does not explicitly contrast with alternatives like resolve_working_note or escalate_working_note. It lacks explicit when-not or alternative guidance, making it adequate but not distinguished.

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

claim_taskC

Claim a task to work on it

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesID of the task to claim

TDQS

C2.7/5.0
Behavior1/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. It only says 'claim a task to work on it', revealing nothing about side effects (e.g., locking the task, changing its assignee, or whether an unclaimed task is required). This is a minimal statement with no behavioral detail.

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

Conciseness4/5

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

The description is a single concise sentence, front-loaded with the action and object, containing no fluff. It is efficiently structured, though it would benefit from a short additional sentence on behavior or usage context, but as a standalone description it is appropriately compact.

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 simplicity of one parameter and no output schema, the description still lacks essential context: it does not mention what happens after claiming, whether it returns anything, what the preconditions are, or how it fits with sibling tools like get_next_task or complete_task. For a mutation tool, this is 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 schema description covers 100% of the parameter (task_id with 'ID of the task to claim'), and the tool description adds no additional meaning. Per the baseline for high schema coverage, a score of 3 is appropriate since the schema does the heavy lifting.

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 uses a specific verb 'claim' and resource 'task', clearly indicating a distinct action among siblings like get_next_task or update_task. It conveys that the tool is for taking ownership of a task to work on it, though it could be more explicit about what 'claim' entails.

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 alternatives, nor any context on prerequisites or typical workflow (e.g., after get_next_task). It merely states the action without any contextual placement.

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

complete_taskA

Mark a task as completed. This will trigger validation questions based on project knowledge. If validation questions are returned, you must answer them by calling this tool again with the answer in the message parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional message. Use this to answer validation questions when prompted.
task_idNoID of the task to complete (optional if currently in validation)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses a non-obvious behavior: triggering validation questions based on project knowledge, and instructs the agent to answer them by re-calling the tool. This goes beyond a simple 'complete' and adds useful behavioral context, though it doesn't mention reversibility 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 two sentences, front-loaded with the main action, and every sentence provides necessary information. No wasted words.

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

Completeness4/5

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

For a tool with a validation loop, the description covers the flow sufficiently: complete triggers questions, and you answer by re-invoking with the message parameter. It doesn't explicitly state the final outcome after answering all questions, but the behavior is clear enough given the schema and sibling context.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds extra meaning beyond the schema by explaining that 'message' is used to answer validation questions and that 'task_id' is optional during validation. This clarifies when and how to use each parameter, adding value.

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

Purpose5/5

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

The description clearly states 'Mark a task as completed', a specific verb+resource action. It distinguishes from siblings like update_task by emphasizing the completion and validation trigger. The added validation flow details remove ambiguity.

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

Usage Guidelines4/5

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

It provides clear context: use to complete a task, and if validation questions are returned, call again with the answer in the message parameter. It doesn't explicitly name alternatives or exclusions, but the process is well-defined.

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

create_epicC

Create a new epic

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEpic name
project_idYesProject identifier (UUID, readable_id, or name/slug)
descriptionNoEpic description

TDQS

C2.6/5.0
Behavior1/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It merely states the action without mentioning side effects, permissions, reversibility, or any other behavioral traits. This is a critical gap for a mutation tool.

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

Conciseness3/5

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

The description is very concise, but it is under-specified rather than efficiently informative. It is a single short sentence that could benefit from additional context, making it acceptable but not exemplary.

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 create operation with no output schema and no annotations, the description lacks critical context such as return value, side effects, or when it is appropriate to invoke. It is minimally complete but leaves significant 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 input schema describes all three parameters with 100% coverage, so the schema does the heavy lifting. The description adds no additional parameter meaning beyond what the schema already provides, making the baseline 3 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 'Create a new epic' clearly identifies the action (create) and the resource (epic). It distinguishes from siblings like update_epic and create_task by specifying the resource type, but lacks any additional scope or context that would elevate it to 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?

No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like create_task or update_epic, nor does it mention any prerequisites or context. This provides no help to an agent deciding between tools.

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

create_taskC

Create a new task

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTask tags
titleYesTask title
epic_idNoEpic ID (optional)
project_idNoProject identifier - UUID, readable_id, or name/slug (required if epic_id not provided)
descriptionNoTask description

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 carries the full burden of behavioral disclosure. It only states a write operation without mentioning side effects, validations, required parent context, or response behavior. This is a significant gap for a creation tool.

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

Conciseness5/5

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

A single, direct sentence with no fluff. It is appropriately concise for a simple creation tool, though it sacrifices necessary context for brevity.

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 incomplete for a tool with 5 parameters and no output schema. It omits essential context such as the requirement to provide either a project_id or epic_id, return value expectations, and how this task fits into the broader workflow (e.g., epics, projects).

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 descriptions cover 100% of parameters, so the baseline is 3. The description adds no extra parameter semantics beyond what the schema already provides. It does not explain relationships between parameters (e.g., project_id required if epic_id absent).

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 'Create a new task' clearly identifies the verb and resource, distinguishing it from siblings like create_epic. However, it is extremely minimal and adds no detail beyond the tool's name, so it does not fully leverage the opportunity to specify scope or context.

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 such as get_next_task or create_epic. The description does not mention prerequisites like needing a project_id or epic_id, which are critical for correct usage.

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

delete_shared_contextC

Delete a shared context item

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey of the context item to delete
categoryYesContext category
project_idNoProject identifier - UUID, readable_id, or name/slug (optional - uses current project from claimed task if not provided)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Delete a shared context item,' which implies a destructive action but does not state whether deletion is permanent, idempotent, or scoped to a project. It also does not mention permissions or what happens if the item does not exist. This significant gap makes the tool's behavior opaque.

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 with no wasted words. It is front-loaded with the verb and resource, making it easy to scan. However, it is so terse that it borders on under-specification, though it does not contain any filler.

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 has no annotations, no output schema, and a minimal description. For a deletion tool, the agent needs to know whether the action is destructive, reversible, or scoped to a project. The description provides none of this context, making it incomplete for the complexity of the operation.

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 complete descriptions for all three parameters (key, category, project_id), covering 100% of the parameters. The description adds no extra meaning beyond what the schema offers, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a clear verb ('Delete') and a specific resource ('shared context item'), making the tool's purpose immediately obvious. It distinguishes from sibling tools like get_shared_context and set_shared_context through the verb, but does not explicitly differentiate itself, so it misses a top score.

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?

There is no guidance on when to use this tool versus alternatives. No exclusions, prerequisites, or conditions are mentioned. The usage is only implied by the tool name and the presence of sibling tools, which is insufficient for an agent to decide when to invoke this tool confidently.

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

escalate_working_noteB

Escalate a working note to a new task

ParametersJSON Schema
NameRequiredDescriptionDefault
epic_idNoOptional epic ID for the new task
note_idYesNote ID to escalate
task_idYesCurrent task ID

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 does not disclose side effects such as whether the original note is deleted, modified, or left unchanged, nor does it mention permissions or other behavioral traits.

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 or redundant information. It directly states the core action and outcome, making it highly concise and well-structured.

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 lack of annotations and output schema, the description is too minimal. It does not explain how task_id and note_id relate, what happens to the original note, or any expected return values. This leaves significant gaps for a mutation tool.

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

Parameters3/5

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

All three parameters have explicit descriptions in the schema (note_id, task_id, optional epic_id), achieving 100% schema description coverage. The tool description adds no additional parameter nuance, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'escalate' and clearly identifies the resource ('working note') and outcome ('new task'). This distinguishes it from sibling tools like resolve_working_note or create_task, which have different actions or inputs.

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 alternatives. It does not mention prerequisites, exclusions, or scenarios where a different tool would be preferred.

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

get_activityB

Get recent activity events for a project or task

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of events to return (default: 20)
task_idNoTask ID (optional - if provided, gets task-specific activity)
project_idNoProject identifier - UUID, readable_id, or name/slug (optional - uses current project from claimed task if not provided)
event_typesNoFilter by event types (optional)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic read operation and does not mention return format, pagination behavior, default limits, or the fact that project_id can default to the current claimed task's project. This is a significant gap for safe and correct invocation.

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 or redundancy. It earns its place by clearly naming the action and target, making it maximally concise.

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 has no annotations, no output schema, and four optional parameters, the description is too sparse to provide complete context. It doesn't explain what an activity event consists of, how the optional parameters interact, or what happens when no filter is provided. This leaves the agent under-informed.

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 input schema already documents all four parameters with descriptions. The tool description adds no additional meaning beyond what the schema provides, meeting the baseline 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 clearly states the tool retrieves activity events for a project or task, using a specific verb and resource. It doesn't explicitly differentiate from sibling tools like post_activity, but the read-oriented wording makes the purpose obvious.

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 this tool—whenever recent activity events for a project or task are needed. However, it provides no explicit guidance on alternatives, exclusions, or when to prefer another tool such as get_task_details or get_task_notes.

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

get_epicB

Get epic details with all tasks

ParametersJSON Schema
NameRequiredDescriptionDefault
epic_idYesEpic ID

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 behavioral disclosure burden. 'Get' clearly indicates a read-only operation, and 'with all tasks' explains the output scope. However, it does not disclose potential error behavior, auth requirements, or whether tasks are returned in a nested structure, leaving some transparency 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?

The description is a single, front-loaded sentence that conveys the action, resource, and scope without any filler. Every word contributes meaning, making it highly concise and well-structured.

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, so the description should clarify the return structure, but 'epic details' is vague and 'all tasks' does not specify whether tasks are full objects, IDs, or just summaries. This leaves a significant gap for an agent trying to predict the tool's 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?

The schema already fully describes the only parameter, epic_id, with 100% coverage. The description does not add extra meaning about the parameter's format, source, or relationship to other entities, so it adds no value beyond the schema, meeting the baseline of 3.

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' with a clear resource ('epic details') and scopes the output with 'with all tasks', making it distinct from sibling tools like list_epics (which lists epics) and get_task_details (which retrieves a single task).

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 choose this tool over alternatives such as list_epics or get_task_details, and it does not mention any exclusions or prerequisites. The only implied hint is that it returns tasks along with epic details, but this is not stated as a recommendation.

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

get_next_taskC

Get the next task from the queue based on priority and dependencies

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOptional project identifier (UUID, readable_id, or name/slug) to filter tasks

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It does not disclose whether the task is removed from the queue (destructive vs read-only), what happens if the queue is empty, or the return format. The word 'get' is ambiguous between a read and a pop.

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, clear sentence that conveys the core functionality without any wasted words or redundant details.

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 and no annotations, the description leaves critical unknowns: return shape, behavior on empty queue, and whether the operation mutates state. Simple but incomplete for an agent to use confidently.

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 project_id with 100% coverage, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already states.

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 gets the next task from a queue, with ordering based on priority and dependencies. It distinguishes itself from siblings like claim_task (which implies ownership) and get_task_details (which fetches a specific task), though it does not explicitly name alternatives.

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 alternatives such as claim_task or list_plan_tasks. The context is only implied by the description, not explicit.

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

get_plan_overviewA

Fetch the overview, manifest, and epic metadata from the PlanCreator wiki for a given project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject identifier as used in PlanCreator (typically matches KiraHub project ID or slug)

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 the burden. The verb 'Fetch' implies a read-only operation, and the description names the data source and content. However, it does not disclose potential authentication needs, rate limits, or any limitations of the overview/manifest data, which is acceptable but not exhaustive.

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 that clearly states the action and target without any filler. Every word contributes meaning, and it does not repeat schema details.

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?

With no output schema and no annotations, the description should clarify what the tool returns. It mentions 'overview, manifest, and epic metadata' but leaves the structure and granularity vague. For a simple retrieval tool with one parameter and a clear high-level purpose, this is adequate 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% for the only parameter, project_id, with a clear explanation of its format and relationship to KiraHub. The tool description adds no additional parameter semantics, but since the schema already documents the parameter well, 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 uses a specific verb ('Fetch') and a clear resource ('PlanCreator wiki') with a well-defined scope ('overview, manifest, and epic metadata'). This clearly separates it from sibling tools like get_epic or list_epics, which focus on individual epics or lists.

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 instead of alternatives. It does not mention exclusions, prerequisites, or contrast with sibling tools such as get_epic, get_project_knowledge, or list_plan_tasks, leaving the agent to infer the appropriate use case.

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

get_plan_task_detailsA

Retrieve the full markdown content and metadata for a specific plan task from the PlanCreator wiki

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask identifier or title (case-insensitive) as defined in PlanCreator
project_idYesProject identifier to load tasks for

TDQS

A3.8/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 full burden. It discloses that the tool returns 'full markdown content and metadata' which describes the output type, but it does not mention read-only semantics, potential errors, authentication requirements, or return structure. It's adequate but not rich.

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 that front-loads the action and resource. No unnecessary words or repetition. It earns its place entirely.

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 with two parameters and no output schema, the description covers the essentials: what is returned (full markdown content and metadata). It lacks a detailed breakdown of what 'metadata' includes, but given the tool's simplicity, this is sufficient for selection and 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% with clear descriptions for task_id ('Task identifier or title (case-insensitive)') and project_id ('Project identifier to load tasks for'). The tool description adds no parameter semantics beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'Retrieve' with a clear resource: 'full markdown content and metadata for a specific plan task from the PlanCreator wiki'. This clearly distinguishes it from sibling tools like 'get_task_details' or 'list_plan_tasks' by emphasizing the full content retrieval.

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

Usage Guidelines3/5

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

The description implies usage when a user needs the full markdown body and metadata of a task, but it does not explicitly state when to use this tool over alternatives or provide exclusion criteria. No sibling tools are mentioned or contrasted.

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

get_project_knowledgeA

Search project knowledge base (architecture, best practices, specs)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoKnowledge type filter
searchNoSearch query
project_idYesProject identifier (UUID, readable_id, or name/slug)

TDQS

A3.8/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. The verb 'Search' clearly indicates a read-only operation, which is a useful safety signal. However, it doesn't disclose what the search returns (e.g., snippets, full documents), any ordering/filtering semantics, or potential limitations.

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

Conciseness5/5

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

The description is a single sentence that front-loads the key action and resource. It is appropriately sized with zero waste—every word contributes to understanding the tool's purpose.

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

Completeness4/5

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

For a search tool with three well-documented parameters and no output schema, the description provides sufficient context by explaining what the knowledge base contains. The lack of output guidance is mitigated by the intuitive nature of a search action, though the description could mention typical use cases.

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 description adds no additional meaning to the parameters beyond what the schema already states; it doesn't elaborate on how 'type' or 'search' interact or the format of project_id.

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 the specific verb 'Search' and clearly identifies the resource as 'project knowledge base', with a parenthetical that details content types (architecture, best practices, specs). This clearly distinguishes it from sibling tools like get_task_details and add_project_knowledge.

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

Usage Guidelines3/5

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

The description implies usage for finding project knowledge, but provides no explicit when-to-use vs alternatives or exclusions. For example, it doesn't mention that add_project_knowledge is for adding while this is for searching, or when search_plan_tasks might be more appropriate.

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

get_shared_contextC

Get shared context for a project (contracts, utilities, decisions, config)

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoOptional specific key to retrieve
categoryNoOptional category filter
project_idNoProject identifier - UUID, readable_id, or name/slug (optional - uses current project from claimed task if not provided)

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are not provided, so the description carries the full burden. It does not mention that this is a read-only operation, permissions requirements, or return behavior. The description only indicates the resource type, leaving behavior mostly implicit.

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 that wastes no words. It conveys the core purpose and lists relevant categories, making it efficient and easily 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?

For a getter tool with no output schema and multiple optional filters, the description should explain what is returned and how the optional key/category/project_id affect the result. It does neither, leaving the agent to infer the return format and filtering 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 input schema already describes all three parameters with 100% coverage. The description lists categories that match the enum, but this duplicates schema information and adds no additional meaning about how parameters combine or what formats are expected.

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 it retrieves shared context for a project and lists the main categories. It is a specific verb+resource, but it does not distinguish itself from the sibling tool get_project_knowledge, which might serve a similar retrieval purpose.

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?

There is no guidance on when to use this tool versus alternatives such as set_shared_context or get_project_knowledge. The description only implies usage by naming the resource but provides no context or exclusions.

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

get_task_detailsA

Get detailed information about a task including dependencies and notes

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

A3.7/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 full burden of behavioral disclosure. It adds value by specifying that the details include dependencies and notes, giving some sense of the return content. However, it does not disclose whether the operation is read-only (implied by 'get'), any auth requirements, rate limits, or what other fields might be present. This is a minimal but not fully transparent disclosure.

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 is front-loaded with the action ('Get') and resource ('task'). It communicates the key additional details ('dependencies and notes') without any waste, making it optimally sized.

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 (one parameter, no output schema), so the description carries responsibility for explaining return values. It mentions dependencies and notes but leaves 'detailed information' vague, not clarifying what other fields are included or any limitations. This is adequate for a basic get operation but not fully complete given the absence of an output schema.

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 parameter 'task_id' is described as 'Task ID'. The description does not add any additional meaning beyond the schema, but since the schema fully documents the parameter, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get detailed information about a task including dependencies and notes'. The verb 'Get' is specific, the resource is 'task', and the scope is 'detailed information' with explicit mention of dependencies and notes. This effectively distinguishes it from sibling tools like 'get_task_notes' (which focuses only on notes) and 'get_plan_task_details' (which targets plan 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?

The description implies usage: when you need detailed task information with dependencies and notes. However, it provides no explicit guidance on when to use this tool versus alternatives like get_task_notes or get_plan_task_details. No exclusions or alternative suggestions are given, so the usage context is only implied.

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

get_task_notesA

Get all working notes for a task

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. 'Get' implies a read-only operation, but the description does not disclose potential behaviors such as whether resolved notes are included, ordering, or pagination. It is minimally transparent but not 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 a single concise sentence with no unnecessary words. It is front-loaded with the action and resource, making it quickly parsable.

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 single-parameter getter, the description is nearly complete. It does not explain the return format or note statuses, which could be ambiguous given sibling tools for resolving/escalating notes, but the low complexity keeps the gap small. An output schema is absent, so a bit more detail would help, but it is still sufficient for selection and 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 coverage is 100% (task_id is described as 'Task ID'), so the baseline is 3. The description does not add any extra meaning beyond the schema parameter. It neither enriches nor repeats the parameter explanation, which is acceptable for a single obvious parameter.

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

Purpose5/5

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

The description 'Get all working notes for a task' uses a specific verb ('get'), a specific resource ('working notes'), and a scope ('for a task'). It clearly distinguishes from sibling tools like add_working_note, resolve_working_note, and escalate_working_note by being the retrieval operation.

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: one would call this when they need all working notes for a task. However, it provides no explicit context, exclusions, or alternatives. The usage is evident from the purpose, but there is no guidance on when not to use it or how it differs from get_task_details.

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

list_epicsB

List all epics for a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject identifier (UUID, readable_id, or name/slug)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action and does not mention whether archived epics are included, how results are ordered, whether pagination applies, or any permissions required. The behavior is not misleading but is under-specified.

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 epics for a project', with no redundant wording. Every word earns its place, and the structure is front-loaded with the verb and resource.

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 list tool, the description covers the core purpose and the schema covers the parameter. However, it lacks context about the return format, whether all epics means including archived/closed ones, and any ordering or filtering defaults. Given the absence of annotations and output schema, this is a minimal-but-not-complete description.

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 fully documents the single parameter project_id with a clear description, so the tool description does not need to add parameter details. The description adds no extra meaning beyond the schema, which is acceptable given 100% schema coverage.

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

Purpose5/5

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

The description clearly states the action (List), the resource (epics), and the scope (for a project). It distinguishes from sibling tools like get_epic (singular) and create_epic by indicating a bulk list operation.

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 alternatives such as get_epic or list_plan_tasks. It does not mention filtering, pagination, or any exclusions, leaving the agent to infer usage solely from the name.

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

list_plan_tasksA

List tasks from the PlanCreator wiki along with metadata to understand available plan steps

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject identifier to load tasks for

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It indicates a read operation ('List') and mentions metadata, but it does not explicitly state that it is read-only, nor does it discuss pagination, error behavior, or any side effects. This adds some context beyond the schema but is not fully transparent.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the action and resource. It contains no filler or redundant content, earning its place with the purpose clause. It is appropriately concise for a simple list operation.

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 tool with only one parameter and no output schema, the description conveys the main purpose and a general idea of the result ('tasks ... with metadata'). However, it lacks details about the exact metadata fields returned and does not explicitly guide the agent on when to select this tool over similar siblings, leaving some 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 covers 100% of the parameter (project_id) with a clear description, so the baseline is 3. The tool description does not add any additional meaning about the parameter format, valid values, or constraints beyond what the schema already provides.

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 the specific verb 'List' with a clear resource ('tasks from the PlanCreator wiki') and a purpose ('to understand available plan steps'). This distinguishes it from sibling tools like get_next_task (single task) and list_epics (epics), 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 Guidelines4/5

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

The phrase 'to understand available plan steps' implies a use case (gaining an overview of plan steps), providing clear context. However, it does not explicitly state when not to use it or name alternatives like search_plan_tasks or get_task_details, so it lacks exclusions.

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

post_activityA

Post an activity event to track what the agent is doing. You MUST call this proactively throughout your work — do not wait to be asked. Specifically:

  • Post progress after completing each significant milestone (e.g., "Database schema done, moving to API endpoints")

  • Post file_created or file_modified when you create or change key files

  • Post decision when you make architectural or technical choices (include rationale)

  • Post commit after git commits, pr_created after creating PRs

  • Post blocked if you cannot proceed, error if something goes wrong

  • Post warning for things other agents or the team should know about The project_id and task_id are auto-filled from the currently claimed task if omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesDescription of what happened
task_idNoTask ID (optional - uses current task if not provided)
metadataNoOptional metadata (e.g., { files: ["src/auth.ts"], rationale: "..." })
event_typeYesType of activity event
project_idNoProject identifier - UUID, readable_id, or name/slug (optional - uses current project from claimed task if not provided)

TDQS

A4.8/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. It discloses a key behavior: project_id and task_id are auto-filled from the currently claimed task if omitted. This is useful contextual information. However, it does not mention what happens if no task is claimed, or describe success/failure responses, but for a logging tool the core behavior is sufficiently transparent.

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 longer than most but every sentence and bullet earns its place. It starts with a clear summary, then uses a well-organized bullet list for event type triggers, and concludes with the auto-fill behavior. The structure is highly scannable for an AI agent.

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

Completeness5/5

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

Given the tool's moderate complexity, the description is complete. It covers the purpose, when to call, what events to use, and default parameter behavior. No output schema exists, so return values are not required. The description fully equips the agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 100% with each parameter described, but the description adds significant semantic value by mapping each event_type to concrete scenarios (e.g., 'Post progress after completing each significant milestone'). It also explains the auto-fill behavior for project_id and task_id, which is not fully captured in the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Post an activity event to track what the agent is doing.' It uses a specific verb ('post') and resource ('activity event'), and the extensive list of event types distinguishes it from the sibling 'get_activity' tool, which reads activity.

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, proactive usage instructions: 'You MUST call this proactively throughout your work — do not wait to be asked.' It then details specific triggers for each event type (progress, file_created, decision, etc.), giving the agent clear when-to-use guidance that goes beyond generic alternatives.

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

remove_task_dependencyA

Remove a blocking dependency between tasks

ParametersJSON Schema
NameRequiredDescriptionDefault
blocked_task_idYesTask ID that is blocked
blocking_task_idYesTask ID that blocks

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action (remove a blocking dependency) but does not disclose potential side effects (e.g., whether it fails if the dependency does not exist, whether removal is reversible, or if it affects task statuses). This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, focused sentence with no redundant words. It communicates the essential operation efficiently and earns its place without any filler.

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 simple nature of the tool (two well-documented parameters, no nested objects, no output schema), the description is minimally complete. However, it lacks context around edge cases, error handling, or idempotency, which would be valuable for a mutation tool without annotations. It covers the basics but leaves 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 input schema provides full descriptions for both required parameters ('blocked_task_id' and 'blocking_task_id'), achieving 100% coverage. The description adds no extra semantic value beyond what the schema already states, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Remove') with a clear resource ('blocking dependency') and scope ('between tasks'). It directly distinguishes the tool from its sibling 'add_task_dependency' and other task-related tools, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when you need to remove a blocking dependency) but provides no explicit exclusions or alternatives. It is clear enough for a straightforward operation, but it does not guide the agent on when not to use it or how it contrasts with related tools like 'add_task_dependency'.

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

resolve_working_noteB

Mark a working note as resolved

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYesNote ID
task_idYesTask ID

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states the action (mark resolved) but does not reveal side effects: whether it is reversible, whether it deletes or hides the note, whether it requires certain permissions, or if it affects the associated task status. This is significant for a mutation tool.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. However, it is slightly under-specified, missing useful context that could be added without breaking conciseness. Overall, it is efficient and front-loaded.

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 has low complexity (2 simple params, no output schema), so a minimal description might suffice. Yet it lacks any mention of post-conditions, error cases, or how resolution affects other tools like get_task_notes. Given the existence of sibling notes-related tools, a bit more context 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 schema describes both parameters (task_id, note_id) with simple descriptions at 100% coverage. The tool description adds no additional meaning, such as the relationship between task and note or the expected format. Baseline 3 applies because schema already covers the parameters adequately.

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

Purpose5/5

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

The description 'Mark a working note as resolved' uses a specific verb and resource, clearly identifying the action and target. It distinguishes from siblings like add_working_note (creation) and escalate_working_note (escalation), making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage: resolve a note when its content is no longer relevant or issue is addressed. However, it provides no explicit guidance on when to choose this over alternatives like escalate_working_note or update_task. It lacks any exclusions or alternative recommendations.

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

search_plan_tasksA

Search plan tasks in PlanCreator by title, description, tags, or content to find relevant context

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch string to match against task metadata or content
project_idYesProject identifier to search within

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It reveals that the tool searches multiple fields and returns matching tasks, but does not mention output format, pagination, ordering, or any access limitations. For a read-only search operation, this is partially transparent but lacking in return behavior details.

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 that front-loads the action (Search), resource (plan tasks), and key criteria (by title, description, tags, or content) without any fluff or repetition. Every word contributes meaning.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no nested objects, no output schema) and the presence of sibling tools for detailed views, the description covers the essential purpose and search fields. It lacks an explicit statement about the return payload, but for a context-finding tool this is a minor gap, making it mostly complete.

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?

While schema descriptions already cover both parameters, the tool description adds value by explicitly enumerating the searchable fields (title, description, tags, content) rather than the generic 'metadata or content' in the schema. This gives the agent richer understanding of what the query parameter matches against.

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 searches plan tasks within PlanCreator using specific searchable fields (title, description, tags, content). This distinguishes it from sibling tools like list_plan_tasks (which likely lists all tasks) and get_task_details (which retrieves specific task details).

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 use when needing to find tasks by query terms across metadata/content, providing clear context for when this tool is appropriate. It does not explicitly mention alternatives or exclusion cases, but the search-vs-list distinction is inferable from the phrasing.

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

set_shared_contextA

Set a shared context item so other agents can see your work. You SHOULD call this when:

  • You create or modify a shared interface/type → category: "contracts"

  • You create a reusable utility function → category: "utilities"

  • You make a technical/architectural decision → category: "decisions" (include rationale)

  • You add or change environment variables or config → category: "config" This enables parallel agents to stay coordinated without reading each other's code.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesUnique key for this context item
valueYesContext value (e.g., { definition: "interface User {...}", location: "src/types.ts" })
categoryYesContext category
project_idNoProject identifier - UUID, readable_id, or name/slug (optional - uses current project from claimed task if not provided)

TDQS

A4.4/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. It discloses the write behavior and intended visibility ('so other agents can see your work') and gives value examples, but does not state whether setting an existing key overwrites or errors, nor any permission requirements. This is a notable gap for a mutation tool.

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

Conciseness5/5

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

The description is well-structured with a brief introductory sentence followed by a scannable bullet list. Each bullet earns its place, and the length is appropriate for the operational guidance it provides, avoiding fluff.

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 covers the 'why', 'when', and 'what' with examples, and mentions optional project_id behavior. It lacks detail on return values or idempotency, but given the tool's coordination purpose and the schema's richness, it is sufficiently complete for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Input schema already covers 100% of parameters with descriptions. The description adds meaningful semantics beyond the schema by providing a concrete value example ('{ definition: "interface User {...}", location: "src/types.ts" }') and instructing to 'include rationale' for decisions, which enriches the value parameter meaning.

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 'Set a shared context item so other agents can see your work', which is a specific verb+resource statement. It clearly distinguishes this from sibling tools like get_shared_context and delete_shared_context by focusing on the 'set' action and enumerating concrete categories.

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

Usage Guidelines5/5

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

Provides an explicit 'You SHOULD call this when:' list with concrete scenarios mapped to categories (e.g., 'You create or modify a shared interface/type → category: contracts'). It also explains the coordinating benefit, making it clear when this tool should be used over alternatives.

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

sync_planA

Sync an implementation plan to the currently claimed task as a working note. Uses the current task context automatically - no task_id needed. Previous plan notes are auto-resolved. Call this after exiting plan mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesThe implementation plan content
task_idNoOptional task ID override (uses currently claimed task if omitted)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and discloses important behaviors: it uses the current task automatically, auto-resolves previous plan notes, and is intended for post-plan-mode use. This goes beyond the schema and provides useful operational 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?

Three concise sentences, front-loaded with the core purpose. Each sentence adds meaningful information without redundancy, making it easy to parse quickly.

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

Completeness5/5

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

The tool is simple with two parameters and no output schema. The description fully covers the essential behavioral context (auto-context, auto-resolution, invocation timing) and clearly situates it among the sibling tools.

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% and both parameters are well-described in the schema. The description adds little beyond what the schema already states about task_id being an optional override. Thus the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (sync), the target resource (an implementation plan to the currently claimed task as a working note), and adds distinctive details like automatic context use and auto-resolution of previous notes. This differentiates it from sibling tools like add_working_note and resolve_working_note.

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 gives explicit timing guidance ('Call this after exiting plan mode') and emphasizes automatic context use, which implies when to use it. It does not explicitly name alternatives or when-not scenarios, but the specialization is clear from the context.

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

update_epicC

Update epic details

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name
statusNoNew status
epic_idYesEpic ID
descriptionNoNew description

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 carries the full burden of behavioral disclosure. It only implies a mutation operation ('update') but does not mention whether partial updates are allowed, the effect on existing fields, error conditions, or permission requirements.

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 with zero filler, and the core action is front-loaded. While it is efficient, it is so minimal that it provides little beyond a tautological expansion of the tool name, though it is not misleading.

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 essential context for an update operation: no return value specification, no note on partial updates, no error handling, and no usage scenarios. Given no annotations or output schema, the description does not sufficiently compensate for the missing 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 has 100% description coverage for all four parameters, so the baseline is 3. The description itself adds no parameter-level meaning, but the schema already defines each field (name, status, epic_id, description) clearly.

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 (update) and resource (epic), which distinguishes it from create_epic or get_epic. However, 'details' is generic and doesn't specify the update scope beyond the resource, so it's not fully specific.

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 alternative tools like update_task, or on situations where updating an epic is appropriate. The description gives no prerequisites or exclusions.

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

update_taskC

Update task details

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoNew tags
titleNoNew title
statusNoNew status
task_idYesTask ID
descriptionNoNew description

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 carries the full burden of behavioral disclosure. It only states 'Update task details' and does not explain whether it performs a partial or full update, whether status transitions are validated, what happens to omitted fields, or what the response contains.

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, front-loaded sentence with no filler. It is concise, but it is also too terse to add meaningful information beyond the tool name, which is why it does not earn a 5.

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 no output schema, no annotations, and multiple related sibling tools, the description is insufficiently complete. It does not mention update semantics, effects on other task operations, whether task_id must be a valid existing task, or how partial updates are handled.

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 has 100% parameter description coverage, so the tool description need not restate parameter meanings. The schema's descriptions are minimal but understandable ('New tags', 'New title', etc.), and the enum for status is self-explanatory, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description 'Update task details' clearly identifies the operation (update) and the target resource (task), which distinguishes it from creation, completion, and claim tools. However, it is somewhat generic in not specifying what 'details' means without the schema.

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 alternatives like complete_task, claim_task, or update_epic. There is no mention of prerequisites, conditions, or situations where a different tool 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.

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: task management, epics, notes, dependencies, knowledge, activity, shared context, and plan wiki. A few pairs like add_project_knowledge vs set_shared_context and get_task_details vs get_task_notes could be confused, but their descriptions provide enough clarification.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern in lowercase snake_case (e.g., get_next_task, create_epic, add_working_note, resolve_working_note, post_activity). All verbs clearly indicate the action, and there are no mixed conventions or vague names.

Tool Count2/5

With 28 tools, the server exceeds the 25+ threshold that indicates a heavy, oversized toolset. While each tool serves a distinct function, the sheer number may overwhelm agents and suggests a need for consolidation or sub-servers.

Completeness3/5

The toolset covers a broad lifecycle: task and epic CRUD (though missing delete), notes, dependencies, knowledge, activity, shared context, and plan wiki. Notable gaps include no direct list_tasks tool (only via epics) and no deletion capabilities for tasks or epics, which agents may need.

Maintenance

ActivityInactive
ResponsivenessSyncing

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/PendingSpark/kirahub-mcp'

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