MCP TaskManager
The MCP TaskManager is a serverless task management system designed for AI assistants to handle complex multi-step workflows with built-in user approval mechanisms. With this server, you can:
Break down complex tasks into manageable sub-tasks using
request_planningTrack progress via
get_next_taskand progress tablesMark tasks as completed with
mark_task_doneRequire user approval for completed tasks and entire requests
Inspect task details and list all requests
Add, update, or delete tasks within existing requests
Persistently store task data using Cloudflare KV
Interact through a RESTful API compliant with the Model Context Protocol
Support cross-origin requests (CORS) for web integration
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., "@MCP TaskManagerplan a blog post about AI ethics with research, outline, and writing 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.
MCP Task Manager
A Model Context Protocol (MCP) server for comprehensive task management, deployed as a Cloudflare Worker. This open-source project enables AI assistants to plan, track, and manage complex multi-step requests efficiently with persistent storage using Cloudflare KV.
π Features
Request Planning: Break down complex requests into manageable tasks
Task Management: Create, update, delete, and track task progress
Approval Workflow: Built-in approval system for task and request completion
Progress Tracking: Visual progress tables and detailed task information
Persistent Storage: Uses Cloudflare KV for reliable data persistence
Serverless Architecture: Deployed as a Cloudflare Worker for global availability
RESTful API: HTTP endpoints for easy integration with any application
CORS Support: Cross-origin requests enabled for web applications
Related MCP server: MCP Development Server
π¦ Deployment
Prerequisites
Cloudflare account (free tier works)
Wrangler CLI installed
Node.js 18+ and npm/pnpm/yarn
Git for cloning the repository
Quick Start
Clone and setup the repository
git clone https://github.com/Rudra-ravi/mcp-taskmanager.git cd mcp-taskmanager npm installLogin to Cloudflare
npx wrangler loginThis will open your browser to authenticate with Cloudflare.
Create KV namespace
npx wrangler kv namespace create "TASKMANAGER_KV"Copy the namespace ID from the output.
Update configuration Edit
wrangler.tomland replace the KV namespace ID:[[kv_namespaces]] binding = "TASKMANAGER_KV" id = "your-new-kv-namespace-id-here"Build and deploy
npm run build npx wrangler deploy
Your MCP Task Manager will be deployed and accessible at:
https://mcp-taskmanager.your-subdomain.workers.dev
Advanced Configuration
Custom Worker Name
To deploy with a custom name, update wrangler.toml:
name = "my-custom-taskmanager" # Change this to your preferred name
main = "worker.ts"
compatibility_date = "2024-03-12"
[build]
command = "npm run build"
[[kv_namespaces]]
binding = "TASKMANAGER_KV"
id = "your-kv-namespace-id-here"Environment Variables
For different environments (development, staging, production):
[env.staging]
name = "mcp-taskmanager-staging"
[[env.staging.kv_namespaces]]
binding = "TASKMANAGER_KV"
id = "staging-kv-namespace-id"
[env.production]
name = "mcp-taskmanager-prod"
[[env.production.kv_namespaces]]
binding = "TASKMANAGER_KV"
id = "production-kv-namespace-id"Deploy to specific environments:
npx wrangler deploy --env staging
npx wrangler deploy --env productionπ§ Usage
API Endpoints
The deployed worker provides two main endpoints:
POST /list-tools- Get available MCP toolsPOST /call-tool- Execute MCP tool functions
Testing Your Deployment
After deployment, test your worker with curl:
# Replace with your actual worker URL
WORKER_URL="https://mcp-taskmanager.your-subdomain.workers.dev"
# Test list tools
curl -X POST $WORKER_URL/list-tools \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
# Test creating a request
curl -X POST $WORKER_URL/call-tool \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "request_planning",
"arguments": {
"originalRequest": "Test deployment",
"tasks": [{"title": "Test task", "description": "Verify deployment works"}]
}
}
}'Available Tools
π Core Task Management
request_planning- Register a new user request and plan its associated tasksget_next_task- Get the next pending task for a requestmark_task_done- Mark a task as completed with optional detailsapprove_task_completion- Approve a completed taskapprove_request_completion- Approve the completion of an entire request
βοΈ Task Operations
add_tasks_to_request- Add new tasks to an existing requestupdate_task- Update task title or description (only for pending tasks)delete_task- Remove a task from a requestopen_task_details- Get detailed information about a specific task
π Information & Monitoring
list_requests- List all requests with their current status and progress
Example API Calls
List Available Tools
curl -X POST https://your-worker.your-subdomain.workers.dev/list-tools \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'Plan a New Request
curl -X POST https://your-worker.your-subdomain.workers.dev/call-tool \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "request_planning",
"arguments": {
"originalRequest": "Build a web application for task management",
"splitDetails": "Breaking down into frontend, backend, and deployment tasks",
"tasks": [
{
"title": "Setup React frontend",
"description": "Initialize React app with TypeScript and essential dependencies"
},
{
"title": "Create backend API",
"description": "Build REST API with Node.js and Express"
},
{
"title": "Deploy application",
"description": "Deploy to cloud platform with CI/CD pipeline"
}
]
}
}
}'π Data Model
Task Structure
interface Task {
id: string; // Unique task identifier (e.g., "task-1")
title: string; // Task title
description: string; // Detailed task description
done: boolean; // Whether task is marked as done
approved: boolean; // Whether task completion is approved
completedDetails: string; // Details provided when marking task as done
}Request Structure
interface RequestEntry {
requestId: string; // Unique request identifier (e.g., "req-1")
originalRequest: string; // Original user request description
splitDetails: string; // Details about how request was split into tasks
tasks: Task[]; // Array of tasks for this request
completed: boolean; // Whether entire request is completed
}Task Status Flow
β Pending β β³ Done (awaiting approval) β β
ApprovedTasks can only be updated when in "Pending" status. Once marked as done or approved, they become read-only.
π οΈ Development
Local Development
# Install dependencies
npm install
# Build the project
npm run build
# Start local development server (with remote KV)
npx wrangler dev
# Start local development server (with local KV for testing)
npx wrangler dev --local
# Deploy to preview environment
npx wrangler deploy --env previewTesting
# Test the build
npm run build
# Test deployment (dry run - shows what would be deployed)
npx wrangler deploy --dry-run
# Run local tests
npm test # If you add tests
# Test with local KV storage
npx wrangler dev --localDebugging
View real-time logs:
# Tail logs from deployed worker
npx wrangler tail
# Tail logs with filtering
npx wrangler tail --format prettyKV Data Management
# List all keys in your KV namespace
npx wrangler kv:key list --binding TASKMANAGER_KV
# Get a specific key value
npx wrangler kv:key get "tasks" --binding TASKMANAGER_KV
# Delete all data (be careful!)
npx wrangler kv:key delete "tasks" --binding TASKMANAGER_KVποΈ Architecture
The MCP Task Manager is built as a Cloudflare Worker with the following components:
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β AI Assistant βββββΆβ Cloudflare βββββΆβ Cloudflare KV β
β (Claude, etc) β β Worker β β Storage β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β TaskManagerServerβ
β (Business Logic) β
ββββββββββββββββββββComponents
TaskManagerServer Class: Core business logic for task management
Worker Interface: HTTP endpoints for MCP protocol communication
Cloudflare KV Storage: Persistent data storage for tasks and requests
MCP Protocol: Standard Model Context Protocol for AI assistant integration
CORS Support: Enables web application integration
Benefits
Global Edge Deployment: Low latency worldwide via Cloudflare's network
Serverless: No server management, automatic scaling
Persistent Storage: Data survives across deployments
Cost Effective: Cloudflare's generous free tier
High Availability: Built-in redundancy and failover
π Monitoring and Logs
Cloudflare Dashboard
View logs and metrics in the Cloudflare Dashboard:
Go to Cloudflare Dashboard
Navigate to Workers & Pages
Select your
mcp-taskmanagerworkerView logs, metrics, and analytics
Real-time Monitoring
# View live logs
npx wrangler tail
# View formatted logs
npx wrangler tail --format pretty
# Filter logs by status
npx wrangler tail --status errorKey Metrics to Monitor
Request Volume: Number of API calls
Response Times: Latency of operations
Error Rates: Failed requests and their causes
KV Operations: Storage read/write performance
Memory Usage: Worker memory consumption
Troubleshooting Common Issues
Issue | Cause | Solution |
500 Internal Server Error | KV namespace not found | Check KV namespace ID in wrangler.toml |
CORS errors | Missing headers | Verify CORS headers in worker.ts |
Task not found | Invalid task/request ID | Check ID format and existence |
Build failures | TypeScript errors | Run |
π€ Contributing
We welcome contributions! Here's how to get started:
Development Setup
Fork the repository
Clone your fork:
git clone https://github.com/your-username/mcp-taskmanager.gitCreate a feature branch:
git checkout -b feature/amazing-featureInstall dependencies:
npm installMake your changes
Test locally:
npx wrangler dev --localBuild and test:
npm run build
Contribution Guidelines
Follow TypeScript best practices
Add tests for new features
Update documentation for API changes
Use conventional commit messages
Ensure all tests pass before submitting
Pull Request Process
Commit your changes:
git commit -m 'Add amazing feature'Push to your branch:
git push origin feature/amazing-featureOpen a Pull Request with:
Clear description of changes
Screenshots/examples if applicable
Reference to any related issues
Areas for Contribution
π Bug fixes and improvements
π Documentation enhancements
β¨ New MCP tools and features
π§ͺ Test coverage improvements
License
This project is licensed under the MIT License - see the LICENSE file for details.
π¬ Support
Getting Help
GitHub Issues: Report bugs or request features
Discussions: Ask questions and share ideas
Documentation: Check this README and inline code comments
Community Resources
MCP Documentation: Model Context Protocol
Cloudflare Workers Docs: Learn more about Workers
Reporting Issues
When reporting bugs, please include:
Your Cloudflare Worker URL
Steps to reproduce the issue
Expected vs actual behavior
Error messages or logs
Browser/client information
π Acknowledgments
Built with the Model Context Protocol SDK
Powered by Cloudflare Workers
Designed for seamless AI assistant integration
Inspired by the need for better task management in AI workflows
π License
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for the AI community
Deploy your own instance and start managing tasks efficiently with AI assistants!
Available Tools
10 toolsadd_tasks_to_requestC
Add new tasks to an existing request. This allows extending a request with additional tasks.
A progress table will be displayed showing all tasks including the newly added ones.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | ||
| tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that 'A progress table will be displayed showing all tasks including the newly added ones,' which adds some context about the output behavior. However, it lacks critical details such as whether this operation requires specific permissions, if it's idempotent, what happens on errors, or any rate limits. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that directly address the tool's function and output behavior. It's front-loaded with the core purpose, and the second sentence adds useful context without redundancy. However, it could be slightly more structured by explicitly listing parameters or usage scenarios.
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 a mutation tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It covers the basic purpose and hints at output behavior but misses details on parameter meanings, error handling, permissions, and how it integrates with sibling tools. This leaves significant gaps for an AI agent to use it correctly.
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 description coverage is 0%, so the description must compensate for undocumented parameters. It implies the parameters are 'requestId' and 'tasks' (as it mentions adding tasks to an existing request), but doesn't explain their semantics, formats, or constraints beyond the basic idea. Since there are only 2 parameters, the baseline is higher, but the description adds minimal value over the schema, resulting in an adequate but not helpful score.
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 ('Add') and resource ('tasks to an existing request'), making the purpose understandable. It specifies this is for extending an existing request with additional tasks, which distinguishes it from creating a new request. However, it doesn't explicitly differentiate from sibling tools like 'update_task' or 'request_planning' beyond the 'add to existing' aspect.
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 minimal guidance by mentioning it's for 'extending a request with additional tasks,' which implies usage when more tasks are needed for an existing request. However, it doesn't specify when to use this tool versus alternatives like 'update_task' (which might modify existing tasks) or 'request_planning' (which might create new requests), nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_request_completionA
After all tasks are done and approved, this tool finalizes the entire request. The user must call this to confirm that the request is fully completed.
A progress table showing the final status of all tasks will be displayed before requesting final approval.
If not approved, the user can add new tasks using 'request_planning' and continue the process.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool 'finalizes' and 'confirms' completion, implying a write/mutation operation, and mentions a 'progress table' will be displayed before approval. However, it lacks details on permissions, side effects (e.g., if it locks the request), or response format. The description adds some behavioral context but is incomplete 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 appropriately sized and front-loaded, with the first sentence stating the core purpose. Each subsequent sentence adds value: the second explains a behavioral detail (progress table), and the third provides usage alternatives. There is no wasted text, and the structure flows logically from purpose to context.
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 (a mutation to finalize a request), no annotations, no output schema, and low schema coverage, the description is moderately complete. It covers the purpose, prerequisites, and some behavioral aspects but lacks details on permissions, side effects, return values, and explicit parameter guidance. It is adequate but has clear gaps for a tool of this nature.
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 input schema has 1 parameter with 0% description coverage, so the description must compensate. It does not explicitly mention the 'requestId' parameter, but contextually implies it by referring to 'the entire request' and 'request_planning'. The description adds meaning by explaining the tool's purpose and prerequisites, which helps infer parameter usage, though it does not detail the parameter's format or 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?
The description clearly states the tool's purpose: 'finalizes the entire request' after 'all tasks are done and approved', with the specific action being to 'confirm that the request is fully completed'. It uses a specific verb ('finalizes') and resource ('request'), but does not explicitly distinguish it from siblings like 'approve_task_completion' beyond implying it's for the entire request versus individual 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?
The description provides clear context on when to use it: 'After all tasks are done and approved' and 'to confirm that the request is fully completed'. It also mentions an alternative action if not approved: 'add new tasks using request_planning'. However, it does not explicitly state when NOT to use it (e.g., before tasks are complete) or compare it to all relevant siblings like 'approve_task_completion'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_task_completionA
Once the assistant has marked a task as done using 'mark_task_done', the user must call this tool to approve that the task is genuinely completed. Only after this approval can you proceed to 'get_next_task' to move on.
A progress table will be displayed before requesting approval, showing the current status of all tasks.
If the user does not approve, do not call 'get_next_task'. Instead, the user may request changes, or even re-plan tasks by using 'request_planning' again.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | ||
| taskId | Yes |
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 effectively describes the tool's role in a workflow (approval after marking done) and consequences (proceeding to 'get_next_task' only after approval). However, it lacks details on error handling, response format, or side effects like whether approval is reversible. The description adds meaningful context but doesn't fully cover behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Each sentence adds value: the first explains the tool's role, the second mentions the progress table, and the third covers alternative actions. It could be slightly more concise by integrating the progress table mention into the workflow explanation, but overall it's efficient with minimal waste.
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 moderate complexity (2 parameters, no output schema, no annotations), the description provides good contextual completeness. It explains the tool's place in a workflow, prerequisites, and consequences. However, it doesn't detail what happens upon successful approval (e.g., state changes) or error cases, leaving some gaps for a tool with mutation implications.
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 input schema has 0% description coverage, so the description must compensate. While it doesn't explicitly explain the 'requestId' and 'taskId' parameters, it implicitly clarifies their purpose by describing the approval process for a specific task within a request context. This adds semantic meaning beyond the bare schema, though it could be more explicit about parameter roles.
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 purpose: 'the user must call this tool to approve that the task is genuinely completed' after using 'mark_task_done'. It specifies the verb (approve) and resource (task completion), and distinguishes it from sibling tools like 'approve_request_completion' by focusing on task-level approval rather than request-level.
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 explicit guidance on when to use this tool: 'Once the assistant has marked a task as done using 'mark_task_done', the user must call this tool to approve that the task is genuinely completed.' It also specifies alternatives and exclusions: 'If the user does not approve, do not call 'get_next_task'. Instead, the user may request changes, or even re-plan tasks by using 'request_planning' again.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskB
Delete a specific task from a request. Only uncompleted tasks can be deleted.
A progress table will be displayed showing the remaining tasks after deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | ||
| taskId | Yes |
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 describes key behavioral traits: the deletion action (implying mutation), the constraint that only uncompleted tasks can be deleted, and that a progress table will be displayed after deletion. However, it lacks details on permissions, error handling, or what happens if deletion fails, leaving gaps 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 appropriately concise with two sentences that cover key points: the action with constraints and the post-deletion behavior. It's front-loaded with the main purpose, and each sentence adds value without redundancy. However, the second sentence could be more integrated with the first for better flow.
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 a deletion tool with no annotations, 0% schema coverage, and no output schema, the description is incomplete. It misses critical details: parameter meanings, error cases, permissions, and the format of the progress table. While it covers the basic action and constraint, it doesn't provide enough context for reliable agent use in this environment.
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 input schema has 0% description coverage, so the description must compensate for undocumented parameters. It mentions 'a specific task from a request,' which hints at the need for requestId and taskId, but doesn't explain their semantics, formats, or sources. For example, it doesn't clarify if these are IDs from 'list_requests' or 'get_next_task.' The description adds minimal value beyond the schema's 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 action ('Delete') and resource ('a specific task from a request'), making the purpose understandable. It distinguishes from siblings like 'update_task' or 'mark_task_done' by specifying deletion, though it doesn't explicitly contrast with all alternatives. The description avoids tautology by adding operational details beyond just restating the name.
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 some usage context by stating 'Only uncompleted tasks can be deleted,' which implies when to use it (for uncompleted tasks) and when not to use it (for completed tasks). However, it doesn't explicitly name alternatives like 'update_task' for modifying tasks or clarify prerequisites such as needing valid request/task IDs. The guidance is implied rather than comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_next_taskA
Given a 'requestId', return the next pending task (not done yet). If all tasks are completed, it will indicate that no more tasks are left and that you must wait for the request completion approval.
A progress table showing the current status of all tasks will be displayed with each response.
If the same task is returned again or if no new task is provided after a task was marked as done but not yet approved, you MUST NOT proceed. In such a scenario, you must prompt the user for approval via 'approve_task_completion' before calling 'get_next_task' again. Do not skip the user's approval step. In other words:
After calling 'mark_task_done', do not call 'get_next_task' again until 'approve_task_completion' is called by the user.
If 'get_next_task' returns 'all_tasks_done', it means all tasks have been completed. At this point, you must not start a new request or do anything else until the user decides to 'approve_request_completion' or possibly add more tasks via 'request_planning'.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses key behaviors: returns next pending task, indicates when all tasks are done, shows a progress table, and has strict sequencing rules (must not proceed without user approval). However, it doesn't mention error handling, rate limits, or authentication needs, leaving some gaps.
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 front-loaded with the core purpose but becomes verbose with detailed sequencing rules and repetitions (e.g., 'Do not skip the user's approval step' and 'In other words:'). Some sentences could be condensed without losing clarity, making it slightly less efficient.
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 no annotations and no output schema, the description does well by explaining return behavior (pending task, all_tasks_done, progress table) and sequencing constraints. However, it doesn't describe the output format (e.g., structure of returned task) or error cases, which could be important for a tool with complex workflow dependencies.
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. It explains that requestId is used to identify which request's tasks to query, adding meaning beyond the bare schema. However, it doesn't specify the format or source of requestId (e.g., from list_requests), leaving some 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 purpose: 'return the next pending task (not done yet)' given a requestId. It distinguishes from siblings by specifying it returns pending tasks only, not all tasks or completed ones, and mentions specific sibling tools (approve_task_completion, approve_request_completion) for context.
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?
Explicit guidance is provided on when to use this tool vs alternatives: use after requestId is available, not after mark_task_done until approve_task_completion is called, and not after all_tasks_done until approve_request_completion. It names specific sibling tools (approve_task_completion, approve_request_completion, request_planning) as alternatives in different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_requestsB
List all requests with their basic information and summary of tasks. This provides a quick overview of all requests in the system.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool lists requests with 'basic information and summary of tasks,' which implies a read-only operation, but it doesn't specify details like pagination, sorting, filtering, rate limits, or authentication requirements. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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 and front-loaded, consisting of two sentences that directly state the tool's purpose and utility. Every sentence earns its place by clarifying the action and scope. However, it could be slightly more structured by explicitly mentioning the lack of parameters or output details, but overall, it's efficient with minimal waste.
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 (simple list operation with 0 parameters), no annotations, and no output schema, the description is moderately complete. It explains what the tool does but lacks details on behavioral aspects like return format, error handling, or system constraints. For a tool with no structured data support, this is adequate but leaves room for improvement in providing more 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?
The input schema has 0 parameters with 100% coverage, meaning there are no parameters to document. The description doesn't add parameter-specific information, which is appropriate here. Since the baseline for 0 parameters is 4, this score reflects that the description doesn't need to compensate for any schema gaps, and it aligns well with the lack of parameters.
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 purpose: 'List all requests with their basic information and summary of tasks.' It uses specific verbs ('list') and resources ('requests'), and mentions the scope ('all requests in the system'). However, it doesn't explicitly differentiate from sibling tools like 'get_next_task' or 'request_planning', which also involve request-related operations, so it doesn't reach the highest score.
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 minimal guidance: it says this tool 'provides a quick overview of all requests,' implying it's for summary purposes. However, it doesn't specify when to use this tool versus alternatives (e.g., 'get_next_task' for a specific task or 'request_planning' for planning-related actions), nor does it mention any prerequisites or exclusions. This lack of explicit context limits its usefulness for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_task_doneA
Mark a given task as done after you've completed it. Provide 'requestId' and 'taskId', and optionally 'completedDetails'.
After marking a task as done, a progress table will be displayed showing the updated status of all tasks.
After this, DO NOT proceed to 'get_next_task' again until the user has explicitly approved this completed task using 'approve_task_completion'.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | ||
| taskId | Yes | ||
| completedDetails | 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 effectively describes key behaviors: it triggers a progress table display, updates task status, and imposes a workflow constraint (waiting for approval). However, it lacks details on error handling, permissions, or side effects beyond the progress display, leaving some gaps in 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?
The description is appropriately sized and front-loaded, with the core purpose stated first. Each sentence adds value: the first explains the action and parameters, the second describes the immediate outcome, and the third provides critical workflow guidance. There is minimal redundancy, though the structure could be slightly more streamlined.
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 (a mutation tool with workflow dependencies), no annotations, and no output schema, the description does well by covering purpose, usage, and behavioral outcomes like the progress table and approval requirement. However, it misses details on error cases, return values, or what happens if parameters are invalid, leaving room for improvement in 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%, so the description must compensate. It adds meaningful semantics: 'requestId' and 'taskId' are required to identify the task, and 'completedDetails' is optional for providing additional information. This clarifies parameter roles beyond the basic schema, though it doesn't specify formats or constraints (e.g., what 'completedDetails' should contain).
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 specific action ('Mark a given task as done'), identifies the resource ('task'), and distinguishes it from siblings like 'update_task' or 'delete_task' by focusing on completion status. It explicitly mentions providing parameters like 'requestId' and 'taskId', which reinforces the purpose.
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 explicit guidance on when to use this tool ('after you've completed it') and when not to proceed ('DO NOT proceed to 'get_next_task' again until the user has explicitly approved this completed task using 'approve_task_completion''). It names alternatives ('get_next_task', 'approve_task_completion') and sets clear prerequisites for workflow sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_task_detailsB
Get details of a specific task by 'taskId'. This is for inspecting task information at any point.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is for 'inspecting' information, which implies a read-only operation, but doesn't explicitly confirm this or address other behavioral aspects like authentication requirements, rate limits, error conditions, or what specific details are returned. The phrase 'at any point' suggests availability but doesn't clarify constraints.
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 efficiently structured in two concise sentences. The first sentence directly states the action and required parameter, while the second provides usage context. Every word earns its place with no redundancy or fluff.
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 no annotations, no output schema, and 0% schema description coverage, the description is insufficiently complete. It adequately states the basic purpose but lacks crucial information about what details are returned, behavioral constraints, parameter semantics, and differentiation from sibling tools. For a read operation tool in a workflow system, more context is needed.
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, so the description must fully compensate. It mentions the 'taskId' parameter and that details are retrieved by it, but provides no additional semantic context about what a taskId is, its format, where to obtain it, or validation rules. This leaves significant gaps in parameter understanding beyond the basic schema type.
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 details') and resource ('specific task'), making the purpose evident. It specifies retrieving information by 'taskId' for inspection purposes. However, it doesn't explicitly differentiate from potential sibling tools like 'get_next_task' or 'list_requests' that might also provide task information.
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 context with 'for inspecting task information at any point', suggesting this tool is for detailed examination rather than listing or workflow progression. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'get_next_task' (which might return limited details) or 'list_requests' (which might provide summary information). No exclusions or clear alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_planningA
Register a new user request and plan its associated tasks. You must provide 'originalRequest' and 'tasks', and optionally 'splitDetails'.
This tool initiates a new workflow for handling a user's request. The workflow is as follows:
Use 'request_planning' to register a request and its tasks.
After adding tasks, you MUST use 'get_next_task' to retrieve the first task. A progress table will be displayed.
Use 'get_next_task' to retrieve the next uncompleted task.
IMPORTANT: After marking a task as done, the assistant MUST NOT proceed to another task without the user's approval. The user must explicitly approve the completed task using 'approve_task_completion'. A progress table will be displayed before each approval request.
Once a task is approved, you can proceed to 'get_next_task' again to fetch the next pending task.
Repeat this cycle until all tasks are done.
After all tasks are completed (and approved), 'get_next_task' will indicate that all tasks are done and that the request awaits approval for full completion.
The user must then approve the entire request's completion using 'approve_request_completion'. If the user does not approve and wants more tasks, you can again use 'request_planning' to add new tasks and continue the cycle.
The critical point is to always wait for user approval after completing each task and after all tasks are done, wait for request completion approval. Do not proceed automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| originalRequest | Yes | ||
| splitDetails | No | ||
| tasks | Yes |
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 effectively describes the tool's role in initiating a workflow, the required user approvals after each task, and the overall process until request completion. However, it lacks details on error handling, performance characteristics, or specific constraints like rate limits.
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 appropriately front-loaded with the core purpose, but the detailed workflow explanation is lengthy and somewhat repetitive (e.g., emphasizing approval steps multiple times). While informative, it could be more streamlined without losing critical 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 complexity of a 3-parameter tool with no annotations or output schema, the description does a good job of explaining the tool's role in a broader workflow and interaction with siblings. It covers the essential context for correct usage, though it omits details on return values or error 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?
With 0% schema description coverage for 3 parameters, the description compensates by explaining the purpose of 'originalRequest' and 'tasks' as required inputs and 'splitDetails' as optional. It clarifies that tasks must include 'title' and 'description', adding meaning beyond the bare schema, though it could provide more context on format or 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?
The description clearly states the tool's purpose: 'Register a new user request and plan its associated tasks.' It specifies the verb ('register' and 'plan') and resource ('user request' and 'tasks'), and distinguishes it from siblings like 'add_tasks_to_request' by indicating this is for initial registration rather than modification.
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 explicit guidance on when to use this tool versus alternatives, detailing a step-by-step workflow that includes this tool as the first step and references sibling tools like 'get_next_task', 'approve_task_completion', and 'approve_request_completion' for subsequent actions. It explicitly states not to proceed automatically without user approval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskB
Update an existing task's title and/or description. Only uncompleted tasks can be updated.
A progress table will be displayed showing the updated task information.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | ||
| taskId | Yes | ||
| title | No | ||
| description | 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. It discloses that updates are limited to uncompleted tasks and mentions a 'progress table will be displayed' as output behavior. However, it doesn't cover important aspects like whether this requires specific permissions, if changes are reversible, error handling, or rate limits. The description adds some behavioral context but leaves significant gaps.
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 appropriately concise with two sentences. The first sentence clearly states the purpose and constraint, while the second describes output behavior. There's no unnecessary information, though it could be slightly more structured by separating constraints from output details.
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 moderate complexity (mutation operation with 4 parameters), no annotations, and no output schema, the description is partially complete. It covers the update scope and a constraint but lacks details on parameter meanings, error conditions, permissions, and full output specification. The description provides a basic foundation but leaves important gaps for a mutation tool.
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. It mentions that 'title and/or description' can be updated, which maps to two of the four parameters. However, it doesn't explain the purpose of 'requestId' and 'taskId' (the required parameters) or provide any format/validation details. The description adds minimal value beyond what's implied by parameter 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 clearly states the tool's purpose: 'Update an existing task's title and/or description.' It specifies the verb (update) and resource (task) with the specific fields that can be modified. However, it doesn't explicitly differentiate from sibling tools like 'mark_task_done' or 'delete_task' beyond mentioning that only uncompleted tasks can be updated.
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 clear context for when to use this tool: 'Only uncompleted tasks can be updated.' This establishes a key precondition. However, it doesn't explicitly mention when NOT to use it (e.g., for completed tasks) or name alternatives like 'delete_task' for removal or 'mark_task_done' for completion.
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.
10 tool updates
- First observed
add_tasks_to_request - First observed
approve_request_completion - First observed
approve_task_completion - First observed
delete_task - First observed
get_next_task - First observed
list_requests - First observed
mark_task_done - First observed
open_task_details - First observed
request_planning - First observed
update_task
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose with no overlap: request_planning initiates workflows, add_tasks_to_request extends them, get_next_task fetches pending tasks, mark_task_done and approve_task_completion handle task completion steps, delete_task and update_task modify tasks, open_task_details inspects tasks, list_requests provides overviews, and approve_request_completion finalizes requests. The descriptions reinforce these boundaries, making misselection unlikely.
All tool names follow a consistent verb_noun pattern with underscores, such as add_tasks_to_request, approve_request_completion, and get_next_task. There are no deviations in style or convention, making the naming predictable and easy to parse for an agent.
With 10 tools, the set is well-scoped for a task management domain, covering the full lifecycle from planning to completion. Each tool serves a specific role in the workflow, and there are no extraneous or missing tools that would suggest over- or under-engineering.
The tool surface provides complete CRUD and lifecycle coverage for task management: request_planning (create), list_requests (read), update_task (update), delete_task (delete), along with workflow-specific tools like get_next_task, mark_task_done, approve_task_completion, and approve_request_completion. There are no obvious gaps, and the descriptions outline a coherent end-to-end process.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.
Hosted MCP server for task-first delegation to remote workstations and workers.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseAqualityFmaintenanceModel Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.10184 npm215MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude to manage software development projects with complete context awareness and code execution through Docker environments.5 npm4-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for Claude Desktop that provides structured memory management across chat sessions, allowing Claude to maintain context and build a knowledge base within project directories.6 npm6MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows integration with Claude Desktop by creating and managing custom tools that can be executed through the MCP framework.78 npm-
Appeared in Searches
- Codebeamer application lifecycle management platform
- An MCP for managing lifestyle, coordinating daily routines, exercise, and study tasks
- Todo List for Remote Management of MCP
- A system for task management and integration with AI editors using multiple LLMs
- Understanding Batch Processing in Computing or Operations