Model Context Protocol (MCP) server for comprehensive task and feature management, providing AI assistants with a structured, context-efficient way to interact with project data.
42 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Model Context Protocol (MCP) server for comprehensive task and feature management, providing AI assistants with a structured, context-efficient way to interact with project data.
Attribute | Details |
---|---|
Docker Image | ghcr.io/jpicklyk/task-orchestrator |
Author | jpicklyk |
Repository | https://github.com/jpicklyk/task-orchestrator |
Docker Image built by|jpicklyk Docker Scout Health Score|Not available Verify Signature|Not available Licence|MIT License
Tools provided by this Server | Short Description |
---|---|
add_section | Adds a section to a task, feature, or project. |
add_template_section | Add a section to a template. |
apply_template | Apply one or more templates to create sections for a task or feature. |
bulk_create_sections | Creates multiple sections in a single operation. |
bulk_delete_sections | Deletes multiple sections in a single operation |
bulk_update_sections | Updates multiple sections in a single operation |
bulk_update_tasks | Updates multiple tasks in a single operation. |
create_dependency | Creates a new task dependency with validation for task existence, cycle detection, and duplicate prevention. |
create_feature | Create a new feature with required and optional fields. |
create_project | Implement the CreateProjectTool MCP tool for creating new projects. |
create_task | Creates a new task with the specified properties. |
create_template | Creates a new template with required and optional fields. |
delete_dependency | Deletes task dependencies by dependency ID or by task relationship criteria. |
delete_feature | Remove a feature and its associated tasks |
delete_project | Remove a project and its associated features/tasks |
delete_section | Deletes a section by its ID |
delete_task | Deletes a task by its ID |
delete_template | Deletes a user-created template. |
disable_template | Disables a template including system templates. |
enable_template | Enables a previously disabled template, making it available for use again. |
feature_to_markdown | Transforms a feature into markdown format with YAML frontmatter. |
get_feature | Retrieves a feature by its ID with options for including relationships. |
get_overview | Retrieves a lightweight, token-efficient overview of tasks and features. |
get_project | Retrieves a project by its ID with options for including relationships. |
get_sections | Retrieves sections for a task, feature, or project. |
get_task | Retrieves a task by its ID with options for including relationships. |
get_task_dependencies | Retrieves all dependencies for a specific task with filtering options and dependency chain information. |
get_template | Retrieve a complete template by ID with options for including sections |
list_templates | Retrieve a list of templates with optional filtering. |
project_to_markdown | Transforms a project into markdown format with YAML frontmatter. |
reorder_sections | Reorders sections within a template or other entity. |
search_features | Find features matching specified criteria |
search_projects | Find projects matching specified criteria |
search_tasks | Searches for tasks based on various criteria. |
task_to_markdown | Transforms a task into markdown format with YAML frontmatter. |
update_feature | Update an existing feature's properties. |
update_project | Updates an existing project's properties. |
update_section | Updates an existing section by its ID. |
update_section_metadata | Updates a section's metadata (title, usage description, format, ordinal, tags) without affecting its content. |
update_section_text | Updates specific text within a section without requiring the entire content. |
update_task | Updates an existing task with the specified properties. |
update_template_metadata | Updates a template's metadata (name, description, tags, etc.) without affecting its sections. |
add_section
Adds a section to a task, feature, or project.
## Purpose
Sections store detailed content for tasks, features, and projects in a structured way.
Instead of storing all content directly in the entities, sections allow for
organized content blocks with specific formats and purposes. This approach
optimizes context efficiency by keeping core entities lightweight.
## Usage Guidelines
**EFFICIENCY RECOMMENDATION**: For adding multiple sections at once, prefer using
`bulk_create_sections` instead of multiple `add_section` calls. This is especially
important for:
- Creating initial section sets for new tasks/features
- Adding sections with shorter content (reduces network overhead)
- Template-like section creation scenarios
**WHEN TO USE add_section**:
- Adding a single section with substantial content
- Adding sections incrementally during task development
- Creating sections that require careful individual validation
## Content Organization Strategy
**Common Section Types** (use these title patterns for consistency):
- **Requirements**: What needs to be accomplished, acceptance criteria
- **Implementation Notes**: Technical approach, architecture decisions
- **Testing Strategy**: Testing approach, coverage requirements
- **Reference Information**: External links, documentation, resources
- **Dependencies**: Prerequisites, related tasks, blocking issues
- **Architecture**: Design patterns, system integration points
**Ordinal Sequencing Best Practices**:
- Start with ordinal 0 for the first section
- Use increments of 1 for logical ordering
- Leave gaps (0, 10, 20) when you anticipate inserting sections later
- Requirements typically come first (ordinal 0)
- Implementation details in the middle (ordinal 1-5)
- Testing and validation toward the end (ordinal 6+)
**Content Format Selection**:
- **MARKDOWN**: Default for documentation, requirements, notes (rich formatting)
- **PLAIN_TEXT**: Simple text without formatting needs
- **JSON**: Structured data, configuration, API specifications
- **CODE**: Source code examples, implementation snippets
**Writing Markdown Content**:
**CRITICAL - Section Title Handling**:
- The `title` field becomes the section heading (rendered as ## H2 in markdown output)
- **DO NOT** duplicate the section title as a heading in the `content` field
- Content should start directly with the information, NOT with another heading
- For subsections within content, use ### (H3) or lower headings
**Markdown Formatting**:
- Use subsection headings: `### Subsection` (H3 or lower, never H2)
- Use lists: `- Item` or `1. Numbered`
- Use emphasis: `**bold**` or `*italic*`
- Use code: \`inline\` or \`\`\`kotlin code block\`\`\`
- Use links: `[text](url)`
**Example - WRONG (❌ Creates Duplicate Headings)**:
```markdown
## Requirements
- **Must** support OAuth 2.0
```
*Problem: Title field "Requirements" + content heading "## Requirements" = duplicate*
**Example - CORRECT (✅ No Duplicate)**:
```markdown
- **Must** support OAuth 2.0
- **Should** handle token refresh automatically
- See [OAuth spec](https://oauth.net/2/)
```
*Correct: Title field "Requirements" provides the heading, content starts directly*
**Example - With Subsections (✅ Also Correct)**:
```markdown
### Current Behavior
The system currently...
### Proposed Changes
- Change 1...
- Change 2...
```
*Correct: Uses H3 for subsections, not H2*
## Integration with Workflow
**Template Integration**: When using templates, they create standard sections automatically.
Use add_section to supplement template-created sections with project-specific content.
**Progressive Detail**: Start with high-level sections (Requirements, Architecture)
and add implementation details as the task progresses.
## Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| entityType | string | Yes | - | Type of entity to attach this section to: 'PROJECT', 'TASK', or 'FEATURE' |
| entityId | UUID string | Yes | - | ID of the project, task, or feature to add the section to (e.g., '550e8400-e29b-41d4-a716-446655440000') |
| title | string | Yes | - | Section title (e.g., 'Requirements', 'Implementation Notes', 'Testing Plan') |
| usageDescription | string | Yes | - | Description of how this section should be used by AI models or users |
| content | string | Yes | - | The actual content of the section in the specified format |
| contentFormat | string | No | "MARKDOWN" | Format of the content: 'MARKDOWN', 'PLAIN_TEXT', 'JSON', or 'CODE' |
| ordinal | integer | Yes | - | Order position (0-based). Lower numbers appear first when ordered. |
| tags | string | No | - | Comma-separated list of tags for categorization (e.g., 'documentation,frontend,api') |
## Response Format
### Success Response
```json
{
"success": true,
"message": "Section added successfully",
"data": {
"section": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"entityType": "TASK",
"entityId": "661f9511-f30c-52e5-b827-557766551111",
"title": "Implementation Steps",
"contentFormat": "MARKDOWN",
"ordinal": 1,
"createdAt": "2025-05-10T14:30:00Z"
}
}
}
```
## Error Responses
- RESOURCE_NOT_FOUND (404): When the specified task or feature doesn't exist
```json
{
"success": false,
"message": "The specified task was not found",
"error": {
"code": "RESOURCE_NOT_FOUND"
}
}
```
- VALIDATION_ERROR (400): When provided parameters fail validation
```json
{
"success": false,
"message": "Title is required",
"error": {
"code": "VALIDATION_ERROR"
}
}
```
- DATABASE_ERROR (500): When there's an issue storing the section in the database
- INTERNAL_ERROR (500): For unexpected system errors during execution
## Usage Examples
1. Add a requirements section to a task:
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Requirements",
"usageDescription": "Key requirements that the implementation must satisfy",
"content": "1. Must support OAuth2 authentication\\n2. Should handle token refresh\\n3. Needs rate limiting",
"contentFormat": "MARKDOWN",
"ordinal": 0,
"tags": "requirements,security,api"
}
```
2. Add implementation notes to a feature:
```json
{
"entityType": "FEATURE",
"entityId": "661e8511-f30c-41d4-a716-557788990000",
"title": "Implementation Notes",
"usageDescription": "Technical details on implementation approach",
"content": "Use the AuthLib 2.0 library for OAuth implementation...",
"contentFormat": "MARKDOWN",
"ordinal": 1,
"tags": "implementation,technical"
}
```
3. Add overview documentation to a project:
```json
{
"entityType": "PROJECT",
"entityId": "772f9622-g41d-52e5-b827-668899101111",
"title": "Project Overview",
"usageDescription": "High-level overview of the project",
"content": "This project aims to create a scalable infrastructure...",
"contentFormat": "MARKDOWN",
"ordinal": 0,
"tags": "overview,documentation"
}
```
3. Add structured data as JSON:
```json
{
"entityType": "FEATURE",
"entityId": "661e8511-f30c-41d4-a716-557788990000",
"title": "API Endpoints",
"usageDescription": "Definition of REST API endpoints",
"content": "{\\"endpoints\\": [{\\"path\\": \\"/api/auth\\", \\"method\\": \\"POST\\"}]}",
"contentFormat": "JSON",
"ordinal": 0
}
```
4. Add code sample:
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Authentication Handler",
"usageDescription": "Code for handling OAuth authentication",
"content": "fun authenticateUser(credentials: Credentials): Result<User> {\n // Implementation\n}",
"contentFormat": "CODE",
"ordinal": 2
}
```
## Common Section Types
While you can create sections with any title, common section types include:
- Requirements: Task or feature requirements (what needs to be done)
- Implementation Notes: Technical details on how to implement
- Testing Strategy: How to test the implementation
- Reference Information: External links and resources
- Architecture: Design and architecture details
- Dependencies: Dependencies on other components
## Related Tools
- `get_sections`: Retrieve sections for a task or feature
- `update_section`: Modify an existing section
- `delete_section`: Remove a section
- `bulk_create_sections`: Create multiple sections at once (recommended when adding multiple sections)
## Efficiency Note
For efficiency and better performance, when you need to add multiple sections to the
same entity, use the `bulk_create_sections` tool instead. This reduces the number of
database operations and network calls, resulting in faster execution, especially when
dealing with multiple sections with shorter content.
Parameters | Type | Description |
---|---|---|
content | string | The actual content of the section in the specified format |
entityId | string | ID (UUID) of the project, task, or feature to add the section to (e.g., '550e8400-e29b-41d4-a716-446655440000') |
entityType | string | Type of entity to attach this section to: 'PROJECT', 'TASK', or 'FEATURE' |
ordinal | integer | Order position (0-based). Lower numbers appear first when ordered. |
title | string | Section title (e.g., 'Requirements', 'Implementation Notes', 'Testing Plan') |
usageDescription | string | Description of how this section should be used by AI models or users |
contentFormat | string optional | Format of the content: 'MARKDOWN' for formatted text, 'PLAIN_TEXT' for unformatted text, 'JSON' for data, 'CODE' for source code |
tags | string optional | Comma-separated list of tags for categorization (e.g., 'documentation,frontend,api') |
add_template_section
Add a section to a template.
Templates define a structured documentation pattern with multiple sections.
This tool adds a section definition to a template, which will be created
when the template is applied to tasks or features.
Example successful response:
{
"success": true,
"message": "Template section added successfully",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"templateId": "661e8511-f30c-41d4-a716-557788990000",
"title": "Implementation Steps",
"usageDescription": "Detailed steps to implement this task",
"contentSample": "1. First step\\n2. Second step\\n3. Third step",
"contentFormat": "markdown",
"ordinal": 1,
"isRequired": true,
"tags": ["implementation", "steps"]
}
}
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation
- RESOURCE_NOT_FOUND: When the template doesn't exist
- DATABASE_ERROR: When there's an issue storing the section
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
contentSample | string | Sample content that will be used when creating from the template |
ordinal | integer | Order position (0-based). Lower numbers appear first when ordered. |
templateId | string | The unique ID of the template to add the section to |
title | string | Section title (e.g., 'Requirements', 'Implementation Notes', 'Testing Plan') |
usageDescription | string | Description of how this section should be used by AI models or users |
contentFormat | string optional | Format of the content |
isRequired | boolean optional | Whether this section is required when applying the template |
tags | string optional | Comma-separated list of tags for categorization |
apply_template
Apply one or more templates to create sections for a task or feature.
## Purpose
Templates provide standardized structure for task and feature documentation.
This tool applies templates to an entity, creating sections based on template section definitions.
## Template Application Strategies
**Multiple Template Support**:
- Apply multiple templates in single operation using templateIds array
- Templates applied in array order (later templates' sections appear after earlier ones)
- Use single-item array for one template: ["template-uuid"]
- Use multiple templates for comprehensive coverage: ["uuid1", "uuid2", "uuid3"]
**Template Combination Patterns**:
The template system is organized into composable categories:
**AI Workflow Instructions** (process guidance):
- Local Git Branching Workflow, GitHub PR Workflow
- Task Implementation Workflow, Bug Investigation Workflow
**Documentation Properties** (information capture):
- Technical Approach, Requirements Specification, Context & Background
**Process & Quality** (standards and completion):
- Testing Strategy, Definition of Done
**Recommended Combinations**:
- **Development Task**: Technical Approach + Task Implementation Workflow + Testing Strategy
- **Bug Fix**: Bug Investigation Workflow + Technical Approach + Definition of Done
- **Feature Planning**: Requirements Specification + Context & Background + Testing Strategy
- **Complex Implementation**: Technical Approach + Local Git Branching + GitHub PR + Definition of Done
## Context Efficiency Techniques
**ALWAYS PREFER** direct creation with templates over separate operations:
```
// EFFICIENT
create_task(title: "X", templateIds: ["Y"])
// LESS EFFICIENT
id = create_task(title: "X")
apply_template(entityId: id, templateIds: ["Y"])
```
**Multiple Templates in One Call**:
```
// EFFICIENT
apply_template(entityId: id, templateIds: ["A", "B", "C"])
// LESS EFFICIENT
apply_template(entityId: id, templateIds: ["A"])
apply_template(entityId: id, templateIds: ["B"])
apply_template(entityId: id, templateIds: ["C"])
```
**Template Sequence Optimization**:
1. Start with Context: Context & Background, Requirements Specification
2. Add Technical Detail: Technical Approach for implementation guidance
3. Include Process Guidance: Task Implementation, Bug Investigation workflows
4. Add Git Workflow: Local Git Branching, GitHub PR workflows
5. Ensure Quality: Testing Strategy, Definition of Done
You can apply one or more templates by providing a templateIds array parameter.
Use a single-item array for applying just one template.
Example successful response for a single template:
{
"success": true,
"message": "Template applied successfully, created 3 sections",
"data": {
"templateId": "550e8400-e29b-41d4-a716-446655440000",
"entityType": "TASK",
"entityId": "661e8511-f30c-41d4-a716-557788990000",
"sectionsCreated": 3,
"sections": [
{
"id": "772f9622-g41d-52e5-b827-668899101111",
"title": "Requirements",
"ordinal": 0
},
{
"id": "882f9733-h52e-63f6-c938-779900212222",
"title": "Implementation Notes",
"ordinal": 1
},
{
"id": "993f0844-i63f-74g7-d049-8800a1323333",
"title": "Testing Strategy",
"ordinal": 2
}
]
}
}
Example successful response for multiple templates:
{
"success": true,
"message": "Applied 2 templates successfully, created 5 sections",
"data": {
"entityType": "TASK",
"entityId": "661e8511-f30c-41d4-a716-557788990000",
"totalSectionsCreated": 5,
"appliedTemplates": [
{
"templateId": "550e8400-e29b-41d4-a716-446655440000",
"sectionsCreated": 3,
"sections": [
{
"id": "772f9622-g41d-52e5-b827-668899101111",
"title": "Requirements",
"ordinal": 0
},
{
"id": "882f9733-h52e-63f6-c938-779900212222",
"title": "Implementation Notes",
"ordinal": 1
},
{
"id": "993f0844-i63f-74g7-d049-8800a1323333",
"title": "Testing Strategy",
"ordinal": 2
}
]
},
{
"templateId": "661e8511-f30c-41d4-a716-557788990000",
"sectionsCreated": 2,
"sections": [
{
"id": "772f9622-g41d-52e5-b827-668899101112",
"title": "Design Documentation",
"ordinal": 3
},
{
"id": "882f9733-h52e-63f6-c938-779900212223",
"title": "Related Tasks",
"ordinal": 4
}
]
}
]
}
}
For template application patterns and strategies, see: task-orchestrator://guidelines/template-strategy
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation
- RESOURCE_NOT_FOUND: When the template or entity doesn't exist
- DATABASE_ERROR: When there's an issue applying the template
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
entityId | string | ID of the entity to apply the template to |
entityType | string | Type of entity (TASK or FEATURE) |
templateIds | array | List of template IDs to apply. Use a single-item array for applying just one template. |
bulk_create_sections
Creates multiple sections in a single operation.
## Purpose
This tool efficiently creates multiple sections for tasks, features, or projects in a single operation.
PREFERRED over multiple `add_section` calls for efficiency and performance.
## When to Use bulk_create_sections
**ALWAYS PREFER** for:
- Creating initial section sets for new tasks/features (3+ sections)
- Adding template-like section structures
- Sections with shorter content (< 500 characters each)
- Any scenario requiring multiple sections for the same entity
**Performance Benefits**:
- Single database transaction (atomic operation)
- Reduced network overhead (one API call vs multiple)
- Faster execution for multiple sections
- Better error handling (all succeed or fail together)
## Common Section Creation Patterns
**Standard Task Documentation Set**:
```json
{
"sections": [
{
"entityType": "TASK",
"entityId": "task-uuid",
"title": "Requirements",
"usageDescription": "Key requirements and acceptance criteria",
"content": "[List specific requirements and success criteria]",
"ordinal": 0,
"tags": "requirements,core"
},
{
"entityType": "TASK",
"entityId": "task-uuid",
"title": "Technical Approach",
"usageDescription": "Implementation strategy and architecture",
"content": "[Describe technical approach and key decisions]",
"ordinal": 1,
"tags": "technical,architecture"
},
{
"entityType": "TASK",
"entityId": "task-uuid",
"title": "Testing Strategy",
"usageDescription": "Testing approach and coverage requirements",
"content": "[Define testing strategy and success criteria]",
"ordinal": 2,
"tags": "testing,quality"
}
]
}
```
**Feature Planning Documentation**:
```json
{
"sections": [
{
"entityType": "FEATURE",
"entityId": "feature-uuid",
"title": "Business Context",
"usageDescription": "Business value and user impact",
"content": "[Explain business need and user benefits]",
"ordinal": 0,
"tags": "business,context"
},
{
"entityType": "FEATURE",
"entityId": "feature-uuid",
"title": "Feature Specification",
"usageDescription": "Detailed feature requirements and behavior",
"content": "[Define feature scope and detailed requirements]",
"ordinal": 1,
"tags": "requirements,specification"
}
]
}
```
## Section Organization Best Practices
**Ordinal Sequencing**:
- Start with ordinal 0 for the first section
- Use increments of 1 for tightly related sequences
- Leave gaps (0, 10, 20) when you might insert sections later
- Order logically: Context → Requirements → Implementation → Testing
**Content Format Selection**:
- **MARKDOWN**: Default for rich text, documentation, requirements
- **PLAIN_TEXT**: Simple text without formatting needs
- **JSON**: Structured data, API specs, configuration
- **CODE**: Implementation examples, code snippets
**Writing Markdown Content**:
**CRITICAL - Section Title Handling**:
- The `title` field becomes the section heading (rendered as ## H2 in markdown output)
- **DO NOT** duplicate the section title as a heading in the `content` field
- Content should start directly with the information, NOT with another heading
- For subsections within content, use ### (H3) or lower headings
**Markdown Formatting**:
- Use subsection headings: `### Subsection` (H3 or lower, never H2)
- Use lists: `- Item` or `1. Numbered`
- Use emphasis: `**bold**` or `*italic*`
- Use code: \`inline\` or \`\`\`kotlin code block\`\`\`
- Use links: `[text](url)`
**Example - WRONG (❌ Creates Duplicate Headings)**:
```markdown
## Requirements
- **Must** support OAuth 2.0
```
*Problem: Title field "Requirements" + content heading "## Requirements" = duplicate*
**Example - CORRECT (✅ No Duplicate)**:
```markdown
- **Must** support OAuth 2.0
- **Should** handle token refresh automatically
- See [OAuth spec](https://oauth.net/2/)
```
*Correct: Title field "Requirements" provides the heading, content starts directly*
**Example - With Subsections (✅ Also Correct)**:
```markdown
### Current Behavior
The system currently...
### Proposed Changes
- Change 1...
- Change 2...
```
*Correct: Uses H3 for subsections, not H2*
**Tagging Strategy**:
- Use consistent tags across similar section types
- Include functional area: "requirements", "testing", "architecture"
- Add technical context: "api", "database", "frontend", "security"
- Mark importance: "core", "optional", "critical"
## Integration with Templates
**Templates vs Manual Sections**:
- Templates provide standardized section structures automatically
- Use bulk_create_sections to supplement template sections with project-specific content
- Templates handle common patterns; bulk_create_sections handles custom needs
**Post-Template Enhancement**:
After applying templates, use bulk_create_sections to add:
- Project-specific context sections
- Additional technical details
- Custom workflow or process sections
- Domain-specific requirements or constraints
## Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| sections | array | Yes | - | Array of section objects to create |
Each section object in the array must include:
| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| entityType | string | Yes | - | Type of entity: 'PROJECT', 'TASK', or 'FEATURE' |
| entityId | UUID string | Yes | - | ID of the project, task, or feature to add the section to |
| title | string | Yes | - | Section title (e.g., 'Requirements', 'Implementation Notes') |
| usageDescription | string | Yes | - | Description of how this section should be used |
| content | string | Yes | - | The actual content of the section |
| contentFormat | string | No | "MARKDOWN" | Format of the content: 'MARKDOWN', 'PLAIN_TEXT', 'JSON', or 'CODE' |
| ordinal | integer | Yes | - | Order position (0-based). Lower numbers appear first. |
| tags | string | No | - | Comma-separated list of tags for categorization |
## Response Format
### Success Response (All Sections Created)
```json
{
"success": true,
"message": "3 sections created successfully",
"data": {
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"entityType": "task",
"entityId": "661f9511-f30c-52e5-b827-557766551111",
"title": "Requirements",
"contentFormat": "markdown",
"ordinal": 0,
"createdAt": "2025-05-10T14:30:00Z"
}
],
"count": 3,
"failed": 0
}
}
```
## Error Responses
- VALIDATION_ERROR (400): When the input doesn't match the expected format or values are invalid
- OPERATION_FAILED (500): When all sections fail to create
- RESOURCE_NOT_FOUND (404): When an entity doesn't exist
## Usage Examples
1. Create multiple sections for a task:
```json
{
"sections": [
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Requirements",
"usageDescription": "Key requirements for implementation",
"content": "1. Must support user authentication\n2. Should integrate with existing systems",
"contentFormat": "MARKDOWN",
"ordinal": 0,
"tags": "requirements,core"
},
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Technical Approach",
"usageDescription": "Implementation strategy and technical details",
"content": "We'll use Spring Security for authentication and implement REST endpoints...",
"contentFormat": "MARKDOWN",
"ordinal": 1,
"tags": "technical,implementation"
},
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Testing Strategy",
"usageDescription": "Test approach and coverage requirements",
"content": "Ensure 80% unit test coverage and implement integration tests for key flows",
"contentFormat": "MARKDOWN",
"ordinal": 2,
"tags": "testing,quality"
}
]
}
```
2. Create multiple sections for a project:
```json
{
"sections": [
{
"entityType": "PROJECT",
"entityId": "772f9622-g41d-52e5-b827-668899101111",
"title": "Project Overview",
"usageDescription": "High-level description of the project",
"content": "This project aims to create a scalable infrastructure...",
"contentFormat": "MARKDOWN",
"ordinal": 0,
"tags": "overview,documentation"
},
{
"entityType": "PROJECT",
"entityId": "772f9622-g41d-52e5-b827-668899101111",
"title": "Project Architecture",
"usageDescription": "Technical architecture details",
"content": "The project uses a modular architecture with the following components...",
"contentFormat": "MARKDOWN",
"ordinal": 1,
"tags": "architecture,technical"
}
]
}
```
## Performance Benefits
Using `bulk_create_sections` instead of multiple calls to `add_section` offers significant
advantages:
1. Reduced network overhead: Only one API call instead of multiple calls
2. Improved transaction efficiency: Database operations are batched
3. Faster execution: Creating multiple sections in parallel
4. Atomic operations: All sections succeed or useful error information is provided
## Common Section Combinations
Typical section combinations for tasks include:
1. Requirements + Implementation Approach + Testing Strategy
2. Problem Statement + Solution Design + Acceptance Criteria
3. Context + Technical Details + References
Parameters | Type | Description |
---|---|---|
sections | array | Array of sections to create |
bulk_delete_sections
Deletes multiple sections in a single operation
Parameters | Type | Description |
---|---|---|
ids | array | Array of section IDs to delete |
hardDelete | boolean optional | Whether to permanently delete the sections (true) or soft delete them (false) |
bulk_update_sections
Updates multiple sections in a single operation
Parameters | Type | Description |
---|---|---|
sections | array | Array of sections to update |
bulk_update_tasks
Updates multiple tasks in a single operation.
⚡ **EFFICIENCY**: This tool reduces token usage by 70-90% compared to individual updates!
## Purpose
Efficiently update multiple tasks in a single API call with atomic transaction guarantees.
This tool is **CRITICAL for token optimization** when working with multiple tasks.
## When to Use bulk_update_tasks
**ALWAYS PREFER** for multi-task operations:
- Sprint completion: Mark 10+ tasks as completed (86% token savings)
- Feature migration: Move tasks between features (78-91% savings)
- Priority adjustments: Bulk reprioritization (80-92% savings)
- Status updates: Bulk workflow transitions (70-90% savings)
**Performance Benefits**:
- Single network round-trip instead of N calls
- Atomic database transaction (all succeed or detailed failures)
- 70-90% token reduction for typical scenarios
- Consistent state across all task updates
## Token Savings Examples
**Sprint Completion (10 tasks)**:
- Individual updates: ~2,500 tokens
- Bulk update: ~350 tokens
- **Savings: 86%** (2,150 tokens)
**Feature Reassignment (25 tasks)**:
- Individual updates: ~7,000 tokens
- Bulk update: ~650 tokens
- **Savings: 91%** (6,350 tokens)
**Priority Adjustment (50 tasks)**:
- Individual updates: ~12,500 tokens
- Bulk update: ~1,000 tokens
- **Savings: 92%** (11,500 tokens)
## Partial Updates
⚡ **CRITICAL**: Only send fields you're changing! Each task only needs `id` + changed fields.
❌ **INEFFICIENT** (sends unchanged data):
```json
{
"tasks": [
{
"id": "task-uuid",
"title": "Long unchanged title...",
"summary": "Long unchanged summary...",
"status": "completed",
"priority": "medium",
"complexity": 5,
"tags": "unchanged,tags"
}
]
}
```
✅ **EFFICIENT** (only changed field):
```json
{
"tasks": [
{"id": "task-uuid", "status": "completed"}
]
}
```
## Common Use Cases
**1. Sprint Completion**:
```json
{
"tasks": [
{"id": "task-1-uuid", "status": "completed"},
{"id": "task-2-uuid", "status": "completed"},
{"id": "task-3-uuid", "status": "completed"}
]
}
```
**2. Emergency Reprioritization**:
```json
{
"tasks": [
{"id": "critical-1", "priority": "high", "status": "in_progress"},
{"id": "critical-2", "priority": "high"},
{"id": "normal-1", "priority": "low", "status": "deferred"}
]
}
```
**3. Feature Migration**:
```json
{
"tasks": [
{"id": "task-a", "featureId": "new-feature-uuid"},
{"id": "task-b", "featureId": "new-feature-uuid"},
{"id": "task-c", "featureId": "new-feature-uuid"}
]
}
```
**4. Mixed Updates**:
```json
{
"tasks": [
{"id": "task-1", "status": "in_progress", "priority": "high"},
{"id": "task-2", "complexity": 8},
{"id": "task-3", "tags": "urgent,backend"}
]
}
```
## Parameters
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| tasks | array | Yes | Array of task update objects |
Each task object:
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | UUID | Yes | Task identifier |
| title | string | No | New title |
| description | string | No | New summary/description |
| status | enum | No | New status (pending, in_progress, completed, cancelled, deferred) |
| priority | enum | No | New priority (high, medium, low) |
| complexity | integer | No | New complexity (1-10) |
| featureId | UUID | No | New feature association |
| tags | string | No | New comma-separated tags |
## Response Format
### Success Response
```json
{
"success": true,
"message": "5 tasks updated successfully",
"data": {
"updated": 5,
"failed": 0,
"items": [
{
"id": "task-uuid",
"status": "completed",
"modifiedAt": "2025-10-12T18:45:00Z"
}
]
}
}
```
### Partial Failure Response
```json
{
"success": true,
"message": "3 tasks updated successfully, 1 failed",
"data": {
"updated": 3,
"failed": 1,
"items": [
{"id": "task-1", "status": "completed", "modifiedAt": "2025-10-12T18:45:00Z"}
],
"failures": [
{
"index": 3,
"id": "bad-uuid",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": "Task not found: bad-uuid"
}
}
]
}
}
```
## Validation Rules
1. **Array**: At least one task required, maximum 100 tasks
2. **Per Task**: `id` required, at least one update field
3. **UUIDs**: Valid format for `id` and `featureId`
4. **Enums**: Valid values for `status` and `priority`
5. **Range**: `complexity` must be 1-10
## Error Responses
- VALIDATION_ERROR (400): Invalid input format or values
- RESOURCE_NOT_FOUND (404): One or more tasks don't exist
- OPERATION_FAILED (500): All tasks failed to update
- INTERNAL_ERROR (500): Unexpected system error
## Performance Notes
- **Network**: 1 round-trip vs N round-trips (80-99% reduction)
- **Database**: Single atomic transaction
- **Tokens**: 70-92% reduction vs individual updates
- **Response**: Minimal format (id, status, modifiedAt only)
## Comparison with Individual Updates
| Scenario | Tasks | Individual | Bulk | Savings |
|----------|-------|------------|------|---------|
| Sprint completion | 10 | 2,500 tokens | 350 tokens | 86% |
| Feature migration | 25 | 7,000 tokens | 650 tokens | 91% |
| Priority adjustment | 50 | 12,500 tokens | 1,000 tokens | 92% |
## Best Practices
1. **Use for 2+ tasks**: Single task? Use `update_task` instead
2. **Partial updates only**: Only send fields that changed
3. **Batch related changes**: Group related updates (same status, same feature)
4. **Check failures**: Review `failures` array for partial success
5. **Limit batch size**: Keep under 100 tasks per request
## Related Tools
- `update_task`: Update single task (use for 1 task)
- `bulk_create_sections`: Efficient section creation
- `bulk_update_sections`: Efficient section updates
- `get_overview`: Check current state before bulk updates
Parameters | Type | Description |
---|---|---|
tasks | array | Array of tasks to update |
create_dependency
Creates a new task dependency with validation for task existence, cycle detection, and duplicate prevention.
Dependencies represent relationships between tasks that can affect execution planning and workflow management.
This tool ensures data integrity by validating all aspects before creation.
Example successful response:
{
"success": true,
"message": "Dependency created successfully",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"fromTaskId": "661e8511-f30c-41d4-a716-557788990000",
"toTaskId": "772f9622-g41d-52e5-b827-668899101111",
"type": "BLOCKS",
"createdAt": "2025-05-10T14:30:00Z"
}
}
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation
- RESOURCE_NOT_FOUND: When one or both tasks don't exist
- CONFLICT_ERROR: When the dependency would create a cycle or already exists
- DATABASE_ERROR: When there's an issue storing the dependency
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
fromTaskId | string | ID of the source task (the task that creates the dependency) |
toTaskId | string | ID of the target task (the task that is affected by the dependency) |
type | string optional | Type of dependency: 'BLOCKS' (source blocks target), 'IS_BLOCKED_BY' (source is blocked by target), or 'RELATES_TO' (general relationship) |
create_feature
Create a new feature with required and optional fields.
## Purpose
Features provide higher-level organization for related tasks, representing coherent
functionality or project components. They bridge the gap between individual tasks
and overall project goals.
## Feature vs Task Decision Guide
**Create a Feature when**:
- Work involves multiple related tasks (3+ tasks)
- Functionality represents a user-facing feature or system component
- Work has distinct phases (planning, development, testing, deployment)
- Multiple developers or skill sets are involved
- Work has independent business value or can be delivered as a unit
**Use Direct Tasks when**:
- Work is a single, focused implementation
- Maintenance, bug fixes, or small enhancements
- Infrastructure or tooling improvements
- Work doesn't logically group with other tasks
## Template Integration Strategy
**RECOMMENDED**: Apply templates at creation for consistent documentation structure.
**Feature-Level Templates** (use `list_templates` with targetEntityType="FEATURE"):
- Context & Background: Project context and business requirements
- Requirements Specification: Detailed functional and non-functional requirements
- Technical Approach: High-level architecture and technical strategy
**Template Combinations for Features**:
- **Planning Phase**: Context & Background + Requirements Specification
- **Technical Phase**: Requirements Specification + Technical Approach
- **Comprehensive**: All three templates for complex features
## Feature Lifecycle Management
**Status Progression**:
1. `planning` - Requirements gathering, design, scope definition
2. `in-development` - Active implementation across multiple tasks
3. `completed` - All associated tasks completed, feature delivered
4. `archived` - Feature complete and no longer under active development
**Priority Guidelines**:
- `high`: Core functionality, user-facing features, business critical
- `medium`: Important enhancements, internal tools, performance improvements
- `low`: Nice-to-have features, experimental functionality
## Organizing Tasks Under Features
**After creating a feature**, use the featureId in `create_task` to associate tasks:
```json
{
"title": "Implement OAuth Login",
"summary": "Create OAuth authentication endpoints",
"featureId": "feature-uuid-here",
"templateIds": ["task-template-uuid"]
}
```
**Task Organization Patterns**:
- **Frontend + Backend**: Separate tasks for UI and API implementation
- **By Component**: Database, API, UI, Tests as separate tasks
- **By Phase**: Research, Implementation, Testing, Documentation
- **By Complexity**: Break large features into manageable task chunks
## Integration with Project Hierarchy
**Project → Features → Tasks** hierarchy:
- Use projectId to associate feature with a project
- Features group related functionality within a project
- Tasks represent specific implementation work within features
## Best Practices
**Naming Conventions**:
- Use noun phrases describing functionality: "User Authentication", "Payment Processing"
- Avoid implementation details in names: "OAuth Integration" not "Implement OAuth"
- Be specific enough to distinguish from other features
**Summary Guidelines**:
- Include business value and user impact
- Mention key technical components or integrations
- Define success criteria or completion indicators
- Keep scope clear and bounded
**Tagging Strategy**:
- Include functional area: "authentication", "payments", "reporting"
- Add technical stack: "frontend", "backend", "database", "api"
- Mark business importance: "core", "enhancement", "experimental"
- Include user-facing impact: "user-experience", "admin-tools", "internal"
Example successful response:
{
"success": true,
"message": "Feature created successfully with 2 template(s) applied, creating 5 section(s)",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "User Authentication System",
"summary": "Complete user authentication system with OAuth 2.0, JWT tokens, and social login integration. Provides secure user registration, login, password reset, and session management.",
"status": "planning",
"priority": "high",
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T14:30:00Z",
"tags": ["core", "authentication", "security", "user-experience", "oauth"],
"appliedTemplates": [
{
"templateId": "context-background-uuid",
"sectionsCreated": 2
},
{
"templateId": "requirements-spec-uuid",
"sectionsCreated": 3
}
]
}
}
For feature creation patterns and best practices, see: task-orchestrator://guidelines/task-management
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation (empty name/summary)
- RESOURCE_NOT_FOUND: When specified projectId or templateIds don't exist
- DATABASE_ERROR: When there's an issue storing the feature or applying templates
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
name | string | Required feature name (e.g., 'User Authentication', 'Data Export') |
summary | string | Required feature summary describing its purpose and scope |
priority | string optional | Priority level. Valid values: 'high', 'medium', 'low' |
projectId | string optional | Optional UUID of the project this feature belongs to (e.g., '550e8400-e29b-41d4-a716-446655440000') |
status | string optional | Feature status. Valid values: 'planning', 'in-development', 'completed', 'archived' |
tags | string optional | Comma-separated list of tags for categorization (e.g., 'frontend,ui,critical') |
templateIds | array optional | List of template IDs to apply. Use a single-item array for applying just one template. |
create_project
Implement the CreateProjectTool MCP tool for creating new projects. Define parameter schema and validation for all required and optional fields (name, summary, status, tags). Implement tool execution logic to create and persist project entities.
This tool creates a new Project entity in the MCP Task Orchestrator system. Projects are top-level organizational containers that can group related features and tasks together. Each project requires a name and summary, and can optionally include status information and tags for categorization.
Projects provide a higher level of organization above features, allowing you to manage work across multiple features and their related tasks.
Example successful response:
{
"success": true,
"message": "Project created successfully",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Mobile App Redesign",
"summary": "Complete redesign of the mobile application with improved UI/UX",
"status": "planning",
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T14:30:00Z",
"tags": ["mobile", "ui", "2025-roadmap"]
},
"error": null,
"metadata": {
"timestamp": "2025-05-10T14:30:00Z"
}
}
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation
- DATABASE_ERROR: When there's an issue storing the project
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
name | string | Project name (e.g., 'Mobile App Redesign', 'Backend API') |
summary | string | Project description explaining its purpose and scope |
status | string optional | Project status. Valid values: 'planning', 'in-development', 'completed', 'archived' |
tags | string optional | Comma-separated list of tags for categorization (e.g., 'frontend,mobile,2025-roadmap') |
create_task
Creates a new task with the specified properties.
## Purpose
Tasks are the primary work items in the system and can be organized into Features.
Each task has basic metadata (title, status, etc.) and can have Sections for detailed content.
## Template Integration
RECOMMENDED: Apply templates at creation time using templateIds parameter for consistent
documentation structure. Use `list_templates` first to find appropriate templates.
Template application creates standardized sections automatically:
- Use single-item array for one template: ["template-uuid"]
- Use multiple templates for comprehensive coverage: ["uuid1", "uuid2"]
- Templates are applied in order, with later templates' sections appearing after earlier ones
## Best Practices
- Use descriptive titles that clearly indicate the work to be done
- Write comprehensive summaries with acceptance criteria when helpful
- Set appropriate complexity ratings (1=trivial, 10=highly complex)
- Use consistent tagging conventions (e.g., "task-type-feature", "task-type-bug")
- Associate with features when the task is part of larger functionality
- Apply templates that match the work type (implementation, testing, documentation)
## Entity Relationships
- Tasks can belong to Features (use featureId to establish relationship)
- Tasks can belong to Projects (use projectId for top-level organization)
- Use dependencies to link related tasks (see create_dependency tool)
## Workflow Integration
Tasks integrate with the complete project management workflow:
1. Start with get_overview to understand current work
2. Create task with appropriate templates and metadata
3. Use add_section or bulk_create_sections for additional content
4. Update status as work progresses (pending → in_progress → completed)
5. Create dependencies between related tasks
Example successful response:
{
"success": true,
"message": "Task created successfully with 2 template(s) applied, creating 6 section(s)",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Implement OAuth Authentication API",
"summary": "Create secure API endpoints for OAuth 2.0 authentication with JWT tokens",
"status": "pending",
"priority": "high",
"complexity": 8,
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T14:30:00Z",
"featureId": "661e8511-f30c-41d4-a716-557788990000",
"tags": ["task-type-feature", "oauth", "authentication", "api", "security"],
"appliedTemplates": [
{
"templateId": "technical-approach-uuid",
"sectionsCreated": 3
},
{
"templateId": "implementation-workflow-uuid",
"sectionsCreated": 3
}
]
}
}
For task creation patterns and best practices, see: task-orchestrator://guidelines/task-management
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation (empty title/summary, invalid UUIDs)
- RESOURCE_NOT_FOUND: When specified featureId, projectId, or templateIds don't exist
- DATABASE_ERROR: When there's an issue storing the task or applying templates
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
summary | string | Brief summary of the task content (required for task creation) |
title | string | The title of the task (required) |
complexity | integer optional | Task complexity on a scale from 1-10 (1=simplest, 10=most complex) |
featureId | string optional | Optional UUID of the feature this task belongs to (e.g., '550e8400-e29b-41d4-a716-446655440000') |
priority | string optional | Task priority. Valid values: 'high', 'medium', 'low' |
projectId | string optional | Optional UUID of the project this task belongs to (e.g., '550e8400-e29b-41d4-a716-446655440000') |
status | string optional | Task status. Valid values: 'pending', 'in-progress', 'completed', 'cancelled', 'deferred' |
tags | string optional | Comma-separated list of tags for categorization (e.g., 'api,backend,urgent') |
templateIds | array optional | List of template IDs to apply. Use a single-item array for applying just one template. |
create_template
Creates a new template with required and optional fields.
Templates provide reusable patterns for structuring task and feature documentation.
Each template has metadata and can contain multiple section definitions.
Example successful response:
{
"success": true,
"message": "Template created successfully",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "User Authentication",
"description": "Implement secure user authentication system",
"targetEntityType": "TASK",
"isBuiltIn": false,
"isProtected": false,
"isEnabled": true,
"createdBy": "Claude",
"tags": ["security", "login", "user-management"],
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T14:30:00Z"
}
}
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation
- CONFLICT_ERROR: When a template with the same name already exists
- DATABASE_ERROR: When there's an issue storing the template
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
description | string | Required template description explaining its purpose and scope |
name | string | Required template name (e.g., 'User Authentication', 'Data Export') |
targetEntityType | string | Type of entity this template is for: 'TASK' or 'FEATURE' |
createdBy | string optional | Optional creator identifier (default: null) |
isBuiltIn | boolean optional | Whether this is a built-in template (default: false) |
isEnabled | boolean optional | Whether this template is enabled for use (default: true) |
isProtected | boolean optional | Whether this template is protected from modification (default: false) |
tags | string optional | Comma-separated list of tags for categorization (e.g., 'frontend,ui,critical') |
delete_dependency
Deletes task dependencies by dependency ID or by task relationship criteria.
This tool provides flexible dependency deletion capabilities. You can delete dependencies:
- By specific dependency ID (most precise)
- By task relationship (fromTaskId and toTaskId with optional type filter)
- All dependencies for a specific task (using deleteAll parameter)
Example successful response:
{
"success": true,
"message": "Dependency deleted successfully",
"data": {
"deletedCount": 1,
"deletedDependencies": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"fromTaskId": "661e8511-f30c-41d4-a716-557788990000",
"toTaskId": "772f9622-g41d-52e5-b827-668899101111",
"type": "BLOCKS"
}
]
}
}
Common error responses:
- RESOURCE_NOT_FOUND: When the specified dependency doesn't exist
- VALIDATION_ERROR: When provided parameters fail validation
- DATABASE_ERROR: When there's an issue deleting the dependency
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
deleteAll | boolean optional | When used with fromTaskId OR toTaskId (not both), deletes all dependencies for that task |
fromTaskId | string optional | ID of the source task (used with toTaskId for relationship-based deletion) |
id | string optional | ID of the specific dependency to delete (mutually exclusive with task relationship parameters) |
toTaskId | string optional | ID of the target task (used with fromTaskId for relationship-based deletion) |
type | string optional | Filter by dependency type when using task relationship deletion (optional) |
delete_feature
Remove a feature and its associated tasks
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the feature to delete |
cascade | boolean optional | Whether to delete tasks associated with this feature |
force | boolean optional | Whether to force deletion even with active tasks |
hardDelete | boolean optional | Whether to completely remove the feature from the database |
delete_project
Remove a project and its associated features/tasks
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the project to delete |
cascade | boolean optional | Whether to delete all features and tasks associated with this project |
force | boolean optional | Whether to force deletion even with active features or tasks |
hardDelete | boolean optional | Whether to permanently remove the project from the database |
delete_section
Deletes a section by its ID
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the section to delete |
delete_task
Deletes a task by its ID
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the task to delete |
cascade | boolean optional | Whether to also delete subtasks |
deleteSections | boolean optional | Whether to also delete associated sections |
force | boolean optional | Whether to delete even if other tasks depend on this one. When true, breaks dependency chains and deletes all associated dependencies. |
hardDelete | boolean optional | Whether to permanently delete the task (true) or soft delete it (false) |
delete_template
Deletes a user-created template. Built-in templates cannot be deleted.
Parameters:
- id (required): UUID of the template to delete
- force (optional): Boolean flag to override protection, defaults to false
Validation Rules:
- Template must exist
- Built-in templates cannot be deleted
- If a user attempts to delete a built-in template, they will get back an error message
instructing them to use 'disable_template' instead
Example:
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
```
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the template to delete |
force | boolean optional | Whether to override protection (use with caution) |
disable_template
Disables a template including system templates. Disabled templates are not available for use.
Parameters:
- id (required): UUID of the template to disable
Validation Rules:
- Template must exist
Example:
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
```
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the template to disable |
enable_template
Enables a previously disabled template, making it available for use again.
Parameters:
- id (required): UUID of the template to enable
Validation Rules:
- Template must exist
Example:
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
```
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the template to enable |
feature_to_markdown
Transforms a feature into markdown format with YAML frontmatter.
This tool retrieves a feature and all its sections, then renders them as a markdown document
with YAML frontmatter containing feature metadata. The output is suitable for:
- File export and documentation generation
- Systems that can render markdown directly
- Version control and diff-friendly storage
- Human-readable feature archives
The markdown output includes:
- YAML frontmatter with feature metadata (id, name, status, priority, tags, dates)
- Feature summary as the first content paragraph
- All sections rendered according to their content format (markdown, code, JSON, plain text)
For inspecting feature details in structured JSON format, use get_feature instead.
Parameters | Type | Description |
---|---|---|
id | string | The unique ID (UUID) of the feature to transform to markdown (e.g., '550e8400-e29b-41d4-a716-446655440000') |
get_feature
Retrieves a feature by its ID with options for including relationships.
## Purpose
Fetches a complete feature by its UUID with options to include related entities like
tasks and task statistics. This tool allows getting detailed information about a specific
feature when its ID is known.
Note: Features store their detailed content in separate Section entities for efficiency.
To retrieve the complete feature with all content blocks, make sure to set includeSections=true.
Otherwise, you'll only receive the basic feature metadata and summary.
## Parameters
| Parameter | Type | Required | Default | Description |
| id | UUID string | Yes | - | The unique ID of the feature to retrieve (e.g., '550e8400-e29b-41d4-a716-446655440000') |
| includeTasks | boolean | No | false | Whether to include basic task information in the response. Set to true when you need to see all tasks associated with this feature. |
| maxTaskCount | integer | No | 10 | Maximum number of tasks to include (1-100) |
| includeTaskCounts | boolean | No | false | Whether to include task statistics grouped by status |
| includeTaskDependencies | boolean | No | false | Whether to include dependency information for tasks when includeTasks is true |
| includeSections | boolean | No | false | Whether to include sections (detailed content blocks) that contain the full content of the feature. Set to true when you need the complete feature context beyond the basic summary. |
| summaryView | boolean | No | false | Whether to return a summarized view for context efficiency (truncates text fields) |
| maxsummaryLength | integer | No | 500 | Maximum length for summary before truncation when in summary view |
## Response Format
### Success Response
```json
{
"success": true,
"message": "Feature retrieved successfully",
"data": {
"id": "661e8511-f30c-41d4-a716-557788990000",
"name": "REST API Implementation",
"summary": "Implement the core REST API endpoints...",
"status": "in-development",
"priority": "high",
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T15:45:00Z",
"tags": ["api", "backend"],
"taskCounts": {
"total": 15,
"byStatus": {
"pending": 5,
"in-progress": 8,
"completed": 2
}
},
"sections": [
{
"id": "772f9622-g41d-52e5-b827-668899101111",
"title": "Requirements",
"content": "The API should support CRUD operations...",
"contentFormat": "markdown",
"ordinal": 0
}
],
"tasks": {
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Implement User API",
"status": "in-progress",
"priority": "high",
"complexity": 7,
"dependencies": {
"counts": {
"total": 3,
"incoming": 1,
"outgoing": 2
}
}
},
// More tasks...
],
"total": 15,
"included": 10,
"hasMore": true,
"dependencyStatistics": {
"totalDependencies": 25,
"totalIncomingDependencies": 12,
"totalOutgoingDependencies": 13,
"tasksWithDependencies": 8
}
}
}
}
```
## Error Responses
- RESOURCE_NOT_FOUND (404): When no feature exists with the specified ID
- VALIDATION_ERROR (400): When the provided ID is not a valid UUID
- DATABASE_ERROR (500): When there's an issue retrieving data from the database
- INTERNAL_ERROR (500): For unexpected system errors during execution
## Usage Examples
1. Get basic feature information:
```json
{
"id": "661e8511-f30c-41d4-a716-557788990000"
}
```
2. Get feature with tasks and counts:
```json
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"includeTasks": true,
"includeTaskCounts": true
}
```
3. Get feature with sections (detailed content):
```json
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"includeSections": true
}
```
4. Get complete feature with all relationships:
```json
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"includeTasks": true,
"includeTaskCounts": true,
"includeSections": true
}
```
5. Get feature with tasks and their dependency information:
```json
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"includeTasks": true,
"includeTaskDependencies": true
}
```
6. Get summarized feature information (for context efficiency):
```json
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"summaryView": true
}
```
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the feature to retrieve |
includeSections | boolean optional | Whether to include sections (detailed content blocks) that contain the full content of the feature. |
includeTaskCounts | boolean optional | Whether to include task statistics grouped by status. Useful for getting a quick overview of task progress. |
includeTaskDependencies | boolean optional | Whether to include dependency information for tasks when includeTasks is true |
includeTasks | boolean optional | Whether to include basic task information in the response. Set to true when you need to see all tasks associated with this feature. |
maxTaskCount | integer optional | Maximum number of tasks to include |
maxsummaryLength | integer optional | Maximum length for summary (truncates if longer) |
summaryView | boolean optional | Whether to return a summarized view for context efficiency |
get_overview
Retrieves a lightweight, token-efficient overview of tasks and features.
## Purpose
This tool provides a hierarchical project overview optimized for context efficiency.
Essential for understanding current work state and making informed task planning decisions.
## Usage Guidance
**RECOMMENDED WORKFLOW START**: Always begin work sessions with get_overview to:
- Understand current project state and priorities
- Identify in-progress tasks that need attention
- Plan new work based on existing features and tasks
- Locate orphaned tasks that might need feature association
## Data Organization
- **Features**: Top-level functionality groupings with their associated tasks
- **Orphaned Tasks**: Tasks not associated with any feature (may need organization)
- **Hierarchical View**: Tasks organized under their parent features for clear context
- **Essential Metadata**: Status, priority, complexity without full content for efficiency
## Context Efficiency Features
- Configurable summary length (0-200 chars) to control token usage
- Essential metadata only (no full task content or sections)
- Hierarchical organization reduces cognitive overhead
- Count summaries provide quick project metrics
## Integration with Other Tools
Use this overview to inform decisions for:
- `create_task`: Understand existing work before creating new tasks
- `create_feature`: Identify orphaned tasks that could be grouped
- `update_task`: Find tasks that need status updates
- `search_tasks`: Narrow down specific searches based on overview insights
## Best Practices
- Run get_overview at the start of work sessions
- Use summaryLength=0 when you only need structure and metadata
- Use summaryLength=100-200 when you need content context
- Pay attention to orphaned tasks - they may need feature association
- Monitor task status distribution across features
Example response:
{
"success": true,
"message": "Task overview retrieved successfully",
"data": {
"features": [
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"name": "User Authentication",
"status": "in-development",
"summary": "Implements secure user authentication mechanisms with OAuth 2.0 and JWT tokens...",
"tasks": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Implement OAuth Authentication API",
"summary": "Create secure authentication flow with OAuth 2.0 protocol and JWT token management...",
"status": "in-progress",
"priority": "high",
"complexity": 8,
"tags": "task-type-feature, oauth, authentication, api"
}
]
}
],
"orphanedTasks": [
{
"id": "772f9622-g41d-52e5-b827-668899101111",
"title": "Setup CI/CD Pipeline",
"summary": "Configure automated build and deployment pipeline using GitHub Actions...",
"status": "pending",
"priority": "medium",
"complexity": 6,
"tags": "task-type-infrastructure, ci-cd, automation"
}
],
"counts": {
"features": 5,
"tasks": 23,
"orphanedTasks": 7
}
}
}
Parameters | Type | Description |
---|---|---|
summaryLength | integer optional | Maximum length of task/feature summaries (0 to exclude summaries) |
get_project
Retrieves a project by its ID with options for including relationships.
This tool provides detailed access to a specific project with options to include related entities like
features, tasks, and sections. Projects are top-level organizational containers that group related work together.
The tool supports progressive loading of details to optimize context usage, allowing you to request only the
information you need. For large projects, you can limit the number of related entities returned.
Parameters | Type | Description |
---|---|---|
id | string | The unique ID (UUID) of the project to retrieve |
includeFeatures | boolean optional | Whether to include basic feature information in the response |
includeSections | boolean optional | Whether to include sections (detailed content blocks) in the response |
includeTasks | boolean optional | Whether to include basic task information in the response |
maxFeatureCount | integer optional | Maximum number of features to include (1-100) |
maxTaskCount | integer optional | Maximum number of tasks to include (1-100) |
summaryView | boolean optional | Whether to return a summarized view for context efficiency |
get_sections
Retrieves sections for a task, feature, or project.
## Purpose
Sections contain detailed content for tasks, features, and projects in a structured format.
Each section has a specific purpose, content format, and ordering position. This tool
allows retrieving all sections for a specified entity.
## Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| entityType | string | Yes | - | Type of entity to retrieve sections for: 'PROJECT', 'TASK', or 'FEATURE' |
| entityId | UUID string | Yes | - | ID of the entity to retrieve sections for (e.g., '550e8400-e29b-41d4-a716-446655440000') |
| includeContent | boolean | No | true | Whether to include section content. Set false to get only metadata (saves 85-99% tokens) |
| sectionIds | array | No | all | Optional list of specific section IDs to retrieve. Allows selective loading of sections |
## Response Format
### Success Response
```json
{
"success": true,
"message": "Sections retrieved successfully",
"data": {
"sections": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Requirements",
"usageDescription": "Key requirements for this task",
"content": "1. Must support OAuth2\\n2. Handle token refresh\\n3. Implement rate limiting",
"contentFormat": "MARKDOWN",
"ordinal": 0,
"tags": ["requirements", "security"],
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T14:30:00Z"
},
{
"id": "661f9511-f30c-52e5-b827-557766551111",
"title": "Implementation Notes",
"usageDescription": "Technical details and implementation guidance",
"content": "Use the AuthLib 2.0 library for OAuth implementation...",
"contentFormat": "MARKDOWN",
"ordinal": 1,
"tags": ["implementation", "technical"],
"createdAt": "2025-05-10T14:35:00Z",
"modifiedAt": "2025-05-10T15:20:00Z"
}
],
"entityType": "TASK",
"entityId": "772f9622-g41d-52e5-b827-668899101111",
"count": 2
}
}
```
### Empty Result Response
```json
{
"success": true,
"message": "No sections found for task",
"data": {
"sections": [],
"entityType": "TASK",
"entityId": "772f9622-g41d-52e5-b827-668899101111",
"count": 0
}
}
```
## Error Responses
- RESOURCE_NOT_FOUND (404): When the specified task or feature doesn't exist
```json
{
"success": false,
"message": "The specified task was not found",
"error": {
"code": "RESOURCE_NOT_FOUND"
}
}
```
- VALIDATION_ERROR (400): When parameters fail validation
```json
{
"success": false,
"message": "Invalid entity type: INVALID. Must be one of: TASK, FEATURE",
"error": {
"code": "VALIDATION_ERROR"
}
}
```
- DATABASE_ERROR (500): When there's an issue retrieving sections from the database
- INTERNAL_ERROR (500): For unexpected system errors during execution
## Usage Examples
1. Get all sections with full content (default behavior):
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000"
}
```
2. Browse section structure without content (85-99% token savings):
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"includeContent": false
}
```
Returns only: id, title, usageDescription, contentFormat, ordinal, tags
3. Get specific sections by ID (selective loading):
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"sectionIds": ["section-id-1", "section-id-3"]
}
```
4. Two-step workflow - browse then fetch:
Step 1: Get section metadata
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"includeContent": false
}
```
Step 2: Fetch specific sections with content
```json
{
"entityType": "TASK",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"sectionIds": ["requirements-section-id", "testing-section-id"]
}
```
## Content Formats
Sections support multiple content formats:
- MARKDOWN: Formatted text with Markdown syntax (default)
- PLAIN_TEXT: Unformatted plain text
- JSON: Structured data in JSON format
- CODE: Source code and implementation details
## Common Section Types
While you can create sections with any title, common section types include:
- Requirements: Task or feature requirements (what needs to be done)
- Implementation Notes: Technical details on how to implement
- Testing Strategy: How to test the implementation
- Reference Information: External links and resources
- Architecture: Design and architecture details
- Dependencies: Dependencies on other components
Parameters | Type | Description |
---|---|---|
entityId | string | ID of the entity to retrieve sections for (e.g., '550e8400-e29b-41d4-a716-446655440000') |
entityType | string | Type of entity to retrieve sections for: 'PROJECT', 'TASK', or 'FEATURE' |
includeContent | boolean optional | Whether to include section content. Set to false to retrieve only section metadata (title, ordinal, format) without content, saving significant tokens. Default: true |
sectionIds | array optional | Optional list of specific section IDs to retrieve. If provided, only sections with these IDs will be returned. Use with includeContent=false to first browse available sections, then fetch specific ones. |
get_task
Retrieves a task by its ID with options for including relationships.
## Purpose
Fetches a complete task by its UUID with options to include related entities like
sections, subtasks, dependencies, and feature information for context. This tool allows
getting detailed information about a specific task when its ID is known.
Note: Tasks store their detailed content in separate Section entities for efficiency.
To retrieve the complete task with all content blocks, make sure to set includeSections=true.
Otherwise, you'll only receive the basic task metadata and summary.
## Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| id | UUID string | Yes | - | The unique ID of the task to retrieve (e.g., '550e8400-e29b-41d4-a716-446655440000') |
| includeSubtasks | boolean | No | false | Whether to include subtasks in the response (experimental feature) |
| includeDependencies | boolean | No | false | Whether to include dependency information (incoming and outgoing dependencies with counts) |
| includeFeature | boolean | No | false | Whether to include feature information if the task belongs to a feature |
| includeSections | boolean | No | false | Whether to include sections (detailed content blocks) that contain the full content of the task. Set to true when you need the complete task context beyond the basic summary. |
| summaryView | boolean | No | false | Whether to return a summarized view for context efficiency (truncates text fields) |
## Response Format
### Success Response
```json
{
"success": true,
"message": "Task retrieved successfully",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Implement API",
"summary": "Create REST API endpoints for data access",
"status": "in-progress",
"priority": "high",
"complexity": 7,
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T15:45:00Z",
"featureId": "661e8511-f30c-41d4-a716-557788990000",
"tags": ["api", "backend"],
"feature": {
"id": "661e8511-f30c-41d4-a716-557788990000",
"name": "REST API Implementation",
"status": "in-development"
},
"sections": [
{
"id": "772f9622-g41d-52e5-b827-668899101111",
"title": "Requirements",
"content": "The API should support CRUD operations...",
"contentFormat": "markdown",
"ordinal": 0
}
]
}
}
```
## Error Responses
- RESOURCE_NOT_FOUND (404): When no task exists with the specified ID
```json
{
"success": false,
"message": "Task not found",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": "No task exists with ID 550e8400-e29b-41d4-a716-446655440000"
}
}
```
- VALIDATION_ERROR (400): When the provided ID is not a valid UUID
```json
{
"success": false,
"message": "Invalid input",
"error": {
"code": "VALIDATION_ERROR",
"details": "Invalid task ID format. Must be a valid UUID."
}
}
```
- DATABASE_ERROR (500): When there's an issue retrieving data from the database
- INTERNAL_ERROR (500): For unexpected system errors during execution
## Usage Examples
1. Get basic task information:
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
```
2. Get task with all relationships:
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"includeFeature": true,
"includeSections": true,
"includeSubtasks": true,
"includeDependencies": true
}
```
3. Get summarized task information (for context efficiency):
```json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"summaryView": true
}
```
Parameters | Type | Description |
---|---|---|
id | string | The unique ID (UUID) of the task to retrieve (e.g., '550e8400-e29b-41d4-a716-446655440000') |
includeDependencies | boolean optional | Whether to include dependency information (incoming and outgoing dependencies with counts) |
includeFeature | boolean optional | Whether to include feature information in the response if the task belongs to a feature |
includeSections | boolean optional | Whether to include sections (detailed content blocks) in the response |
includeSubtasks | boolean optional | Whether to include subtasks in the response (experimental feature) |
summaryView | boolean optional | Whether to return a summarized view for context efficiency (truncates text fields) |
get_task_dependencies
Retrieves all dependencies for a specific task with filtering options and dependency chain information.
This tool provides comprehensive dependency information for a task, allowing you to understand
how a task relates to other tasks in the system. It supports filtering by dependency type
and direction for focused queries.
Example successful response:
{
"success": true,
"message": "Dependencies retrieved successfully",
"data": {
"taskId": "550e8400-e29b-41d4-a716-446655440000",
"dependencies": {
"incoming": [
{
"id": "661e8511-f30c-41d4-a716-557788990000",
"fromTaskId": "772f9622-g41d-52e5-b827-668899101111",
"toTaskId": "550e8400-e29b-41d4-a716-446655440000",
"type": "BLOCKS",
"createdAt": "2025-05-10T14:30:00Z"
}
],
"outgoing": [
{
"id": "883f0733-h52e-63f6-c938-779900212222",
"fromTaskId": "550e8400-e29b-41d4-a716-446655440000",
"toTaskId": "994f1844-i63f-74g7-d049-8800a1323333",
"type": "BLOCKS",
"createdAt": "2025-05-10T15:00:00Z"
}
]
},
"counts": {
"total": 2,
"incoming": 1,
"outgoing": 1,
"byType": {
"BLOCKS": 2,
"IS_BLOCKED_BY": 0,
"RELATES_TO": 0
}
}
}
}
Common error responses:
- RESOURCE_NOT_FOUND: When the specified task doesn't exist
- VALIDATION_ERROR: When provided parameters fail validation
- DATABASE_ERROR: When there's an issue retrieving dependencies
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
taskId | string | ID of the task to retrieve dependencies for |
direction | string optional | Filter by dependency direction: 'incoming' (dependencies pointing to this task), 'outgoing' (dependencies from this task), or 'all' (both directions) |
includeTaskInfo | boolean optional | Whether to include basic task information (title, status) for related tasks |
type | string optional | Filter by dependency type: 'BLOCKS', 'IS_BLOCKED_BY', 'RELATES_TO', or 'all' for all types |
get_template
Retrieve a complete template by ID with options for including sections
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the template to retrieve |
includeSections | boolean optional | Whether to include sections in the response |
list_templates
Retrieve a list of templates with optional filtering.
## Purpose
CRITICAL for template-driven workflow: Always check available templates before creating
tasks or features to ensure consistent documentation structure and comprehensive coverage.
## Template System Overview
The system provides focused, composable templates organized into categories:
**AI Workflow Instructions** (process guidance):
- Local Git Branching Workflow: Step-by-step git workflow with MCP tool integration
- GitHub PR Workflow: Complete PR creation and management process
- Task Implementation Workflow: Structured implementation approach
- Bug Investigation Workflow: Systematic bug analysis and resolution
**Documentation Properties** (information capture):
- Technical Approach: Architecture and implementation strategy
- Requirements Specification: Detailed requirements and acceptance criteria
- Context & Background: Project context and background information
**Process & Quality** (standards and completion):
- Testing Strategy: Comprehensive testing approach and coverage
- Definition of Done: Clear completion criteria and quality gates
## Usage Patterns
**RECOMMENDED WORKFLOW**:
1. Run `list_templates` with targetEntityType filter (TASK or FEATURE)
2. Identify templates from multiple categories for comprehensive coverage
3. Apply templates during create_task/create_feature using templateIds parameter
4. Use template combinations: Workflow + Documentation + Quality
## Template Selection Strategy
**For Implementation Tasks**:
- Technical Approach + Task Implementation Workflow + Testing Strategy
**For Bug Fixes**:
- Bug Investigation Workflow + Technical Approach + Definition of Done
**For Complex Features**:
- Requirements Specification + Technical Approach + Local Git Branching + Testing Strategy
**For Feature Planning**:
- Context & Background + Requirements Specification + Testing Strategy
## Filtering Best Practices
- Filter by targetEntityType to match your creation needs (TASK vs FEATURE)
- Use isEnabled=true to only see available templates
- Filter by tags to find domain-specific templates ("authentication", "api", "testing")
- Built-in templates (isBuiltIn=true) provide proven workflow patterns
## Context Efficiency
Templates are designed for modular composition rather than monolithic coverage:
- Small, focused templates (3-4 sections each) reduce cognitive overhead
- Composable design allows mixing based on specific needs
- Category-based organization helps with systematic selection
Example successful response:
{
"success": true,
"message": "Retrieved 8 templates",
"data": {
"templates": [
{
"id": "workflow-uuid-001",
"name": "Task Implementation Workflow",
"description": "Step-by-step implementation guidance with MCP tool integration",
"targetEntityType": "TASK",
"isBuiltIn": true,
"isProtected": true,
"isEnabled": true,
"tags": ["workflow", "implementation", "process"]
},
{
"id": "tech-uuid-002",
"name": "Technical Approach",
"description": "Architecture and implementation strategy documentation",
"targetEntityType": "TASK",
"isBuiltIn": true,
"isProtected": true,
"isEnabled": true,
"tags": ["technical", "architecture", "documentation"]
},
{
"id": "test-uuid-003",
"name": "Testing Strategy",
"description": "Comprehensive testing approach and coverage requirements",
"targetEntityType": "TASK",
"isBuiltIn": true,
"isProtected": true,
"isEnabled": true,
"tags": ["testing", "quality", "coverage"]
}
],
"count": 8,
"filters": {
"targetEntityType": "TASK",
"isBuiltIn": "Any",
"isEnabled": "true",
"tags": "Any"
}
}
}
For template discovery patterns and selection strategies, see: task-orchestrator://guidelines/template-strategy
Common error responses:
- VALIDATION_ERROR: When targetEntityType is not TASK or FEATURE
- DATABASE_ERROR: When there's an issue retrieving templates
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
isBuiltIn | boolean optional | Filter for built-in templates only |
isEnabled | boolean optional | Filter for enabled templates only |
tags | string optional | Filter by tags (comma-separated) |
targetEntityType | string optional | Filter by entity type (TASK or FEATURE) |
project_to_markdown
Transforms a project into markdown format with YAML frontmatter.
This tool retrieves a project and all its sections, then renders them as a markdown document
with YAML frontmatter containing project metadata. The output is suitable for:
- File export and documentation generation
- Systems that can render markdown directly
- Version control and diff-friendly storage
- Human-readable project archives
The markdown output includes:
- YAML frontmatter with project metadata (id, name, status, tags, dates)
- Project summary as the first content paragraph
- All sections rendered according to their content format (markdown, code, JSON, plain text)
For inspecting project details in structured JSON format, use get_project instead.
Parameters | Type | Description |
---|---|---|
id | string | The unique ID (UUID) of the project to transform to markdown (e.g., '550e8400-e29b-41d4-a716-446655440000') |
reorder_sections
Reorders sections within a template or other entity. This tool changes the display order of sections by updating their ordinal values.
This is useful for reorganizing content without having to send the content itself,
which is more efficient for context usage.
Parameters:
- entityType (required): Type of entity (TEMPLATE, TASK, FEATURE)
- entityId (required): ID of the entity
- sectionOrder (required): New order of section IDs
Validation Rules:
- Entity must exist
- All sections must exist and belong to the entity
- All sections of the entity must be included
Parameters | Type | Description |
---|---|---|
entityId | string | ID of the entity |
entityType | string | Type of entity (TEMPLATE, TASK, FEATURE) |
sectionOrder | string | Comma-separated list of section IDs in the desired order |
search_features
Find features matching specified criteria
Parameters | Type | Description |
---|---|---|
createdAfter | string optional | Filter by creation date after this ISO-8601 date (e.g., 2025-05-10T14:30:00Z) |
createdBefore | string optional | Filter by creation date before this ISO-8601 date (e.g., 2025-05-10T14:30:00Z) |
limit | integer optional | Maximum number of results to return |
offset | integer optional | Number of results to skip (for pagination) |
priority | string optional | Filter by priority (high, medium, low) |
projectId | string optional | Filter by project ID (UUID) to get only features for a specific project |
query | string optional | Text to search for in feature names and descriptions |
sortBy | string optional | Sort results by this field (createdAt, modifiedAt, name, status, priority) |
sortDirection | string optional | Sort direction (asc, desc) |
status | string optional | Filter by feature status (planning, in-development, completed, archived) |
tag | string optional | Filter by tag (features containing this tag) |
search_projects
Find projects matching specified criteria
Parameters | Type | Description |
---|---|---|
createdAfter | string optional | Filter by creation date after this ISO-8601 date (e.g., 2025-05-10T14:30:00Z) |
createdBefore | string optional | Filter by creation date before this ISO-8601 date (e.g., 2025-05-10T14:30:00Z) |
limit | integer optional | Maximum number of results to return |
offset | integer optional | Number of results to skip (for pagination) |
query | string optional | Text to search for in project names and summaries |
sortBy | string optional | Sort results by this field (createdAt, modifiedAt, name, status) |
sortDirection | string optional | Sort direction (asc, desc) |
status | string optional | Filter by project status (planning, in-development, completed, archived) |
tag | string optional | Filter by tag (projects containing this tag) |
search_tasks
Searches for tasks based on various criteria.
## Purpose
Provides flexible task discovery and filtering capabilities for project management,
work planning, and task analysis. Essential for finding specific tasks or analyzing
work patterns across the project.
## Search Strategy Guidelines
**Start Broad, Narrow Down**:
1. Begin with no parameters to see all tasks
2. Add status filter to focus on specific work states
3. Add priority filter for urgency-based searches
4. Use tag filters for domain-specific searches
5. Combine multiple filters for precise targeting
**Common Search Patterns**:
**Finding Work to Do**:
```json
{
"status": "pending",
"priority": "high",
"sortBy": "priority",
"sortDirection": "desc"
}
```
**Reviewing In-Progress Work**:
```json
{
"status": "in-progress",
"sortBy": "modifiedAt",
"sortDirection": "desc"
}
```
**Finding Feature-Specific Tasks**:
```json
{
"featureId": "feature-uuid",
"sortBy": "complexity",
"sortDirection": "asc"
}
```
**Tag-Based Searches** (using consistent tagging conventions):
```json
{
"tag": "task-type-bug",
"priority": "high"
}
```
**Text-Based Discovery**:
```json
{
"query": "authentication oauth",
"sortBy": "modifiedAt"
}
```
## Filter Combinations for Different Use Cases
**Sprint Planning**:
- Filter by status="pending" and priority="high" or "medium"
- Sort by complexity to group similar-sized work
- Use pagination to handle large backlogs
**Bug Triage**:
- Filter by tag="task-type-bug"
- Sort by priority and modifiedAt
- Review high priority bugs first
**Feature Development**:
- Filter by featureId to see all related tasks
- Sort by status to see progression
- Check complexity distribution for estimation
**Technical Debt Management**:
- Filter by tag="technical-debt" or tag="refactoring"
- Sort by complexity to tackle manageable items
- Combine with priority for impact assessment
## Pagination Best Practices
**Default Behavior**: No parameters returns all tasks, newest first, 20 per page
**Efficiency Guidelines**:
- Use limit=5-10 for quick overviews
- Use limit=50-100 for comprehensive analysis
- Use offset for paging through large result sets
- Sort by modifiedAt for recent activity
- Sort by priority for work planning
- Sort by complexity for estimation analysis
## Integration with Other Tools
**After Search Results**:
- Use `get_task` with includeSections=true for detailed task info
- Use `update_task` to modify status, priority, or assignments
- Use `create_dependency` to link related tasks found in search
- Use `get_feature` to understand feature context for tasks
**Complement get_overview**:
- get_overview: High-level project state and hierarchical view
- search_tasks: Detailed filtering and analysis of specific task subsets
## Context Efficiency Features
**Lightweight Results**: Returns essential metadata without summary, full content, or sections
**Excluded Fields**: Summary field excluded from search results (use get_task to retrieve)
**Paginated Results**: Controls token usage for large datasets
**Flexible Sorting**: Enables different analytical perspectives
**Multiple Filters**: Precise targeting reduces noise
Example successful response:
{
"success": true,
"message": "Found 12 tasks",
"data": {
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Implement OAuth Authentication API",
"status": "in-progress",
"priority": "high",
"complexity": 8,
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-10T15:45:00Z",
"featureId": "661e8511-f30c-41d4-a716-557788990000",
"tags": ["task-type-feature", "oauth", "authentication", "api", "security"]
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"totalItems": 12,
"totalPages": 1,
"hasNext": false,
"hasPrevious": false
}
}
}
Common error responses:
- VALIDATION_ERROR: When provided parameters fail validation (invalid status, priority, UUID)
- DATABASE_ERROR: When there's an issue searching for tasks
- INTERNAL_ERROR: For unexpected system errors
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
featureId | string optional | Filter by feature ID (UUID) to get only tasks for a specific feature (e.g., '550e8400-e29b-41d4-a716-446655440000') |
limit | integer optional | Maximum number of results to return |
offset | integer optional | Number of results to skip (for pagination) |
priority | string optional | Filter by task priority. Valid values: 'high', 'medium', 'low' |
projectId | string optional | Filter by project ID (UUID) to get only tasks for a specific project (e.g., '550e8400-e29b-41d4-a716-446655440000') |
query | string optional | Text to search for in task titles and descriptions (searches both fields for partial matches) |
sortBy | string optional | Field to sort results by: 'createdAt', 'modifiedAt', 'priority', 'status', or 'complexity' |
sortDirection | string optional | Sort direction: 'asc' (ascending) or 'desc' (descending) |
status | string optional | Filter by task status. Valid values: 'pending', 'in-progress', 'completed', 'cancelled', 'deferred' |
tag | string optional | Filter by tag to find tasks containing this specific tag (case insensitive) |
task_to_markdown
Transforms a task into markdown format with YAML frontmatter.
This tool retrieves a task and all its sections, then renders them as a markdown document
with YAML frontmatter containing task metadata. The output is suitable for:
- File export and documentation generation
- Systems that can render markdown directly
- Version control and diff-friendly storage
- Human-readable task archives
The markdown output includes:
- YAML frontmatter with task metadata (id, title, status, priority, complexity, tags, dates)
- Task summary as the first content paragraph
- All sections rendered according to their content format (markdown, code, JSON, plain text)
For inspecting task details in structured JSON format, use get_task instead.
Parameters | Type | Description |
---|---|---|
id | string | The unique ID (UUID) of the task to transform to markdown (e.g., '550e8400-e29b-41d4-a716-446655440000') |
update_feature
Update an existing feature's properties.
⚡ **EFFICIENCY TIP**: Only send fields you want to change! All fields except 'id' are optional.
Sending unchanged fields wastes 90%+ tokens. Example: To update status, send only {"id": "uuid", "status": "in-development"}
## Efficient vs Inefficient Updates
❌ **INEFFICIENT** (wastes ~400+ characters):
```json
{
"id": "feature-uuid",
"name": "Existing Feature Name", // Unchanged - unnecessary
"summary": "Long existing summary...", // Unchanged - 400+ chars wasted
"status": "in-development", // ✓ Only this changed
"priority": "high", // Unchanged - unnecessary
"tags": "tag1,tag2,tag3" // Unchanged - unnecessary
}
```
✅ **EFFICIENT** (uses ~40 characters):
```json
{
"id": "feature-uuid",
"status": "in-development" // Only send what changed!
}
```
**Token Savings**: 90% reduction by only sending changed fields!
## Partial Updates
Only specify fields you want to change. Unspecified fields remain unchanged.
This tool supports partial updates for all fields except 'id' (which is required).
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the feature to update |
name | string optional | (optional) New feature name |
priority | string optional | (optional) New priority level (high, medium, low) |
projectId | string optional | (optional) New project ID (UUID) to associate this feature with |
status | string optional | (optional) New status (planning, in-development, completed, archived) |
summary | string optional | (optional) New feature summary |
tags | string optional | (optional) New comma-separated list of tags |
update_project
Updates an existing project's properties.
⚡ **EFFICIENCY TIP**: Only send fields you want to change! All fields except 'id' are optional.
Sending unchanged fields wastes 90%+ tokens. Example: To update status, send only {"id": "uuid", "status": "in-development"}
## Efficient vs Inefficient Updates
❌ **INEFFICIENT** (wastes ~400+ characters):
```json
{
"id": "project-uuid",
"name": "Existing Project Name", // Unchanged - unnecessary
"summary": "Long existing summary...", // Unchanged - 400+ chars wasted
"status": "in-development", // ✓ Only this changed
"tags": "tag1,tag2,tag3" // Unchanged - unnecessary
}
```
✅ **EFFICIENT** (uses ~40 characters):
```json
{
"id": "project-uuid",
"status": "in-development" // Only send what changed!
}
```
**Token Savings**: 90% reduction by only sending changed fields!
## Partial Updates
This tool modifies properties of an existing project. It supports partial updates, meaning you only need to specify
the fields you want to change. Any fields not included in the request will retain their current values.
Projects are top-level organizational containers that group related features and tasks together. Updating a project
allows you to change its name, summary, status, or tags without affecting its relationships with features and tasks.
Example successful response:
{
"success": true,
"message": "Project updated successfully",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Mobile App Redesign 2.0",
"summary": "Updated project scope with additional accessibility features",
"status": "in-development",
"createdAt": "2025-05-10T14:30:00Z",
"modifiedAt": "2025-05-15T16:20:00Z",
"tags": ["mobile", "ui", "accessibility", "2025-roadmap"]
},
"error": null,
"metadata": {
"timestamp": "2025-05-15T16:20:00Z"
}
}
Common error responses:
- RESOURCE_NOT_FOUND: When no project exists with the specified ID
- VALIDATION_ERROR: When parameters fail validation (e.g., empty name)
- DATABASE_ERROR: When there's an issue storing the updated project
- INTERNAL_ERROR: For unexpected system errors
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the project to update |
name | string optional | (optional) New project name |
status | string optional | (optional) New project status. Valid values: 'planning', 'in-development', 'completed', 'archived' |
summary | string optional | (optional) New project summary describing its purpose and scope |
tags | string optional | (optional) New comma-separated list of tags for categorization |
update_section
Updates an existing section by its ID.
⚡ **EFFICIENCY TIP**: Only send fields you want to change! All fields except 'id' are optional.
For content-only changes, use 'update_section_text' (more efficient). Example: {"id": "uuid", "title": "New Title"}
## Efficient vs Inefficient Updates
❌ **INEFFICIENT** (wastes ~300+ characters):
```json
{
"id": "section-uuid",
"title": "Existing Title", // Unchanged - unnecessary
"usageDescription": "Existing description...", // Unchanged - unnecessary
"content": "Long existing content...", // Unchanged - 300+ chars wasted
"contentFormat": "MARKDOWN", // Unchanged - unnecessary
"ordinal": 0, // Unchanged - unnecessary
"tags": "tag1,tag2" // ✓ Only this changed
}
```
✅ **EFFICIENT** (uses ~40 characters):
```json
{
"id": "section-uuid",
"tags": "tag1,tag2,tag3" // Only send what changed!
}
```
**Token Savings**: 88% reduction by only sending changed fields!
## Alternative Efficient Tools
- For content changes: Use `update_section_text` (90%+ more efficient)
- For metadata only: Use `update_section_metadata` (excludes content)
- For full replacement: Use this tool with selective fields
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the section to update |
content | string optional | (optional) New section content |
contentFormat | string optional | (optional) New format of the content (MARKDOWN, PLAIN_TEXT, JSON, CODE) |
ordinal | integer optional | (optional) New display order position (0-based) |
tags | string optional | (optional) Comma-separated list of new tags |
title | string optional | (optional) New section title |
usageDescription | string optional | (optional) New usage description for the section |
update_section_metadata
Updates a section's metadata (title, usage description, format, ordinal, tags) without affecting its content.
This tool allows you to update specific metadata fields without having to provide
the entire section content, which is more efficient for context usage.
Parameters:
- id (required): UUID of the section to update
- title (optional): New section title
- usageDescription (optional): New usage description for the section
- contentFormat (optional): New format of the content
- ordinal (optional): New display order position (0-based)
- tags (optional): Comma-separated list of new tags
Validation Rules:
- Section must exist
- Parent template must not be protected
- Title must not be empty if provided
- Ordinal must be a non-negative integer
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the section to update |
contentFormat | string optional | New format of the content (MARKDOWN, PLAIN_TEXT, JSON, CODE) |
ordinal | integer optional | New display order position (0-based) |
tags | string optional | Comma-separated list of new tags |
title | string optional | New section title |
usageDescription | string optional | New usage description for the section |
update_section_text
Updates specific text within a section without requiring the entire content. This tool allows changing portions of section content by providing the text to replace and its replacement.
## Context Efficiency Strategy
**PREFERRED** for targeted content updates in large sections:
- Only send the specific text segment to replace and its replacement
- Much more efficient than sending entire content for small changes
- Ideal for correcting typos, updating specific paragraphs, or modifying parts of documentation
- Significantly reduces token usage compared to full content updates
**When to Use**:
- Correcting typos in template-generated content
- Updating specific values or references within larger documentation
- Making incremental improvements to existing sections
- Modifying parts of sections without affecting the overall structure
**Usage Examples**:
- Fixing typos: `oldText: "straegy"` → `newText: "strategy"`
- Updating references: `oldText: "version 1.0"` → `newText: "version 2.0"`
- Modifying template placeholders: `oldText: "[Insert details here]"` → `newText: "Actual implementation details"`
**Compared to Other Update Tools**:
- Use `update_section_text` for content changes (most efficient for partial updates)
- Use `update_section_metadata` for title, format, ordinal, or tag changes
- Use `update_section` for complete content replacement (less efficient)
Parameters:
- id (required): UUID of the section to update
- oldText (required): The text segment to be replaced (must match exactly)
- newText (required): The new text to replace the matched segment with
Validation Rules:
- Section must exist
- Old text must exist in the section content
- Both oldText and newText parameters must be provided
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the section to update |
newText | string | The new text to replace the matched segment with |
oldText | string | The text segment to be replaced (must match exactly) |
update_task
Updates an existing task with the specified properties.
⚡ **EFFICIENCY TIP**: Only send fields you want to change! All fields except 'id' are optional.
Sending unchanged fields wastes 90%+ tokens. Example: To update status, send only {"id": "uuid", "status": "completed"}
## Purpose
Modifies specific fields of an existing task without affecting other properties.
Critical for task lifecycle management and maintaining accurate project state.
## Common Update Patterns
**Status Progression** (typical workflow):
1. `pending` → `in_progress` (when starting work)
2. `in_progress` → `completed` (when finished)
3. `pending` → `deferred` (when postponing)
4. Any status → `cancelled` (when no longer needed)
**Priority Adjustments**:
- Increase to `high` when blockers are resolved or deadlines approach
- Decrease to `low` when other priorities take precedence
- Use `medium` as default for most standard work
**Complexity Refinement**:
- Increase complexity (1-10) as unknowns are discovered during implementation
- Decrease complexity when simpler solutions are found
- Update complexity to inform future estimation accuracy
## Workflow Integration Best Practices
**Before Starting Work**:
```json
{
"id": "task-uuid",
"status": "in_progress"
}
```
**When Completing Work**:
```json
{
"id": "task-uuid",
"status": "completed"
}
```
**When Reassigning to Feature**:
```json
{
"id": "orphaned-task-uuid",
"featureId": "feature-uuid"
}
```
**When Requirements Change**:
```json
{
"id": "task-uuid",
"title": "Updated Task Title",
"summary": "Updated comprehensive summary with new requirements",
"complexity": 8
}
```
## Efficient vs Inefficient Updates
❌ **INEFFICIENT** (wastes ~500+ characters):
```json
{
"id": "task-uuid",
"title": "Existing Title", // Unchanged - unnecessary
"summary": "Long existing summary...", // Unchanged - 500+ chars wasted
"status": "completed", // ✓ Only this changed
"priority": "medium", // Unchanged - unnecessary
"complexity": 5, // Unchanged - unnecessary
"tags": "tag1,tag2,tag3" // Unchanged - unnecessary
}
```
✅ **EFFICIENT** (uses ~30 characters):
```json
{
"id": "task-uuid",
"status": "completed" // Only send what changed!
}
```
**Token Savings**: 94% reduction by only sending changed fields!
## Field Update Guidelines
**Partial Updates**: Only specify fields you want to change. Unspecified fields remain unchanged.
**Title Updates**: Keep titles concise but descriptive. Update when scope or focus changes.
**Summary Updates**: Update summaries when requirements change or acceptance criteria evolve.
**Tag Management**: Replace the entire tag set. To add a tag, include all existing tags plus the new one.
**Feature Association**: Set featureId to associate task with a feature, or null to make orphaned.
## Locking System Integration
This tool respects the locking system to prevent concurrent modifications.
Updates may be queued if the task is currently locked by another operation.
## Error Handling
- RESOURCE_NOT_FOUND: Task with specified ID doesn't exist
- VALIDATION_ERROR: Invalid status, priority, complexity, or UUID format
- LOCK_ERROR: Task is currently locked by another operation
- DATABASE_ERROR: Issue persisting the update
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the task to update |
complexity | integer optional | (optional) New task complexity on a scale from 1-10 |
description | string optional | (optional) New detailed description of the task |
featureId | string optional | (optional) New feature ID to associate this task with |
priority | string optional | (optional) New task priority (high, medium, low) |
status | string optional | (optional) New task status (pending, in-progress, completed, cancelled, deferred) |
tags | string optional | (optional) New comma-separated list of tags |
title | string optional | (optional) New title for the task |
update_template_metadata
Updates a template's metadata (name, description, tags, etc.) without affecting its sections. Protected templates cannot be updated.
This tool allows you to update specific metadata fields without having to provide
the entire template content, which is more efficient for context usage.
Parameters:
- id (required): UUID of the template to update
- name (optional): New template name
- description (optional): New template description
- targetEntityType (optional): New target entity type (TASK, FEATURE)
- isEnabled (optional): Whether the template is enabled
- tags (optional): Comma-separated list of new tags
Validation Rules:
- Template must exist
- Protected templates cannot be updated
- Name must not be empty if provided
- No name conflict with existing templates
Parameters | Type | Description |
---|---|---|
id | string | The unique ID of the template to update |
description | string optional | New template description |
isEnabled | boolean optional | Whether the template is enabled |
name | string optional | New template name |
tags | string optional | Comma-separated list of new tags |
targetEntityType | string optional | New target entity type (TASK, FEATURE) |
{
"mcpServers": {
"task-orchestrator": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/local-directory:/local-directory",
"ghcr.io/jpicklyk/task-orchestrator"
]
}
}
}
Manual installation
You can install the MCP server using:
Installation for