{
"name": "intent-engine",
"version": "0.1",
"description": "Intent-Engine MCP Server - Manage strategic intent and task workflow for human-AI collaboration",
"tools": [
{
"name": "task_add",
"description": "Create a new task to capture strategic intent. Use when a requirement is complex enough to need multiple steps, context, or long-term tracking. For long specs, prefer using CLI with stdin pipe: echo 'spec content' | intent-engine task add --name 'task name' --spec-stdin",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Task name (required)"
},
"spec": {
"type": "string",
"description": "Detailed specification in markdown format (optional but recommended). Example CLI usage: echo '## Architecture\\n- Use microservices\\n- PostgreSQL database' | intent-engine task add --name 'Design system' --spec-stdin"
},
"parent_id": {
"type": "integer",
"description": "Parent task ID for creating subtasks (optional)"
}
},
"required": [
"name"
]
}
},
{
"name": "task_start",
"description": "Start working on a task. ATOMIC operation: updates status to 'doing', sets as current task, and returns full context with events. Always use this to begin work.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID to start"
},
"with_events": {
"type": "boolean",
"description": "Include events summary (recommended: true)",
"default": true
}
},
"required": [
"task_id"
]
}
},
{
"name": "task_pick_next",
"description": "Intelligently select next tasks from todo list. Use when you have multiple tasks and need to decide optimal order based on priority and complexity.",
"inputSchema": {
"type": "object",
"properties": {
"max_count": {
"type": "integer",
"description": "Maximum number of tasks to pick",
"default": 5
},
"capacity": {
"type": "integer",
"description": "Maximum total tasks allowed in 'doing' status",
"default": 5
}
}
}
},
{
"name": "task_spawn_subtask",
"description": "Create a subtask under current task and switch to it. ATOMIC operation. Use when you discover a sub-problem that must be solved first. For long specs, use CLI with stdin: echo 'spec' | intent-engine task spawn-subtask --name 'subtask' --spec-stdin",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Subtask name"
},
"spec": {
"type": "string",
"description": "Subtask specification (optional). Example CLI usage: echo 'Configure JWT with HS256 algorithm' | intent-engine task spawn-subtask --name 'JWT setup' --spec-stdin"
}
},
"required": [
"name"
]
}
},
{
"name": "task_switch",
"description": "Switch to a different task. ATOMIC operation: updates to 'doing' if needed, sets as current, returns context with events.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID to switch to"
}
},
"required": [
"task_id"
]
}
},
{
"name": "task_done",
"description": "Mark task as complete. Enforces that all subtasks must be done first. Use when all objectives in spec are achieved.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID to complete"
}
},
"required": [
"task_id"
]
}
},
{
"name": "task_update",
"description": "Update task properties including complexity (1-10) and priority (higher = more important). For updating long specs, prefer CLI with stdin pipe: echo 'new spec' | intent-engine task update <id> --spec-stdin",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID to update"
},
"name": {
"type": "string",
"description": "New name (optional)"
},
"spec": {
"type": "string",
"description": "New specification (optional). Example CLI usage: echo '## Updated Design\\n- Changed to REST API' | intent-engine task update 42 --spec-stdin"
},
"status": {
"type": "string",
"enum": [
"todo",
"doing",
"done"
],
"description": "New status (optional, prefer atomic commands)"
},
"complexity": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Task complexity 1-10 (optional)"
},
"priority": {
"type": "integer",
"description": "Task priority, higher = more important (optional)"
},
"parent_id": {
"type": "integer",
"description": "New parent task ID (optional)"
}
},
"required": [
"task_id"
]
}
},
{
"name": "task_find",
"description": "Find tasks by status or parent. Use to review task list.",
"inputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"todo",
"doing",
"done"
],
"description": "Filter by status (optional)"
},
"parent": {
"type": "string",
"description": "Filter by parent ID or 'null' for root tasks (optional)"
}
}
}
},
{
"name": "task_get",
"description": "Get detailed information about a specific task.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID"
},
"with_events": {
"type": "boolean",
"description": "Include events summary",
"default": false
}
},
"required": [
"task_id"
]
}
},
{
"name": "event_add",
"description": "Record a key event for a task. Use to log decisions, blockers, milestones. This is AI's external long-term memory. IMPORTANT: When you need to create design docs, summaries, or any temporary documentation, prefer storing them as events (type: 'note' or 'milestone') rather than creating separate files. This keeps documentation tightly coupled with tasks. For long content, use CLI with stdin pipe: echo 'content' | intent-engine event add --type note --data-stdin",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID (optional if current task is set)"
},
"event_type": {
"type": "string",
"enum": [
"decision",
"blocker",
"milestone",
"discussion",
"note"
],
"description": "Event type. Use 'note' for design docs/summaries, 'decision' for choices made, 'milestone' for phase completion, 'blocker' for issues, 'discussion' for analysis"
},
"data": {
"type": "string",
"description": "Event content in markdown format. Can contain full documentation, design specs, analysis results, etc. Example CLI usage: echo '# API Design\\n## Endpoints\\n- GET /users\\n- POST /users' | intent-engine event add --type note --data-stdin"
}
},
"required": [
"task_id",
"event_type",
"data"
]
}
},
{
"name": "event_list",
"description": "List events for a task. Use to recover context when resuming work.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "integer",
"description": "Task ID"
},
"limit": {
"type": "integer",
"description": "Limit number of events (optional)"
}
},
"required": [
"task_id"
]
}
},
{
"name": "current_task_get",
"description": "Get the current task being worked on.",
"inputSchema": {
"type": "object",
"properties": {}
}
},
{
"name": "report_generate",
"description": "Generate work report. ALWAYS use --summary-only to save tokens unless you need full details.",
"inputSchema": {
"type": "object",
"properties": {
"since": {
"type": "string",
"enum": [
"1h",
"6h",
"1d",
"7d",
"30d"
],
"description": "Time range (optional)"
},
"status": {
"type": "string",
"enum": [
"todo",
"doing",
"done"
],
"description": "Filter by status (optional)"
},
"filter_name": {
"type": "string",
"description": "FTS5 search in task names (optional)"
},
"filter_spec": {
"type": "string",
"description": "FTS5 search in task specs (optional)"
},
"summary_only": {
"type": "boolean",
"description": "Return only summary (recommended: true)",
"default": true
}
}
}
}
]
}