@task-boards/mcp-server 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/build/cli.js +472 -17
- package/build/cli.js.map +4 -4
- package/package.json +3 -2
- package/skills/task-boards-agent-runs/SKILL.md +58 -0
- package/skills/task-boards-attention/SKILL.md +60 -0
- package/skills/task-boards-git-sync/SKILL.md +55 -0
- package/skills/task-boards-orchestrator/SKILL.md +69 -0
- package/skills/task-boards-setup/SKILL.md +69 -0
- package/skills/task-boards-work-items/SKILL.md +55 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@task-boards/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "MCP stdio server for Task Boards (IDE integration)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/cli.js",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"build",
|
|
12
|
+
"skills",
|
|
12
13
|
"README.md"
|
|
13
14
|
],
|
|
14
15
|
"engines": {
|
|
@@ -20,7 +21,7 @@
|
|
|
20
21
|
},
|
|
21
22
|
"scripts": {
|
|
22
23
|
"build": "tsc --build tsconfig.json && node scripts/bundle.mjs",
|
|
23
|
-
"prepublishOnly": "node ../../scripts/assert-mcp-publish-deps.mjs && npm run build",
|
|
24
|
+
"prepublishOnly": "node ../../scripts/assert-mcp-publish-deps.mjs && node scripts/assert-bundled-skills.mjs && npm run build",
|
|
24
25
|
"start": "node build/cli.js"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-boards-agent-runs
|
|
3
|
+
description: Task Boards agent run lifecycle — ack_agent_run, complete_agent_run, AGENTIC_SDLC outcomes, and per-run processing. Use when acknowledging dispatched runs, completing workflow transitions, or handling HANDOFF/SKIP outcomes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Boards Agent Runs
|
|
7
|
+
|
|
8
|
+
## Lifecycle overview
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
DISPATCHED → ack_agent_run → ACKNOWLEDGED → complete_agent_run → COMPLETED
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Logical orchestrator phases (not separate backend statuses): `dispatched` → `acknowledged` → `complete`.
|
|
15
|
+
|
|
16
|
+
## Key MCP tools
|
|
17
|
+
|
|
18
|
+
| Tool | Purpose |
|
|
19
|
+
| --------------------- | -------------------------------------------------------------------- |
|
|
20
|
+
| `list_agent_runs` | Read-only inspection (prefer `wait_for_agent_runs` for orchestrator) |
|
|
21
|
+
| `wait_for_agent_runs` | Long-poll with atomic claim |
|
|
22
|
+
| `ack_agent_run` | `DISPATCHED` → `ACKNOWLEDGED` after Task dispatch |
|
|
23
|
+
| `complete_agent_run` | Apply workflow transition + optional work item patch |
|
|
24
|
+
|
|
25
|
+
## Per-run processing (DISPATCHED)
|
|
26
|
+
|
|
27
|
+
1. `list_work_item_attachments` / download if needed.
|
|
28
|
+
2. `sync_project_subagents` if custom subagent slug.
|
|
29
|
+
3. `Task(subagent_type, prompt, file_attachments)`.
|
|
30
|
+
4. `ack_agent_run(agentRunId)`.
|
|
31
|
+
5. Subagent work — IDE blockers → `report_agent_attention` (see attention skill).
|
|
32
|
+
6. Human resolves → `clear_agent_attention`.
|
|
33
|
+
7. `complete_agent_run` with appropriate outcome.
|
|
34
|
+
8. Local `git commit` with `work-item:{uuid}` when code changed.
|
|
35
|
+
|
|
36
|
+
## complete_agent_run outcomes (AGENTIC_SDLC)
|
|
37
|
+
|
|
38
|
+
Columns: `backlog`, `in-analysis`, `in-development`, `in-qa`, `in-awaiting`, `done`, `released`.
|
|
39
|
+
|
|
40
|
+
| Outcome | Effect |
|
|
41
|
+
| --------------------- | ----------------------------------------------------------------- |
|
|
42
|
+
| `DEFAULT` | Standard handoff per role and column |
|
|
43
|
+
| `HANDOFF` | Move to next analysis phase |
|
|
44
|
+
| `SKIP_DESIGN` | Skip designer → in-development |
|
|
45
|
+
| `SKIP_DEV` | Skip dev when `codeChangesRequired=false` |
|
|
46
|
+
| `HAS_BUGS` | QA → back to in-development |
|
|
47
|
+
| `NEEDS_CLARIFICATION` | Workflow questions → **`in-awaiting`** column (not IDE attention) |
|
|
48
|
+
| `FAILED` | No column move |
|
|
49
|
+
|
|
50
|
+
## designerRequired
|
|
51
|
+
|
|
52
|
+
On ARCHITECT `complete_agent_run`, optional `workItemPatch.designerRequired` controls DESIGNER runs. Default `false` — set `true` only when design phase is required.
|
|
53
|
+
|
|
54
|
+
## Re-entry with attention
|
|
55
|
+
|
|
56
|
+
If run has `requiresAttention: true`: `clear_agent_attention` first before resuming; do not re-dispatch Task until cleared.
|
|
57
|
+
|
|
58
|
+
`complete_agent_run` deletes `.cursor/orchestrator-active-run.json` and pending attention state.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-boards-attention
|
|
3
|
+
description: Task Boards IDE attention — report_agent_attention, clear_agent_attention, replace semantics, seven message categories, and distinction from workflow in-awaiting. Use when subagents need IDE approval or when configuring attention hooks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Boards IDE Attention
|
|
7
|
+
|
|
8
|
+
## IDE attention vs workflow in-awaiting
|
|
9
|
+
|
|
10
|
+
| Concern | Mechanism | Column change |
|
|
11
|
+
| ---------------------------------------------------------- | ------------------------------------------------------------ | ----------------- |
|
|
12
|
+
| Subagent spec / stakeholder questions | `complete_agent_run(NEEDS_CLARIFICATION)` + `create_comment` | **`in-awaiting`** |
|
|
13
|
+
| IDE approval (shell, git, network, Smart Mode, MCP, files) | `report_agent_attention` / `clear_agent_attention` | **unchanged** |
|
|
14
|
+
|
|
15
|
+
Never move a story to `in-awaiting` for IDE shell approvals, git push prompts, MCP auth, or Smart Mode blocks.
|
|
16
|
+
|
|
17
|
+
## report_agent_attention / clear_agent_attention
|
|
18
|
+
|
|
19
|
+
1. Call `ack_agent_run` first (`DISPATCHED` → `ACKNOWLEDGED`).
|
|
20
|
+
2. Call `report_agent_attention(agentRunId, message)` when blocked awaiting human action in the IDE.
|
|
21
|
+
3. **One message per ACK run — replace on re-report** (latest message wins; do not append).
|
|
22
|
+
4. After human resolves: `clear_agent_attention(agentRunId)`, then resume subagent work and `complete_agent_run`.
|
|
23
|
+
5. `clear_agent_attention` requires `ACKNOWLEDGED` status.
|
|
24
|
+
|
|
25
|
+
On poll timeout: do **not** call `clear_agent_attention` — board badge remains until resolved.
|
|
26
|
+
|
|
27
|
+
## Message format (7 categories)
|
|
28
|
+
|
|
29
|
+
Pattern: `[{category}] {detail}`
|
|
30
|
+
|
|
31
|
+
| Category | Example |
|
|
32
|
+
| ------------ | ------------------------------------------------------------- |
|
|
33
|
+
| `shell` | `[shell] Approve shell command: npm install` |
|
|
34
|
+
| `git` | `[git] Approve git operation: git push origin feature/tb-180` |
|
|
35
|
+
| `network` | `[network] Approve network access: registry.npmjs.org` |
|
|
36
|
+
| `smart-mode` | `[smart-mode] Approve Smart Mode: blocked npm ci` |
|
|
37
|
+
| `mcp` | `[mcp] Approve MCP / API action: token rotation test` |
|
|
38
|
+
| `file` | `[file] Approve file change outside scope` |
|
|
39
|
+
| `other` | `[other] Human input required: staging credentials` |
|
|
40
|
+
|
|
41
|
+
## Auxiliary CLI bridge
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
task-boards-mcp attention report --agent-run-id <id> --message "[shell] ..."
|
|
45
|
+
task-boards-mcp attention report-from-hook # Cursor hooks stdin
|
|
46
|
+
task-boards-mcp attention clear
|
|
47
|
+
task-boards-mcp orchestrator write-active-run --agent-run-id ... --work-item-id ... --project-id ...
|
|
48
|
+
task-boards-mcp orchestrator clear-active-run
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Hooks (`.cursor/hooks.json`) auto-report shell/MCP/Smart Mode blocks when `WORKSPACE_ROOT` and API token are configured.
|
|
52
|
+
|
|
53
|
+
## Auto bridge state files
|
|
54
|
+
|
|
55
|
+
| File | Purpose |
|
|
56
|
+
| --------------------------------------------- | --------------------------- |
|
|
57
|
+
| `.cursor/orchestrator-active-run.json` | Written on `ack_agent_run` |
|
|
58
|
+
| `.cursor/orchestrator-attention-pending.json` | Pending flag for hook clear |
|
|
59
|
+
|
|
60
|
+
`complete_agent_run` deletes both files.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-boards-git-sync
|
|
3
|
+
description: Task Boards git sync — sync_git_releases, work-item commit tags, sync_project_subagents, and conventional commit policy. Use after git push, on poll timeout, or before dispatching custom subagent slugs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Boards Git Sync
|
|
7
|
+
|
|
8
|
+
## sync_git_releases
|
|
9
|
+
|
|
10
|
+
MCP tool: fetch origin and sync commits tagged with `work-item:{uuid}` from:
|
|
11
|
+
|
|
12
|
+
- Default branch (`master` / `main`)
|
|
13
|
+
- Current feature branch when cwd is not on default branch
|
|
14
|
+
|
|
15
|
+
| When | Action |
|
|
16
|
+
| ----------------------------------------- | ----------------------------------- |
|
|
17
|
+
| After `git push` on feature branch | Call `sync_git_releases(projectId)` |
|
|
18
|
+
| On `master`/`main` with local commit only | Sync without push |
|
|
19
|
+
| Poll `timedOut: true` | Call before next poll cycle |
|
|
20
|
+
|
|
21
|
+
Requires MCP API token with `write` scope and `WORKSPACE_ROOT` set.
|
|
22
|
+
|
|
23
|
+
## Git commit conventions
|
|
24
|
+
|
|
25
|
+
After dev/QA when code is ready:
|
|
26
|
+
|
|
27
|
+
1. Local `git commit` with conventional message: `<type>(<scope>): <subject>`
|
|
28
|
+
2. Body must include `work-item:{uuid}` for release sync
|
|
29
|
+
3. `git push` on feature branches or when user explicitly requests — not by default on `master`/`main`
|
|
30
|
+
4. Never commit `.env`, `config.yaml`, or secrets
|
|
31
|
+
|
|
32
|
+
See project `conventional-commits.mdc` for types and CI release rules.
|
|
33
|
+
|
|
34
|
+
## sync_project_subagents
|
|
35
|
+
|
|
36
|
+
Before `Task(subagent_type=custom-slug)` when `payload.suggestedSubagentType` is a **project custom slug**:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{ "projectId": "f9ee1002-2b17-4803-9a7d-949741b9fd8d" }
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Writes `{workspaceRoot}/.cursor/agents/{slug}.md` — idempotent overwrite.
|
|
43
|
+
|
|
44
|
+
Built-in IDE subagents (`generalPurpose`, `explore`, etc.) do not need sync.
|
|
45
|
+
|
|
46
|
+
## Orchestrator git timing
|
|
47
|
+
|
|
48
|
+
- `run_orchestrator_once` does **not** auto-call `sync_git_releases`.
|
|
49
|
+
- Orchestrator calls sync after batch complete and on poll timeout.
|
|
50
|
+
- Do not clear IDE attention on timeout — badge remains until human resolves.
|
|
51
|
+
|
|
52
|
+
## Related
|
|
53
|
+
|
|
54
|
+
- `task-boards-orchestrator` — when to call sync in poll loop
|
|
55
|
+
- `task-boards-agent-runs` — commit after `complete_agent_run` when code changed
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-boards-orchestrator
|
|
3
|
+
description: Run the Task Boards orchestrator poll loop — run_orchestrator_once, wait_for_agent_runs, inflight recovery, timeout handling, and single-sleeper policy. Use when long-polling agent runs, dispatching subagents, or recovering orphaned runs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Boards Orchestrator Loop
|
|
7
|
+
|
|
8
|
+
Canonical reference: `.cursor/rules/orchestrator.mdc` and package README.
|
|
9
|
+
|
|
10
|
+
## Poll entry points
|
|
11
|
+
|
|
12
|
+
| Tool | When |
|
|
13
|
+
| ----------------------- | -------------------------------------------------------- |
|
|
14
|
+
| `run_orchestrator_once` | Preferred — resolves project, claims runs, returns hints |
|
|
15
|
+
| `wait_for_agent_runs` | When `projectId` is already known |
|
|
16
|
+
|
|
17
|
+
Defaults: `timeout=120`, `pollInterval=2`, `limit=1`.
|
|
18
|
+
|
|
19
|
+
## Poll loop
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
1. resolve_project (if needed)
|
|
23
|
+
2. run_orchestrator_once / wait_for_agent_runs
|
|
24
|
+
a. items.length > 0 → process newly claimed runs
|
|
25
|
+
b. inflightRuns.length > 0 → process recovered runs (no re-claim)
|
|
26
|
+
c. timedOut → sync_git_releases(projectId) → exit (true idle)
|
|
27
|
+
3. For each run → process (ack, Task, attention, complete)
|
|
28
|
+
4. sync_git_releases after batch
|
|
29
|
+
5. Loop — never parallel polls
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Response fields
|
|
33
|
+
|
|
34
|
+
| Field | Meaning |
|
|
35
|
+
| -------------- | ------------------------------------------------------------ |
|
|
36
|
+
| `items` | Newly claimed runs (`PENDING→DISPATCHED`) |
|
|
37
|
+
| `inflightRuns` | Recovered `DISPATCHED`/`ACKNOWLEDGED` (orphan recovery) |
|
|
38
|
+
| `timedOut` | `true` when deadline reached with no claimed and no inflight |
|
|
39
|
+
|
|
40
|
+
Read `orchestrator.sleeperPolicy` on every response — one blocking poll per workspace.
|
|
41
|
+
|
|
42
|
+
## Timeout behavior
|
|
43
|
+
|
|
44
|
+
When `timedOut: true`:
|
|
45
|
+
|
|
46
|
+
1. Call `sync_git_releases(projectId)`.
|
|
47
|
+
2. Exit and poll again later.
|
|
48
|
+
3. Do **not** call `clear_agent_attention` on timeout — IDE attention badge remains until the human resolves the blocker.
|
|
49
|
+
4. Schedule at most one follow-up automation wake; prefer interval ≥ `timeout`.
|
|
50
|
+
|
|
51
|
+
## Orphan recovery
|
|
52
|
+
|
|
53
|
+
When claim returns empty, MCP lists inflight runs before sleeping:
|
|
54
|
+
|
|
55
|
+
- `DISPATCHED` inflight → resume dispatch phase unless subagent already running.
|
|
56
|
+
- `ACKNOWLEDGED` + `requiresAttention` → clear attention first; do not re-dispatch Task.
|
|
57
|
+
- `ACKNOWLEDGED` without attention → resume subagent work → complete.
|
|
58
|
+
|
|
59
|
+
`orchestrator.processRuns[].source` is `"claimed"` or `"inflight"`.
|
|
60
|
+
|
|
61
|
+
## Prerequisite
|
|
62
|
+
|
|
63
|
+
STORY items must be assigned to **Агент ИИ** (SERVICE user) before agent columns enqueue runs.
|
|
64
|
+
|
|
65
|
+
## Related skills
|
|
66
|
+
|
|
67
|
+
- `task-boards-agent-runs` — ack and complete lifecycle
|
|
68
|
+
- `task-boards-attention` — IDE attention vs workflow `in-awaiting`
|
|
69
|
+
- `task-boards-git-sync` — `sync_git_releases` and commits
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-boards-setup
|
|
3
|
+
description: Configure Task Boards MCP server for IDE agents — environment variables, WORKSPACE_ROOT, MCP client JSON, and quick start. Use when setting up @task-boards/mcp-server, troubleshooting connection issues, or onboarding a new workspace.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Boards MCP Setup
|
|
7
|
+
|
|
8
|
+
## Quick start
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npx @task-boards/mcp-server
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Install bundled Cursor skills after setup:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npx @task-boards/mcp-server skills install
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Environment variables
|
|
21
|
+
|
|
22
|
+
| Variable | Required | Default | Purpose |
|
|
23
|
+
| ----------------------- | ---------------- | --------------------------------- | -------------------------------------------------------------- |
|
|
24
|
+
| `TASK_BOARDS_API_URL` | No | `https://task-boards.com/backend` | Backend base URL (without `/api/v1`) |
|
|
25
|
+
| `TASK_BOARDS_API_TOKEN` | Yes (production) | — | API token with `read` / `write` scopes |
|
|
26
|
+
| `WORKSPACE_ROOT` | No | — | Git repo root for attachments, sync tools, orchestrator bridge |
|
|
27
|
+
|
|
28
|
+
Effective API base: `{TASK_BOARDS_API_URL}/api/v1`.
|
|
29
|
+
|
|
30
|
+
## IDE MCP configuration
|
|
31
|
+
|
|
32
|
+
Add to `.cursor/mcp.json` or IDE MCP settings:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"mcpServers": {
|
|
37
|
+
"task-boards": {
|
|
38
|
+
"command": "npx",
|
|
39
|
+
"args": ["-y", "@task-boards/mcp-server"],
|
|
40
|
+
"env": {
|
|
41
|
+
"TASK_BOARDS_API_URL": "https://task-boards.com/backend",
|
|
42
|
+
"TASK_BOARDS_API_TOKEN": "<your-api-token>",
|
|
43
|
+
"WORKSPACE_ROOT": "/path/to/your/repo"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Workspace resolution
|
|
51
|
+
|
|
52
|
+
- Set `WORKSPACE_ROOT` to the git repository root when the MCP client cwd differs from the repo.
|
|
53
|
+
- Project id lives in `.task-boards.yaml` or `.cursor/rules/task-boards.mdc`.
|
|
54
|
+
- Use `resolve_project` MCP tool when project id is unknown.
|
|
55
|
+
|
|
56
|
+
## Bundled skills install
|
|
57
|
+
|
|
58
|
+
| Command | Target |
|
|
59
|
+
| ----------------------------------------- | --------------------------------- |
|
|
60
|
+
| `task-boards-mcp skills install` | `{workspaceRoot}/.cursor/skills/` |
|
|
61
|
+
| `task-boards-mcp skills install --global` | `~/.cursor/skills/` |
|
|
62
|
+
|
|
63
|
+
Re-run after upgrading `@task-boards/mcp-server` to refresh skill content.
|
|
64
|
+
|
|
65
|
+
## Documentation
|
|
66
|
+
|
|
67
|
+
- Package README: orchestrator tools, poll fields, attention lifecycle
|
|
68
|
+
- In-app guides: `/guide/mcp-orchestrator`, `/guide/agentic-prompts` (sign-in required)
|
|
69
|
+
- `task-boards-mcp --help` — full MCP tool catalog (32 tools)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-boards-work-items
|
|
3
|
+
description: Manage Task Boards work items via MCP — create, update, move, search, estimation rules, and SERVICE assignee requirements. Use when creating stories, moving cards, or checking estimation gates before column transitions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Boards Work Items
|
|
7
|
+
|
|
8
|
+
## Core MCP tools
|
|
9
|
+
|
|
10
|
+
| Tool | Purpose |
|
|
11
|
+
| --------------------------------------- | ------------------------------------- |
|
|
12
|
+
| `list_work_items` / `search_work_items` | Browse and find items |
|
|
13
|
+
| `get_work_item` | Fetch by id |
|
|
14
|
+
| `create_work_item` | Create under a project |
|
|
15
|
+
| `update_work_item` | Patch fields (fetches version first) |
|
|
16
|
+
| `move_work_item` | Change column (fetches version first) |
|
|
17
|
+
| `get_board` | Board projection with columns |
|
|
18
|
+
|
|
19
|
+
## SERVICE assignee rule
|
|
20
|
+
|
|
21
|
+
- MCP `create_work_item` attributes creator and default assignee to **Агент ИИ** (SERVICE user) unless `assigneeUserId` is set.
|
|
22
|
+
- The orchestrator processes STORY items only when assignee is the SERVICE user.
|
|
23
|
+
- Priority defaults to `LOW` when omitted.
|
|
24
|
+
|
|
25
|
+
## Estimation gates
|
|
26
|
+
|
|
27
|
+
When `project.estimationRequired` is true:
|
|
28
|
+
|
|
29
|
+
- `storyPoints` and `estimate` are optional on create.
|
|
30
|
+
- Before moving a STORY to any column except `backlog` (slug=backlog), active estimation is required.
|
|
31
|
+
- `move_work_item` returns `ESTIMATION_REQUIRED_FOR_MOVE` (422) when estimation is missing.
|
|
32
|
+
|
|
33
|
+
## Comments and labels
|
|
34
|
+
|
|
35
|
+
| Tool | Purpose |
|
|
36
|
+
| ---------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
37
|
+
| `list_comments` / `create_comment` | Thread on work items — use for orchestrator `NEEDS_CLARIFICATION` questions |
|
|
38
|
+
| `list_labels` / `create_label` / `update_label` / `delete_label` | Project labels |
|
|
39
|
+
|
|
40
|
+
## Attachments
|
|
41
|
+
|
|
42
|
+
| Tool | Purpose |
|
|
43
|
+
| -------------------------------- | ----------------------------------- |
|
|
44
|
+
| `list_work_item_attachments` | List files |
|
|
45
|
+
| `download_work_item_attachments` | Stage to `.task-boards/attachments` |
|
|
46
|
+
| `upload_work_item_attachment` | Upload local file (multipart) |
|
|
47
|
+
|
|
48
|
+
## Delete rules
|
|
49
|
+
|
|
50
|
+
- MCP may hard-delete **SUBTASK** items only.
|
|
51
|
+
- Use `get_work_item_delete_preview` before delete.
|
|
52
|
+
|
|
53
|
+
## Work item tags in git
|
|
54
|
+
|
|
55
|
+
Local commits must include `work-item:{uuid}` in the body for `sync_git_releases` — see `task-boards-git-sync` skill.
|