dag-planner-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dag-planner-mcpplan a multi-step project with dependencies and parallel tasks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpPass arguments (e.g. HTTP transport) the same way:
uvx dag-planner-mcp --transport streamable-http --host 0.0.0.0 --port 8000With an environment variable:
DATABASE_URL="sqlite:///dag_planner.db" uvx dag-planner-mcpClaude 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-toolOr install directly from the skill path:
npx skills add https://github.com/Shubhamnegi/dag-planner-mcp/tree/main/skills/use-mcp-toolWhat the skill provides
File | Purpose |
Core instructions — when/how to use the tool | |
Full installation and client integration guide | |
Runnable code examples (parallel tasks, HITL gates, checkpoints) | |
Common failure cases and fixes | |
Quick sanity check — run after install | |
Complete orchestrator example (stdio + HTTP) |
Requirements
Python ≥ 3.11
DATABASE_URLenvironment variable (defaults tosqlite:///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-mcp2. Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # Linux / macOS
.venv\Scripts\activate # Windows3. 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 |
|
| SQLAlchemy connection URL (SQLite or PostgreSQL) |
|
| Host to bind when using HTTP transport |
|
| Port to bind when using HTTP transport |
Running the server
stdio (recommended for Claude Desktop and most MCP clients)
dag-planner-mcp
# or
python -m dag_planner_mcp.serverThe 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 8000The MCP endpoint will be available at:
http://localhost:8000/mcpUsing 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:
Open the Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
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).
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 8000Then point your MCP client at:
http://localhost:8000/mcpExample: 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.pyThe dashboard opens at http://localhost:8501 by default.
DAG visualization requires the
graphvizsystem package in addition to the Python bindings. Install it withbrew install graphviz(macOS) orapt-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 a new workflow run (returns |
| Define the task DAG for a run (validates for cycles) |
| Cancel downstream tasks and graft a new plan branch |
Scheduling
Tool | Description |
| List tasks that are ready and unclaimed |
| Atomically claim a ready task with a time-bounded lease |
State Management
Tool | Description |
| Transition a claimed task to running |
| Mark done; auto-promotes dependent tasks to ready |
| Mark failed with optional retry |
| Block a task awaiting human decision |
| Resume a human-blocked task after decision |
Task I/O
Tool | Description |
| Store working or final output |
| Save an incremental checkpoint |
| Retrieve all payload data for a task |
Query
Tool | Description |
| Full state of a single task |
| List tasks for a run with filters |
| Workflow run state |
| Tasks blocked on human or dependencies |
| All DAG edges for a run |
Validation
Tool | Description |
| Validate output against the task's JSON Schema contract |
| Check a task list for cycles before submitting |
Subagent-safe wrappers
Tool | Description |
| Narrow task view for a subagent |
| Update working output and optional checkpoint |
| Submit final output and complete the task |
| 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/ -vAll tests use an in-memory SQLite database and require no external services.
Available Tools
24 toolsclaim_task_for_executionC
Claim a ready task for exclusive execution.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| executor_id | Yes | ||
| claim_duration_seconds | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| tasks | Yes | ||
| activate | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| session_id | No | ||
| user_id | No | ||
| metadata | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| executor_id | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | ||
| owner_agent | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| include_tasks | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| status | No | ||
| owner_agent | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| question | Yes | ||
| options | No | ||
| requested_by | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| final_output | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| error | No | ||
| retry | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| executor_id | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| checkpoint | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| output | Yes | ||
| is_final | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| anchor_task_id | Yes | ||
| new_tasks | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| question | Yes | ||
| options | No | ||
| requested_by | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| decision | No | ||
| decided_by | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| final_output | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| working_output | Yes | ||
| checkpoint | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| output | No |
TDQS
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.
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.
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.
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.
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.
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.
24 tool updates
v1.0.1- First observed
claim_task_for_execution - First observed
create_plan_graph - First observed
create_workflow_run - First observed
get_blocked_tasks - First observed
get_dag_edges - First observed
get_my_task - First observed
get_ready_tasks - First observed
get_task - First observed
get_task_payload_refs - First observed
get_workflow_run - First observed
list_tasks - First observed
mark_task_blocked_human - First observed
mark_task_completed - First observed
mark_task_failed - First observed
mark_task_running - First observed
put_task_checkpoint - First observed
put_task_output - First observed
replace_plan_branch - First observed
request_human_input - First observed
resume_task - First observed
submit_my_output - First observed
update_my_progress - First observed
validate_dag_acyclic - First observed
validate_task_output
TDQS
Scored across 24 tools
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.
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.
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.
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
Related MCP Connectors
- DazbenchOAuthapp.dazbench
Task management your AI agents can actually run. One line becomes a context-ready task over MCP.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Goal and task planning MCP for Codex and AI agents, with evidence-backed completion.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceServer-enforced workflow discipline for AI agents. An MCP server providing persistent work items, dependency graphs, quality gates, and actor attribution. Schemas define what agents must produce — the server blocks the call if they don't. Works with any MCP-compatible client.205MIT
- AlicenseAqualityCmaintenanceCampaign orchestration MCP server for AI agents — dependency DAGs, parallel fan-out, failure policies, and embedded notes.21GPL 3.0
- FlicenseAqualityBmaintenanceAn agent-native workflow MCP server that enables AI agents to execute text-defined, versionable workflows with checkpointing and state management.107 npm-
- AlicenseNot gradedqualityBmaintenanceA local, model-independent DAG task coordinator for AI coding agents, with a static visual UI, validated state machine, resumable JSON progress, and MCP tools.MIT