Skip to main content
Glama

dag-planner-mcp

A durable DAG-based task planner exposed as an MCP (Model Context Protocol) server. It lets AI orchestrators (Claude, ADK-based agents, etc.) break a goal into a dependency graph of tasks, execute them in parallel where possible, track state durably, and handle human-in-the-loop approval — all through a clean set of 22 MCP tools.


Table of Contents


Related MCP server: sortie-mcp

Quick start with uvx

The fastest way to run the server is with uvx — no virtual environment or pip install needed:

uvx dag-planner-mcp

Pass arguments (e.g. HTTP transport) the same way:

uvx dag-planner-mcp --transport streamable-http --host 0.0.0.0 --port 8000

With an environment variable:

DATABASE_URL="sqlite:///dag_planner.db" uvx dag-planner-mcp

Claude Desktop — one-line config (uvx)

Open claude_desktop_config.json and add:

{
  "mcpServers": {
    "dag-planner-mcp": {
      "command": "uvx",
      "args": ["dag-planner-mcp"],
      "env": {
        "DATABASE_URL": "sqlite:////home/user/data/dag_planner.db"
      }
    }
  }
}

No installation step is required — uvx fetches and caches the package automatically on first run.


Install this skill

AI agents (Claude, Copilot, etc.) can pick up ready-made instructions for using this MCP server by installing the bundled skill:

npx skills add Shubhamnegi/dag-planner-mcp --skill use-mcp-tool

Or install directly from the skill path:

npx skills add https://github.com/Shubhamnegi/dag-planner-mcp/tree/main/skills/use-mcp-tool

What the skill provides

File

Purpose

skills/use-mcp-tool/SKILL.md

Core instructions — when/how to use the tool

skills/use-mcp-tool/references/setup.md

Full installation and client integration guide

skills/use-mcp-tool/references/examples.md

Runnable code examples (parallel tasks, HITL gates, checkpoints)

skills/use-mcp-tool/references/troubleshooting.md

Common failure cases and fixes

skills/use-mcp-tool/scripts/smoke_test.py

Quick sanity check — run after install

skills/use-mcp-tool/scripts/example_client.py

Complete orchestrator example (stdio + HTTP)

Requirements

  • Python ≥ 3.11

  • DATABASE_URL environment variable (defaults to sqlite:///dag_planner.db)


Requirements

Dependency

Version

Python

≥ 3.11

mcp[cli]

≥ 1.6.0

sqlalchemy

≥ 2.0

pydantic

≥ 2.0

jsonschema

≥ 4.0

aiosqlite

≥ 0.19

Optional (PostgreSQL):

Dependency

Version

asyncpg

≥ 0.29

Optional (Dashboard):

Dependency

Version

streamlit

≥ 1.35

graphviz

≥ 0.20

pandas

≥ 2.0


Installation

1. Clone the repository

git clone https://github.com/Shubhamnegi/dag-planner-mcp.git
cd dag-planner-mcp

2. Create and activate a virtual environment

python -m venv .venv
source .venv/bin/activate        # Linux / macOS
.venv\Scripts\activate           # Windows

3. Install the package

SQLite (dev — no extra dependencies):

pip install -e .

PostgreSQL (prod):

pip install -e ".[postgres]"

With development/test dependencies:

pip install -e ".[dev]"

With Streamlit dashboard:

pip install -e ".[dashboard]"

Database Configuration

The server is controlled entirely via the DATABASE_URL environment variable. Tables are created automatically on first start.

SQLite (development)

# Default — creates dag_planner.db in the current directory
export DATABASE_URL="sqlite:///dag_planner.db"

# Absolute path
export DATABASE_URL="sqlite:////home/user/data/dag_planner.db"

# In-memory (testing only — data lost on exit)
export DATABASE_URL="sqlite:///:memory:"

No additional setup is required for SQLite.

PostgreSQL (production)

export DATABASE_URL="postgresql://user:password@localhost:5432/dag_planner"

Create the database first:

CREATE DATABASE dag_planner;

Then start the server — SQLAlchemy will create all tables automatically.

For connection pooling / SSL in production you can pass extra query parameters:

export DATABASE_URL="postgresql://user:password@host:5432/dag_planner?sslmode=require"

Environment Variables

Variable

Default

Description

DATABASE_URL

sqlite:///dag_planner.db

SQLAlchemy connection URL (SQLite or PostgreSQL)

MCP_HOST

127.0.0.1

Host to bind when using HTTP transport

MCP_PORT

8000

Port to bind when using HTTP transport


Running the server

dag-planner-mcp
# or
python -m dag_planner_mcp.server

The server reads from stdin and writes to stdout — no port is opened.

Streamable HTTP

dag-planner-mcp --transport streamable-http --host 0.0.0.0 --port 8000

The MCP endpoint will be available at:

http://localhost:8000/mcp

Using with Claude Desktop (stdio)

The recommended approach is to use uvx so no manual installation is needed (see Quick start with uvx above).

If you prefer to point at a locally installed binary:

  1. Open the Claude Desktop configuration file:

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

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

  2. Add the server under mcpServers:

{
  "mcpServers": {
    "dag-planner-mcp": {
      "command": "/path/to/.venv/bin/dag-planner-mcp",
      "env": {
        "DATABASE_URL": "sqlite:////home/user/data/dag_planner.db"
      }
    }
  }
}

Replace /path/to/.venv/bin/dag-planner-mcp with the absolute path to the installed script (run which dag-planner-mcp after installation).

  1. Restart Claude Desktop. The 22 DAG planner tools will appear in the tools panel.


Using with other MCP clients (streamable HTTP)

Start the server in HTTP mode:

DATABASE_URL="sqlite:///dag_planner.db" \
dag-planner-mcp --transport streamable-http --host 0.0.0.0 --port 8000

Then point your MCP client at:

http://localhost:8000/mcp

Example: Cursor IDE

{
  "mcpServers": {
    "dag-planner-mcp": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Example: Windsurf / Continue / custom agent

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client("http://localhost:8000/mcp") as (r, w, _):
    async with ClientSession(r, w) as session:
        await session.initialize()
        result = await session.call_tool("create_workflow_run", {"goal": "Analyze AWS costs"})

Streamlit Dashboard

A read-only Streamlit dashboard ships in the dashboard/ directory. It reads directly from the same database as the MCP server (via DATABASE_URL) and never writes any data.

Pages

Page

Description

Overview

Summary metric cards, task status bar chart, recent runs

Workflows

Paginated & searchable list of all workflow runs

Run Detail

Per-run deep-dive: task table, interactive DAG graph, event log, human approvals

Task Detail

Full task state including all JSON payloads

Quick start

# Install with dashboard extras
pip install -e ".[dashboard]"

# Point at the same database your MCP server uses
export DATABASE_URL="sqlite:///dag_planner.db"
# — or for PostgreSQL —
export DATABASE_URL="postgresql://user:password@localhost:5432/dag_planner"

# Launch
streamlit run dashboard/app.py

The dashboard opens at http://localhost:8501 by default.

DAG visualization requires the graphviz system package in addition to the Python bindings. Install it with brew install graphviz (macOS) or apt-get install graphviz (Debian/Ubuntu). If the system package is absent the page falls back to a plain adjacency table.


Available MCP Tools

Planning

Tool

Description

create_workflow_run

Create a new workflow run (returns run_id)

create_plan_graph

Define the task DAG for a run (validates for cycles)

replace_plan_branch

Cancel downstream tasks and graft a new plan branch

Scheduling

Tool

Description

get_ready_tasks

List tasks that are ready and unclaimed

claim_task_for_execution

Atomically claim a ready task with a time-bounded lease

State Management

Tool

Description

mark_task_running

Transition a claimed task to running

mark_task_completed

Mark done; auto-promotes dependent tasks to ready

mark_task_failed

Mark failed with optional retry

mark_task_blocked_human

Block a task awaiting human decision

resume_task

Resume a human-blocked task after decision

Task I/O

Tool

Description

put_task_output

Store working or final output

put_task_checkpoint

Save an incremental checkpoint

get_task_payload_refs

Retrieve all payload data for a task

Query

Tool

Description

get_task

Full state of a single task

list_tasks

List tasks for a run with filters

get_workflow_run

Workflow run state

get_blocked_tasks

Tasks blocked on human or dependencies

get_dag_edges

All DAG edges for a run

Validation

Tool

Description

validate_task_output

Validate output against the task's JSON Schema contract

validate_dag_acyclic

Check a task list for cycles before submitting

Subagent-safe wrappers

Tool

Description

get_my_task

Narrow task view for a subagent

update_my_progress

Update working output and optional checkpoint

submit_my_output

Submit final output and complete the task

request_human_input

Block task and request a human decision


Orchestrator Loop Example

import json
from mcp import ClientSession
from mcp.client.stdio import stdio_client

async def run():
    async with stdio_client(["dag-planner-mcp"]) as (r, w):
        async with ClientSession(r, w) as session:
            await session.initialize()

            # 1. Create a workflow
            res = await session.call_tool("create_workflow_run", {
                "goal": "Analyze AWS cost spike and send report"
            })
            run_id = json.loads(res.content[0].text)["data"]["run_id"]

            # 2. Define the task DAG
            await session.call_tool("create_plan_graph", {
                "run_id": run_id,
                "tasks": [
                    {
                        "task_key": "fetch_data",
                        "title": "Fetch cost data",
                        "description": "Pull last 3 weeks of AWS cost data",
                        "owner_agent": "data_agent",
                        "depends_on": [],
                        "output_contract": {"type": "object", "required": ["cost_data"]}
                    },
                    {
                        "task_key": "analyze",
                        "title": "Analyze spike",
                        "description": "Identify top services causing the spike",
                        "owner_agent": "analyst_agent",
                        "depends_on": ["fetch_data"],
                        "output_contract": {"type": "object", "required": ["summary"]}
                    }
                ]
            })

            # 3. Execution loop
            while True:
                res = await session.call_tool("get_ready_tasks", {"run_id": run_id})
                tasks = json.loads(res.content[0].text)["data"]["tasks"]

                if not tasks:
                    break  # All done (or blocked)

                for task in tasks:
                    task_id = task["task_id"]
                    await session.call_tool("claim_task_for_execution", {
                        "task_id": task_id, "executor_id": "orchestrator-1"
                    })
                    await session.call_tool("mark_task_running", {"task_id": task_id})

                    # ... dispatch to subagent, collect result ...
                    output = {"summary": "EC2 caused 40% increase"}

                    await session.call_tool("put_task_output", {
                        "task_id": task_id, "output": output, "is_final": True
                    })
                    await session.call_tool("validate_task_output", {"task_id": task_id})
                    await session.call_tool("mark_task_completed", {
                        "task_id": task_id, "final_output": output
                    })

Running Tests

pip install -e ".[dev]"
pytest tests/ -v

All tests use an in-memory SQLite database and require no external services.

Available Tools

24 tools
claim_task_for_executionC

Claim a ready task for exclusive execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
executor_idYes
claim_duration_secondsNo

TDQS

C2.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 transparency burden. It states 'exclusive execution' but does not explain behavioral traits like lock duration, timeout, or what happens if the claim fails. The agent lacks critical behavioral context.

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

Conciseness3/5

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

The description is very concise (one sentence), but conciseness should not sacrifice necessary detail. It is not verbose, but the brevity leads to under-specification. A single sentence is appropriate if it packs more value.

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

Completeness2/5

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

Given the tool's complexity (claim with exclusive lock, three parameters, no output schema), the description is incomplete. It lacks details on return values, side effects, and parameter usage, making it insufficient for an agent to invoke correctly without external knowledge.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to parameters like task_id, executor_id, or claim_duration_seconds. The default for claim_duration_seconds is in the schema but not explained. The description must compensate for low coverage but fails to do so.

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 'Claim a ready task for exclusive execution' clearly states the specific action (claim) and the resource (ready task), distinguishing it from sibling tools like get_ready_tasks (listing) and mark_task_running (status update). However, it could be more explicit about the exclusivity mechanism.

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 after fetching a ready task via get_ready_tasks or before marking it running. There is no mention of prerequisites or exclusions, leaving the agent to infer usage context.

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

create_plan_graphC

Create a plan graph (DAG of tasks) for an existing run.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
tasksYes
activateNo

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether it overwrites an existing graph, idempotency, or side effects. The agent is left without critical behavioral context.

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

Conciseness2/5

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

The description is a single sentence, which is concise, but it lacks essential details. Conciseness should not sacrifice completeness; here it is underspecified.

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

Completeness1/5

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

Given the tool's complexity (creating a DAG), the description is inadequate. It does not cover return values, error conditions, or the effect of the operation, leaving major gaps for an agent.

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

Parameters1/5

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

With 0% schema description coverage, the description must explain parameters but does not mention 'run_id', 'tasks', or 'activate'. The agent gets no information about the format of 'tasks' or the meaning of 'activate'.

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 creates a plan graph (DAG of tasks) for an existing run, specifying both the action and the target resource. It is distinct from sibling tools like 'replace_plan_branch' or 'validate_dag_acyclic'.

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 on when to use this tool versus alternatives, nor any prerequisites (e.g., run must exist) or conditions for use. The description lacks context for appropriate invocation.

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

create_workflow_runC

Create a new workflow run in draft status.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYes
session_idNo
user_idNo
metadataNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only says 'in draft status' but does not explain what 'draft' entails (e.g., not executed, requires further action), nor any side effects, permissions needed, or error conditions.

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

Conciseness2/5

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

The description is extremely short (one sentence) but omits critical information. Conciseness is not effective when it sacrifices clarity and completeness for the agent.

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

Completeness1/5

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

Given 4 parameters (1 required), no output schema, and no annotations, the description is grossly insufficient. It fails to specify what the parameters mean, what a 'draft' workflow run implies, or how to use the result.

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

Parameters1/5

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

Schema coverage is 0%, so the description must add meaning to the parameters. It does not explain any of the four parameters (goal, session_id, user_id, metadata), leaving the agent without guidance on how to fill them correctly, especially the 'goal' which is required.

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 verb 'Create' and the resource 'new workflow run', and specifies the result is in 'draft status', which distinguishes it from sibling tools like 'get_workflow_run' that retrieve existing runs.

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. There is no mention of prerequisites, typical workflow sequences, or when to avoid using it (e.g., if a run already exists).

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

get_blocked_tasksB

Return all blocked tasks for a run.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and description only states the action without disclosing any behavioral traits (e.g., side effects, authentication, or what 'blocked' means). Minimal transparency.

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?

Single sentence, no fluff; efficient but could be slightly expanded with key context without losing conciseness.

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 simple tool with 1 param and no output schema, description omits return shape, error conditions, and what constitutes a blocked task, leaving the agent underinformed.

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

Parameters2/5

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

Schema coverage is 0%, and description adds no extra meaning to the run_id parameter beyond its name. A 0% coverage baseline would require more compensation.

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?

Description clearly states the action ('Return all'), resource ('blocked tasks'), and scope ('for a run'), differentiating from siblings like get_ready_tasks or list_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?

No explicit guidance on when to use vs alternatives, but the context of run_id implies use for a specific run's blocked tasks; no when-not or exclusions.

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

get_dag_edgesC

Return all DAG edges for a run.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes

TDQS

C2.8/5.0
Behavior2/5

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

Without any annotations, the description carries the full burden for behavioral disclosure. It only says 'Return all DAG edges', which implies a read operation, but it does not state whether it is read-only, safe, or requires specific permissions. No additional behaviors (e.g., pagination, ordering) are mentioned.

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 sentence that is concise and free of filler. While it could include more details, it is appropriately short 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?

For a simple tool with one parameter and no output schema, the description covers the basic action of returning DAG edges. However, it does not specify what information the edges contain or how they are structured, making it just minimally complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it does not. The sole parameter 'run_id' is not described beyond its name and type in the schema. The description only vaguely says 'for a run', adding no semantic value.

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 'Return all DAG edges for a run' clearly states the verb (Return) and resource (DAG edges) with scope ('for a run'), making the purpose obvious. It distinguishes from sibling tools like 'get_workflow_run' or 'get_task' which operate on different entities, though it does not explicitly differentiate itself.

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 when a user should call it instead of 'validate_dag_acyclic' or other DAG-related tools. The description lacks 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_my_taskC

Get task details from the executing agent's perspective.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
executor_idNo

TDQS

C2.7/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 full burden for behavioral disclosure. It only states 'Get task details' with no mention of read-only nature, error handling, authentication requirements, or what constitutes 'executing agent's perspective'.

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 a single sentence, making it concise, but it is too minimal and lacks critical details. It front-loads the purpose but sacrifices completeness.

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 absence of parameter descriptions, output schema, and annotations, the description is incomplete. It does not explain what 'executing agent's perspective' means or what the output contains.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no information about the two parameters (task_id, executor_id). The agent must infer their meaning solely from parameter names and types, which is insufficient.

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 verb 'Get' and resource 'task details', and specifies the scope 'from the executing agent's perspective', which distinguishes it from the sibling tool 'get_task' that likely returns any 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?

No guidance is provided on when to use this tool vs alternatives like 'get_task'. The description does not mention prerequisites, when-not-to-use, or alternative tools.

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

get_ready_tasksC

Return tasks that are ready and not currently claimed.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idNo
owner_agentNo
limitNo

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are present, so the description must carry full burden. It only states the filtering condition but does not disclose that the operation is read-only, whether it requires authentication, or what happens when no tasks match. This is severely lacking.

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

Conciseness2/5

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

While the description is one sentence, it is under-specified. It sacrifices essential details for brevity, making it not concise but incomplete. Every sentence should add value, and here critical information is missing.

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

Completeness1/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 parameter descriptions, the description fails to provide sufficient context for the agent to correctly invoke the tool. It does not cover return format, filtering behavior, or edge cases.

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

Parameters1/5

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

Schema description coverage is 0%; the description never explains the three parameters (run_id, owner_agent, limit). The agent has no information beyond parameter names to understand their semantics or usage.

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 returns tasks that are ready and not currently claimed. It uses a specific verb ('Return') and resource ('tasks') with a clear filter. However, it does not contrast with siblings like get_blocked_tasks or list_tasks, so it's not 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 guidance on when to use this tool vs alternatives such as get_blocked_tasks or list_tasks. No prerequisites or context provided.

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

get_taskC

Return full state of a single task.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only states it returns the full state, omitting details on read-only nature, error handling, lack of results, or any side effects. This is minimal disclosure for a retrieval operation.

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 a single concise sentence, but it sacrifices necessary detail. While front-loaded, it is undersized for the complexity of the tool and its siblings, leaving gaps in guidance.

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

Completeness2/5

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

Given the tool's simplicity, the description still lacks important context. It does not explain what 'full state' includes, how errors are handled, or any prerequisites. With many siblings, more completeness is needed to avoid confusion.

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

Parameters1/5

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

The schema has 0% description coverage for the single parameter task_id, and the description adds no information about it. The parameter name is self-explanatory, but the description does not clarify its format, source, or how to obtain valid IDs.

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 returns the full state of a single task, specifying the verb and resource. However, it does not distinguish itself from siblings like get_my_task or get_blocked_tasks, which have similar but distinct purposes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not include any when-to-use, when-not-to-use, or explicit comparisons to sibling tools, leaving the agent without direction.

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

get_task_payload_refsB

Retrieve all payload data (input, output, checkpoint, contract) for a task.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description alone must disclose behavior. It indicates a read operation but lacks details on performance implications, data volume, or whether payloads are references or full objects.

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

Conciseness5/5

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

Single sentence, no redundancy. Clearly communicates the core function without extraneous text.

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

Completeness2/5

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

With no annotations, no output schema, and sparse parameter info, the description fails to fully equip an agent for correct invocation. Missing details on return type, constraints, and side effects.

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

Parameters2/5

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

Schema description coverage is 0%, and description does not elaborate on the task_id parameter beyond restating 'for a task'. No format, constraints, or examples provided.

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?

Description clearly states verb 'Retrieve' and resource 'payload data (input, output, checkpoint, contract)' for a task. Differentiates from siblings like get_task and list_tasks which handle metadata or task listings.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, context, or relationships to sibling tools like get_task or get_workflow_run.

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

get_workflow_runC

Return workflow run state.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
include_tasksNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits like whether it is a read-only operation, requires authentication, or has side effects. 'Return' implies read, but this is not explicit.

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 wasted words, perfectly front-loaded with essential information.

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

Completeness2/5

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

Given the tool's simplicity, the description is too brief. It lacks details on what 'run state' encompasses, how include_tasks affects results, and expected return format. More context is needed for adequate completeness.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain parameters. 'run_id' is somewhat self-explanatory, but 'include_tasks' needs clarification on what it includes or how it affects output.

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 returns workflow run state, which is a specific action on a specific resource. It distinguishes from sibling tools like create_workflow_run (which creates) and get_task (which retrieves a task). However, it could be more precise about what 'state' includes.

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. Given sibling tools like get_task or get_ready_tasks, the lack of context reduces usability.

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

list_tasksC

List tasks for a run with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
statusNo
owner_agentNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, and the description lacks behavioral details such as pagination, ordering, default limit (100 is in schema but not mentioned), or error handling for invalid run_id. It simply says 'list tasks' without disclosing behavior beyond the basic function.

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 (9 words) but under-specified. It is front-loaded but lacks necessary details that would make it useful for an AI agent. It earns its place but does not achieve conciseness with completeness.

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 4 parameters, no output schema, and a list operation, the description is incomplete. It fails to mention return format, pagination, ordering, or interaction with sibling tools. A more complete description would cover these aspects.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must add meaning. It only says 'optional filters' without explaining what each filter does or providing context like allowed values or format. Parameter names (status, owner_agent, limit) are self-explanatory but the description adds no additional 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 'List tasks for a run with optional filters', specifying the verb (list), resource (tasks), scope (for a run), and filtering capability. It distinguishes from siblings like 'get_task' (single task) and 'get_ready_tasks' (specific status filter).

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 on when to use this tool vs alternatives (e.g., get_ready_tasks, get_blocked_tasks). The phrase 'optional filters' is vague and does not help the agent decide between this and other filtered task listing tools.

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

mark_task_blocked_humanC

Block a task pending human approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
questionYes
optionsNo
requested_byNo

TDQS

C2.6/5.0
Behavior2/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. It discloses that the tool blocks a task pending approval, but it omits details about side effects, reversibility, state prerequisites, or permissions. 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.

Conciseness4/5

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

The description is a single, succinct sentence that gets to the point. However, it could be slightly more structured to hint at parameter usage without losing conciseness.

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 4 parameters, no annotations, and no output schema, the description is too minimal. It lacks details on how blocking relates to human approval, what happens after, and how the parameters are used.

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

Parameters1/5

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

The schema has 0% description coverage, and the tool description does not explain any of the 4 parameters (task_id, question, options, requested_by). The description adds no value beyond the schema's raw names and types.

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

Purpose4/5

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

The description clearly states the action ('block a task') and the reason ('pending human approval'), which distinguishes it from sibling tools like mark_task_completed or mark_task_failed. However, it could be more specific about the status change.

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 request_human_input, resume_task, or get_blocked_tasks. No context about prerequisites or best practices is given.

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

mark_task_completedB

Mark a task completed and activate dependent tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
final_outputNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the activation of dependent tasks, but lacks details on side effects (e.g., idempotency, error handling, or whether the action is reversible). This is adequate but not comprehensive.

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 at one sentence. While it lacks structure like bullet points, every word is necessary to convey the core action. It is appropriately sized but could benefit from additional detail.

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 presence of 23 sibling tools, two parameters (one optional nested object), and no output schema, the description is too minimal. It omits context about the 'final_output' parameter, return values, and when to choose this tool over others.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not explain the parameters. 'task_id' is implied but not clarified, and 'final_output' (a nested object) is completely undocumented. The description fails to add any meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'mark' and the resource 'task completed', and specifies the effect 'activate dependent tasks'. It also distinguishes the tool from siblings like 'mark_task_failed' or 'mark_task_blocked_human' by indicating a positive completion action.

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 on when to use this tool versus alternatives such as 'submit_my_output' or 'mark_task_failed'. There is no mention of prerequisites (e.g., task must be running) or when not to use it.

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

mark_task_failedC

Mark a task failed, with optional retry logic.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
errorNo
retryNo

TDQS

C2.6/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 fails to explain side effects of failure marking, retry behavior, permissions required, or irreversibility, leaving significant gaps for an agent.

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 short and front-loaded, but its conciseness comes at the cost of omitting essential details. It is acceptable in structure but not sufficiently informative.

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 complexity of task state management with 3 parameters (including a nested object) and no annotations or output schema, the description is incomplete. It lacks critical context on retry logic and error format, hindering correct tool usage.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no meaning beyond parameter names. The 'error' object and 'retry' boolean are not explained, forcing the agent to infer their structure and behavior.

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 indicates the tool marks a task as failed, distinguishing it from completion or running states. However, it does not explicitly differentiate from other failure-related states like blocked, which is present in sibling tools.

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

Usage 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 mark_task_completed or mark_task_blocked_human. The mention of optional retry logic hints at a use case but does not specify conditions or alternatives.

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

mark_task_runningC

Transition a task to running status.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
executor_idNo

TDQS

C2.6/5.0
Behavior2/5

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

Minimal description; no annotations. Does not disclose side effects, authorization, or state change consequences beyond the stated transition.

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?

Single sentence, efficient but under-specified. Lacks necessary details for a tool with no annotations.

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

Completeness1/5

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

With 23 sibling tools, no output schema, and no annotations, the description fails to provide sufficient context for correct invocation.

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

Parameters1/5

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

No parameter descriptions. Schema has 0% coverage. executor_id default is null but not explained when/why to use it.

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

Purpose5/5

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

Clear verb+resource: 'Transition a task to running status.' Differentiates from siblings like mark_task_completed, mark_task_failed.

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 on when to use vs alternatives. Siblings include claim_task_for_execution and resume_task, but prerequisites or ordering are absent.

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

put_task_checkpointC

Save a checkpoint for a running task.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
checkpointYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states 'Save a checkpoint' but doesn't mention idempotency, overwrite behavior, or required task state for a potentially destructive operation.

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 single sentence is concise but underinformative, lacking essential details despite being brief.

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 output schema and nested object parameter, the description fails to provide return value, side effects, or behavioral context, making it insufficient for an agent to use safely.

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

Parameters1/5

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

Schema coverage is 0%, yet the description adds no meaning to parameters. It doesn't explain what task_id format is expected or what structure the checkpoint object should have.

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 verb 'Save' and the resource 'checkpoint for a running task', distinguishing it from siblings like put_task_output or mark_task_completed.

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 on when to use this tool versus alternatives, no prerequisites, and no context on when not to use it. The description is too generic.

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

put_task_outputC

Store working or final output for a task.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
outputYes
is_finalNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations present, the description must fully disclose behavioral traits, but it only says 'store output.' It does not address whether the tool overwrites existing output, requires specific permissions, triggers side effects (like sending notifications), or handles errors. The is_final parameter implies a state change, but its exact impact is unexplained. The description is too terse to provide adequate transparency for a write operation.

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 exceptionally concise at seven words and front-loads the key verb and resource. However, the brevity sacrifices informative detail that would be helpful for correctness. It is not verbose, but could benefit from one or two additional sentences without losing conciseness.

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 three parameters, a nested object, and no output schema, the description is too sparse. It does not explain the structure of the output object, how is_final interacts with task lifecycle, or what happens on success/failure. Compared to more descriptive sibling tool descriptions (e.g., mark_task_completed, which likely includes side effects), this one leaves significant gaps for an agent to navigate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it does not map its 'working or final output' language to the parameters. It does not clarify that 'output' is a JSON object, nor explain that 'is_final' controls whether the output is considered final or intermediate. The parameter names are self-explanatory only to a limited extent, and the description adds no extra meaning beyond those names.

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

Purpose4/5

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

The description states 'Store working or final output for a task,' clearly identifying the verb (store) and resource (output for a task). It distinguishes between two modes (working or final) via the is_final parameter, which helps differentiate from similar siblings like submit_my_output or validate_task_output. However, it does not elaborate on what constitutes valid output, so it is slightly less specific than ideal.

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 submit_my_output, mark_task_completed, or validate_task_output. There is no mention of prerequisites, ordering (e.g., should this be called before marking completed), or scenarios where it should be avoided. This leaves the agent to infer usage context entirely from the tool name and siblings.

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

replace_plan_branchC

Cancel downstream tasks from anchor and replace with new tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
anchor_task_idYes
new_tasksYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided. Description states cancel and replace actions but lacks details on destructiveness, side effects, or reversibility. For a mutation tool, more transparency is needed.

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

Conciseness3/5

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

Single sentence, concise but borderline under-specified. Could include more details without losing brevity.

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

Completeness1/5

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

No output schema, no annotations, no parameter guidance, and no usage context. For a tool with three required parameters in a workflow context, this is severely incomplete.

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

Parameters1/5

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

Schema description coverage is 0%. Description does not explain any of the three parameters (run_id, anchor_task_id, new_tasks), leaving the agent to guess their meaning and constraints.

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?

Description clearly states the action: cancel downstream tasks from an anchor and replace with new tasks. It is specific enough to distinguish from siblings, though not explicit about 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 on when to use this tool versus alternatives like 'create_plan_graph' or 'resume_task'. No context about prerequisites or conditions.

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

request_human_inputB

Request human input, blocking the task until decided.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
questionYes
optionsNo
requested_byNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses blocking behavior but omits details on resolution, side effects, or how input is received. Minimal extra value beyond the name.

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-loading the core function. However, it may be too brief given the lack of parameter explanations, slightly reducing efficiency.

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 output schema, moderate complexity with 4 parameters, and many sibling tools. The description lacks details on return behavior, parameter usage, and post-request flow, making it incomplete for reliable invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any parameter (task_id, question, options, requested_by). The names are partially self-explanatory but the description fails to add meaning, leaving ambiguity.

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 action ('request human input') and its blocking behavior. It distinguishes from sibling tools that manage task states (e.g., mark_task_completed) by focusing on external input.

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 human decision is needed but provides no guidance on alternatives or when not to use. Sibling tools like mark_task_blocked_human exist but no comparison is given.

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

resume_taskC

Resume a blocked task after human decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
decisionNo
decided_byNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'resume a blocked task' without detailing side effects, required state, or return behavior. Critical context about task lifecycle transitions is missing.

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 concise at one sentence, but it sacrifices necessary detail. While front-loaded, it does not earn its place fully due to missing essential information.

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 complexity (3 params, nested object, no output schema), the description is incomplete. It does not explain the decision object, whether the tool requires specific prior state, or how errors are handled. Sibling tools imply a broader workflow, but this description alone is insufficient.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the parameters. The 'decision' object is left completely ambiguous despite being complex. The description does not explain how task_id, decision, or decided_by should be used.

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 specifies the verb 'resume' and the resource 'blocked task' after human decision. It effectively distinguishes from sibling tools like 'mark_task_blocked_human' which blocks tasks, and 'request_human_input' which requests decisions.

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 states 'after human decision' but does not specify prerequisites, context, or when not to use it. No comparison with sibling tools is given.

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

submit_my_outputC

Submit final output and mark task completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
final_outputYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond the basic action. It fails to mention state prerequisites, irreversibility, or other side effects.

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

Conciseness3/5

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

The description is very short and front-loaded, but it sacrifices completeness for brevity. It is not overly verbose, but fails to provide necessary detail.

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 complexity of sibling tools and lack of output schema, the description is insufficient. It does not explain return values or side effects, leaving the agent without critical context.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the parameters. The 'final_output' parameter is an untyped object with no guidance on expected structure.

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's action: submit output and mark task completed. However, it does not distinguish itself from sibling tools like 'mark_task_completed' or 'put_task_output', which could lead to confusion.

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. Given the many sibling tools, this is a significant gap.

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

update_my_progressC

Update working output and optionally checkpoint progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
working_outputYes
checkpointNo

TDQS

C2.6/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 'update' implying mutation, but does not clarify side effects, permissions, or what happens to existing data. No contradictions with annotations exist because there are none.

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 a single sentence, which is concise but sacrifices necessary detail. It is not overly verbose, but could be more informative while remaining 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 absence of annotations and output schema, and the presence of many sibling tools for similar operations, the description is incomplete. It does not clarify that this is for the user's own progress, nor does it explain the relationship to other update tools.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds minimal meaning beyond naming 'working output' and 'checkpoint'. The required 'task_id' is not explained, and the structure of the object parameters is not hinted. The description fails to compensate for the lack of schema descriptions.

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 'update' and identifies the resources: 'working output' and 'checkpoint progress'. However, it does not differentiate from sibling tools like 'put_task_output' and 'put_task_checkpoint', which perform similar updates. The purpose is clear but not uniquely distinguished.

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 'put_task_output' or 'put_task_checkpoint'. The agent receives no context about prerequisites or conditions for use.

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

validate_dag_acyclicC

Validate that a task list forms an acyclic DAG.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations and description omits behavioral details like read-only nature, error handling when cycles are found, or side effects.

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

Conciseness3/5

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

A single sentence is concise but lacks detail; it does not fully exploit the description space for clarity.

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

Completeness2/5

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

With no output schema, no annotations, and a vague parameter type, the description is insufficient for an agent to understand input format or expected output.

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

Parameters2/5

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

The single parameter 'tasks' has a generic array type with no schema description; the description does not explain the expected item structure (e.g., id, dependencies).

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 validates that a task list forms an acyclic DAG, but 'task list' is vague; could be more specific about the input structure.

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 on when to use this tool versus alternatives like get_dag_edges or create_plan_graph. Missing when-not or prerequisites.

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

validate_task_outputC

Validate a task's output against its JSON Schema contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
outputNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It only says 'validate' without disclosing whether it mutates state, returns pass/fail, or what happens on failure. Behavioral details are lacking.

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 (8 words) with no filler, but it omits crucial details. While efficient, it sacrifices completeness for brevity.

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

Completeness1/5

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

Given the lack of output schema and annotations, the description is incomplete. It doesn't explain return values, error handling, or prerequisites (e.g., existence of task schema).

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no parameter details. It neither explains the shape of output (object with additionalProperties) nor clarifies the role of task_id beyond its name.

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 (validate) and the object (task output against its JSON Schema contract). It distinguishes from siblings like put_task_output and submit_my_output, which do not perform validation.

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

Usage Guidelines2/5

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

The description does not specify when to use this tool versus alternatives (e.g., after generating output before submitting). No exclusions or prerequisites are mentioned.

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

Tool Schema Changelog

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

  1. 24 tool updatesv1.0.1
    • First observedclaim_task_for_execution
    • First observedcreate_plan_graph
    • First observedcreate_workflow_run
    • First observedget_blocked_tasks
    • First observedget_dag_edges
    • First observedget_my_task
    • First observedget_ready_tasks
    • First observedget_task
    • First observedget_task_payload_refs
    • First observedget_workflow_run
    • First observedlist_tasks
    • First observedmark_task_blocked_human
    • First observedmark_task_completed
    • First observedmark_task_failed
    • First observedmark_task_running
    • First observedput_task_checkpoint
    • First observedput_task_output
    • First observedreplace_plan_branch
    • First observedrequest_human_input
    • First observedresume_task
    • First observedsubmit_my_output
    • First observedupdate_my_progress
    • First observedvalidate_dag_acyclic
    • First observedvalidate_task_output

TDQS

B3/5.0

Scored across 24 tools

Disambiguation5/5

Each tool targets a distinct action or resource, with descriptions clearly differentiating between agent-specific and system operations. Even conceptually similar tools like mark_task_blocked_human and request_human_input serve separate purposes (blocking vs. input request). No ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case, with verbs like claim, create, get, list, mark, put, replace, request, resume, submit, update, validate. The naming is predictable and easy to navigate.

Tool Count4/5

24 tools is on the higher side but reasonable for a DAG planner covering run management, task lifecycle, payloads, human-in-the-loop, and validation. Each tool has a distinct role, and the scope justifies the count without overwhelming.

Completeness4/5

The tool set covers the full lifecycle of creating runs, plans, and managing tasks with state transitions, checkpoints, and human interaction. Minor gaps exist such as no explicit delete or cancel run tool, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers