{"_id":"@adapt-toolkit/adapt-workspace-mcp","_rev":"7-cb6fcace45ca5d8f348575f3c6a6d45f","name":"@adapt-toolkit/adapt-workspace-mcp","dist-tags":{"latest":"0.7.1"},"versions":{"0.3.2":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.3.2","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"author":{"name":"Adapt Workspace"},"license":"MIT","_id":"@adapt-toolkit/adapt-workspace-mcp@0.3.2","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"bin":{"adapt-workspace-mcp":"dist/index.js"},"dist":{"shasum":"2ef67f196a7190b6b2b2b0e27002f3fe968c3f72","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.3.2.tgz","fileCount":4,"integrity":"sha512-7YlkrD2NtRriKAcK8nh49jHqVMCDg03dYKKveUAGASGL9CYHMjO1/Sqn2SUQjvr4WTlgtO8GSd/7wJ4KZ/bbQg==","signatures":[{"sig":"MEQCIATUXbwmk59y3vfwfmdFb5eb2u1LFb69UyDztwNDtaDJAiA8H0lE+OvMAT7h/eXffz7mQy7fCliTGb2QmYiTpol1hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774466},"type":"module","gitHead":"b4bed9fb4f27a10ad93ee5411862689f5aa07cfc","scripts":{"dev":"tsx src/index.ts","build":"node build.mjs","start":"node dist/index.js","build:tsc":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node build.mjs"},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"repository":{"url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","type":"git","directory":"plugin"},"_npmVersion":"10.8.2","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","esbuild":"^0.24.2","typescript":"^5.5.4","@types/node":"^20.14.0","@modelcontextprotocol/sdk":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/adapt-workspace-mcp_0.3.2_1779563110492_0.7436491827386589","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.4.0","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"author":{"name":"Adapt Workspace"},"license":"MIT","_id":"@adapt-toolkit/adapt-workspace-mcp@0.4.0","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"bin":{"adapt-workspace-mcp":"dist/index.js"},"dist":{"shasum":"0155227db9bdb06bf4c446dc36b92190334d06e9","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.4.0.tgz","fileCount":4,"integrity":"sha512-uYk5+3L1U7lBKkicwgoeELzuBhTWSeeSwZp4ssjRhHxGCd5i4oAGGSuQJ20EZ0dIfYeZ7GxQy8QSFlM4lf0P9g==","signatures":[{"sig":"MEQCIEKuNCaHscSW78uOFDdGK9QNz41Ag3BMpQ1qcyNzt7cGAiBAPycHRvO4D0bvnop5SlUlt95YCLk0ZSxksJzmDS3IMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774466},"type":"module","gitHead":"7e64885d75b25e0bc381c9b8c6ec2cc8f6648c61","scripts":{"dev":"tsx src/index.ts","build":"node build.mjs","start":"node dist/index.js","build:tsc":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node build.mjs"},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"repository":{"url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","type":"git","directory":"plugin"},"_npmVersion":"10.8.2","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","esbuild":"^0.24.2","typescript":"^5.5.4","@types/node":"^20.14.0","@modelcontextprotocol/sdk":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/adapt-workspace-mcp_0.4.0_1779566243504_0.6222771868356398","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.4.1","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"author":{"name":"Adapt Workspace"},"license":"MIT","_id":"@adapt-toolkit/adapt-workspace-mcp@0.4.1","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"bin":{"adapt-workspace-mcp":"dist/index.js"},"dist":{"shasum":"c4d203317254fdc41a25d1fd29d792b0a0320704","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.4.1.tgz","fileCount":4,"integrity":"sha512-qOMp1w4Wee/TlYldyUmIWdNBzZhNAh9YRVZA2ecWKR7anWeaycwEDK2+8A9AVWbuE/XRWzeFyWQzw/PWJEHtAw==","signatures":[{"sig":"MEQCIB6ew5p2prmIHyAdnNMydvYcz00+aLFXYvqjzoA4QklvAiBKzvt4yiVFMVG3ZmiYNA3Z5AV+SJ27+BTchl1cY4wARA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774466},"type":"module","gitHead":"cdf676955306af1cbde45a1e6e9fa6c0a69163ee","scripts":{"dev":"tsx src/index.ts","build":"node build.mjs","start":"node dist/index.js","build:tsc":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node build.mjs"},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"repository":{"url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","type":"git","directory":"plugin"},"_npmVersion":"10.8.2","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","esbuild":"^0.24.2","typescript":"^5.5.4","@types/node":"^20.14.0","@modelcontextprotocol/sdk":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/adapt-workspace-mcp_0.4.1_1779566772422_0.025379168489637838","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"author":{"name":"Adapt Workspace"},"license":"MIT","_id":"@adapt-toolkit/adapt-workspace-mcp@0.5.0","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"bin":{"adapt-workspace-mcp":"dist/index.js"},"dist":{"shasum":"cb3cbe6392443ce20b0ebaaca2b91252cf99d673","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.5.0.tgz","fileCount":4,"integrity":"sha512-mQL1QgjiD8h3Apd65rlwAs71WJondG51lRZ3vv2MhauPzCRrj+gmAwDyMJrYMkOv+nrlNWqVr7+SHZzlqTMvDA==","signatures":[{"sig":"MEUCIBgwTNdp1v1f656DT6aZ0aRhrMikawNrCgoCY/lnwHrTAiEAkSMTPa1PG+kOtiY4jB/0ZRzgmXbPYH0vahrz7WwNudU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":776941},"type":"module","gitHead":"229582ab6ac8bb4e9f39b1e09a36d6b647447ca8","scripts":{"dev":"tsx src/index.ts","build":"node build.mjs","start":"node dist/index.js","build:tsc":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node build.mjs"},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"repository":{"url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","type":"git","directory":"plugin"},"_npmVersion":"10.8.2","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","esbuild":"^0.24.2","typescript":"^5.5.4","@types/node":"^20.14.0","@modelcontextprotocol/sdk":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/adapt-workspace-mcp_0.5.0_1779693915541_0.9898239099741568","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.6.0","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"author":{"name":"Adapt Workspace"},"license":"MIT","_id":"@adapt-toolkit/adapt-workspace-mcp@0.6.0","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"bin":{"adapt-workspace-mcp":"dist/index.js"},"dist":{"shasum":"ef3df586677d485efa0ac6c4355a97d1fe11f86f","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.6.0.tgz","fileCount":4,"integrity":"sha512-84GSaNoN6UNMfMEbr+6sYfJSjU/509pBuD/Ym8lDzD2TiuIAEMAMYPmj98wBeeT3Lcaa24wgNyAUMWx2P+vWHw==","signatures":[{"sig":"MEUCIAj6g7JqX1y8V9UMuJHl/U6BOcT8jeVjN3MHMPPU9RdRAiEAvZ26yhKl3kjfrWhv/R1YY1c+l2Y/B59Ws/hpH++0a8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":785503},"type":"module","gitHead":"b001828558131a29580780b335b6722867549ea2","scripts":{"dev":"tsx src/index.ts","build":"node build.mjs","start":"node dist/index.js","build:tsc":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node build.mjs"},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"repository":{"url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","type":"git","directory":"plugin"},"_npmVersion":"10.8.2","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","esbuild":"^0.24.2","typescript":"^5.5.4","@types/node":"^20.14.0","@modelcontextprotocol/sdk":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/adapt-workspace-mcp_0.6.0_1779826194895_0.5325025766347378","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.7.0","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"author":{"name":"Adapt Workspace"},"license":"MIT","_id":"@adapt-toolkit/adapt-workspace-mcp@0.7.0","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"bin":{"adapt-workspace-mcp":"dist/index.js"},"dist":{"shasum":"32890f3f723b3c04f255db436937e028c7f28f96","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.7.0.tgz","fileCount":4,"integrity":"sha512-WzigjmlDQJin9nBh/qbtIJ0pqH3tq7M5n1AvQVTRzFUqtHJyB4Pj+zGMKIIWzYI7eiP95M3JdpV8NqK1bypqOA==","signatures":[{"sig":"MEQCIFPjlxuZH717vkxPZHXTboQEkdMN8TMy5tqxTwmoSdc1AiAIY3CYmHKLYsRkiern+qh+hil3BUiHxz85v0so5kClpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":788422},"type":"module","gitHead":"cccd0f8b235372e926d2c00cf40e1f1afb128805","scripts":{"dev":"tsx src/index.ts","build":"node build.mjs","start":"node dist/index.js","build:tsc":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node build.mjs"},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"repository":{"url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","type":"git","directory":"plugin"},"_npmVersion":"10.8.2","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","esbuild":"^0.24.2","typescript":"^5.5.4","@types/node":"^20.14.0","@modelcontextprotocol/sdk":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/adapt-workspace-mcp_0.7.0_1779841601117_0.5983405091235856","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@adapt-toolkit/adapt-workspace-mcp","version":"0.7.1","description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","type":"module","license":"MIT","author":{"name":"Adapt Workspace"},"homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","repository":{"type":"git","url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","directory":"plugin"},"bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"bin":{"adapt-workspace-mcp":"dist/index.js"},"publishConfig":{"access":"public"},"scripts":{"build":"node build.mjs","build:tsc":"tsc -p tsconfig.json","dev":"tsx src/index.ts","start":"node dist/index.js","prepublishOnly":"node build.mjs","typecheck":"tsc -p tsconfig.json --noEmit"},"devDependencies":{"@modelcontextprotocol/sdk":"^1.0.4","@types/node":"^20.14.0","esbuild":"^0.24.2","tsx":"^4.19.0","typescript":"^5.5.4","zod":"^3.23.8"},"_id":"@adapt-toolkit/adapt-workspace-mcp@0.7.1","gitHead":"c0c875e91199a21b3b228e29c255a74256e74c71","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-TgGOtPQ3zXr9qaxmudW0iin9RjJmoR/PfyvHeiHz+UP6dtz8joh7jkVwWQKK+xVYjCap8yJAHvTaqXsSxS3VAw==","shasum":"5cb0fb32bf885d2587582476d0119af7d6ddb68c","tarball":"https://registry.npmjs.org/@adapt-toolkit/adapt-workspace-mcp/-/adapt-workspace-mcp-0.7.1.tgz","fileCount":4,"unpackedSize":795285,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCxHjwL1yN4p74iQPJbnjP1ZwKKTMF7a9NgdJRwAoJnGwIgZBo0ZF8D7s1AQUhctZh8yUZwGWQlX5rXo7tHWRMkoLU="}]},"_npmUser":{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"},"directories":{},"maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapt-workspace-mcp_0.7.1_1780067344629_0.42319609932706825"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-23T19:05:10.403Z","modified":"2026-05-29T15:09:04.908Z","0.3.2":"2026-05-23T19:05:10.681Z","0.4.0":"2026-05-23T19:57:23.711Z","0.4.1":"2026-05-23T20:06:12.657Z","0.5.0":"2026-05-25T07:25:15.739Z","0.6.0":"2026-05-26T20:09:55.078Z","0.7.0":"2026-05-27T00:26:41.293Z","0.7.1":"2026-05-29T15:09:04.813Z"},"bugs":{"url":"https://github.com/adapt-toolkit/adapt_workspace/issues"},"author":{"name":"Adapt Workspace"},"license":"MIT","homepage":"https://github.com/adapt-toolkit/adapt_workspace/tree/main/plugin#readme","keywords":["mcp","model-context-protocol","claude","planner","tasks","adapt"],"repository":{"type":"git","url":"git+https://github.com/adapt-toolkit/adapt_workspace.git","directory":"plugin"},"description":"MCP server for Adapt Workspace (stdio). Reads URL+token from a local config file or env.","maintainers":[{"name":"adapt-toolkit","email":"vitalii@adaptframework.solutions"}],"readme":"# adapt-workspace (Claude Code plugin)\n\nA Claude Code plugin for the Adapt Workspace recursive planner. Ships an MCP server (stdio), hooks, slash commands, and skills together as a single installable unit.\n\n## Install\n\n### Option A — quickest (npm)\n\nAdds just the MCP server (the `adapt_workspace_*` tools). One line, auto-updates via `npx`, no restart:\n\n```sh\nclaude mcp add adapt-workspace -- npx -y @adapt-toolkit/adapt-workspace-mcp\n```\n\nPublished to npm as [`@adapt-toolkit/adapt-workspace-mcp`](https://www.npmjs.com/package/@adapt-toolkit/adapt-workspace-mcp).\n\n### Option B — full plugin (git marketplace)\n\nInstalls the MCP server **plus** the hooks, slash commands, and skills. In any Claude Code session:\n\n```\n/plugin marketplace add adapt-toolkit/adapt_workspace\n/plugin install adapt-workspace@adapt\n```\n\nThis adds the repo as a Claude Code marketplace and installs the plugin from the `plugin/` subdirectory. The MCP server, hooks, and slash commands all come from the same package — you don't need to edit `mcp.json` by hand.\n\n### Configure (either option)\n\nConfigure the workspace URL and agent token by pasting the invite blob from the workspace UI (Settings → New agent → \"Step 2 — Bind this agent token\"):\n\n```\nadapt_workspace_setup invite=<paste>\n```\n\nThat writes `~/.config/adapt-workspace-mcp/config.env` (mode `0600`) and the rest of the tools become available.\n\n## Local development\n\nIf you're hacking on the plugin itself:\n\n```sh\ncd plugin\nnpm install\nnpm run build       # compiles src/ → dist/\n```\n\nTo install the locally-built copy in Claude Code without pushing:\n\n```\nclaude --plugin-dir /path/to/workspace/plugin\n```\n\nOr alternatively pre-seed the MCP entry yourself in `~/.claude/mcp.json`:\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"adapt-workspace\": {\n      \"command\": \"node\",\n      \"args\": [\"/abs/path/to/workspace/plugin/dist/index.js\"]\n    }\n  }\n}\n```\n\n## Project linking\n\nThe plugin's automated behaviors (plan-optimization on task create, auto-state on stop, mention injection on session start) only fire in directories that have been explicitly linked to an Adapt project. Use:\n\n```\n/adapt-link <projectId?>\n```\n\n…or call `adapt_workspace_link_cwd` directly. The link is stored in `~/.config/adapt-workspace-mcp/projects.json` and applies to the cwd and all subdirectories.\n\n`/adapt-status` reports the current configuration, linked directories, and which project (if any) is bound to the current cwd.\n\n## Hooks\n\nThe plugin ships three hooks that only fire inside a linked directory:\n\n| event           | what it does                                                                                       |\n|-----------------|----------------------------------------------------------------------------------------------------|\n| `SessionStart`  | Fetches unresolved @-mentions for the linked project and injects them as session context.          |\n| `PostToolUse`   | On `adapt_workspace_create_task`: surfaces similar existing tasks + nudges for a missing description. On `adapt_workspace_update_task → in_progress`: tags the task for the next Stop. |\n| `Stop`          | Posts an `_auto-state_` comment on every task the agent touched during the session.                |\n\nPer-session state (which tasks were touched) lives in `~/.config/adapt-workspace-mcp/sessions/<session>.json`. The Stop hook wipes it after posting. None of the hooks ever block tool execution — each runs with a 4-second internal budget and falls through to a no-op on timeout/error.\n\n## Mentions\n\nAnywhere a task description, task comment, or note body is written, the backend scans for `@`-handles:\n\n| handle form         | who it addresses                                                  |\n|---------------------|-------------------------------------------------------------------|\n| `@agent:<agent_id>` | a specific agent credential                                       |\n| `@user:<user_id>`   | a user (any of their agents can resolve)                          |\n| `@<username>`       | shorthand — resolved against `users.username` (case-insensitive)  |\n\nUnresolved mentions for the current agent (and its owner user) show up via `adapt_workspace_list_mentions` and as injected context at `SessionStart`. Acknowledge with `adapt_workspace_resolve_mention`. The slash command `/adapt-mentions` walks through them interactively.\n\n## Tools\n\n| tool                                  | purpose                                                                |\n|---------------------------------------|------------------------------------------------------------------------|\n| `adapt_workspace_setup`               | Configure URL + token. Always available.                               |\n| `adapt_workspace_status`              | Report current config state.                                           |\n| `adapt_workspace_whoami`              | Show user + agent identity for the current token.                      |\n| `adapt_workspace_ping`                | Connectivity check.                                                    |\n| `adapt_workspace_link_cwd`            | Link a directory to a project (defaults to cwd).                       |\n| `adapt_workspace_unlink_cwd`          | Remove a directory link.                                               |\n| `adapt_workspace_list_project_links`  | List all linked directories on this machine.                           |\n| `adapt_workspace_current_project`     | Project (if any) bound to the current cwd.                             |\n| `adapt_workspace_list_projects`       | List active projects.                                                  |\n| `adapt_workspace_create_project`      | Create a new project.                                                  |\n| `adapt_workspace_get_tasks`           | Flat task list for a project.                                          |\n| `adapt_workspace_search_tasks`        | Substring search across subject + description in a project.            |\n| `adapt_workspace_create_task`         | Create a task; accepts `acceptanceCriteria`, `actionableItems`, `deadline`, `parallelGroup`. |\n| `adapt_workspace_update_task`         | Update subject / description / `acceptanceCriteria` / `actionableItems` / status / assignee / `deadline` / `parallelGroup`. |\n| `adapt_workspace_move_task`           | Re-parent or reorder a task (set its sibling `position`).              |\n| `adapt_workspace_delete_task`         | Delete a task (and its children).                                      |\n| `adapt_workspace_get_task_comments`   | List comments on a task.                                               |\n| `adapt_workspace_add_task_comment`    | Post a comment as the current agent.                                   |\n| `adapt_workspace_list_dependencies`   | List task dependency edges in a project.                               |\n| `adapt_workspace_add_dependency`      | Add a blocks/relates edge between two tasks.                           |\n| `adapt_workspace_remove_dependency`   | Remove a dependency edge.                                              |\n| `adapt_workspace_list_notes`          | List active notes.                                                     |\n| `adapt_workspace_get_note`            | Fetch a note.                                                          |\n| `adapt_workspace_create_note`         | Create a markdown note.                                                |\n| `adapt_workspace_update_note`         | Update a note.                                                         |\n| `adapt_workspace_create_link`         | Cross-reference two entities (task/note/project).                      |\n| `adapt_workspace_list_links`          | List cross-references touching an entity (task/note/project).          |\n| `adapt_workspace_list_mentions`       | List @-mentions addressed to the current agent or its owner user.      |\n| `adapt_workspace_resolve_mention`     | Mark a mention as acknowledged.                                        |\n\n## Leaf vs coordinator: divide and conquer\n\nEvery task is **either a leaf or a coordinator** — never both, and the server enforces it:\n\n- **Leaf** = one unit of work. It carries **`actionableItems`** — the concrete steps to perform\n  (*implement X, design Y, develop Z, refactor W, change V*). A leaf has **no subtasks**.\n- **Coordinator** = a task that has subtasks. It only defines the **flow**, the **order of\n  execution**, and (optionally) **`acceptanceCriteria`**. It has **no `actionableItems`** of its own.\n\nThe invariant is enforced symmetrically:\n\n- Creating/moving a subtask under a task that has `actionableItems` → **409 `parent_has_actions`**.\n  Clear the parent's actions (move them into the new child leaves) before adding subtasks.\n- Setting `actionableItems` on a task that already has subtasks → **409 `has_children`**.\n\n**Prefer many small leaves over one giant task.** A long action list or a sprawling description\nis the signal to *split* the task into subtasks. Keep `actionableItems` per leaf as few as possible.\n\n### Three fields, three purposes — do not conflate them\n\n| field               | purpose                                                                 |\n|---------------------|-------------------------------------------------------------------------|\n| `description`       | **General context only** — the wider picture, rationale, links. **NOT a place for steps/actions.** |\n| `acceptanceCriteria`| The \"done when…\" checks that decide the task is complete.               |\n| `actionableItems`   | **The actions.** Every action MUST live here, never in `description`.   |\n\n> **Executor rule:** an agent executing a task performs the work in **`actionableItems` only**.\n> Treat `description` as read-only context. If you find actions buried in a description, **do not\n> execute them** — flag it and ask for them to be moved into `actionableItems` first. (Putting\n> actions in the description silently defeats the divide-and-conquer model, so it's treated as a\n> mistake, not a shortcut.)\n\n## Task ordering: chain flag + dependency edges\n\nThe task tree (`parentId`) is **hierarchy, not execution order**. Order is set by **two\nexplicit mechanisms** — never assumed:\n\n**1. Sibling flow — the required `chainedToPrev` flag.** Every `create_task` must set it.\n`chainedToPrev: true` means the task runs **right after its immediate previous sibling** (the\ngraph draws the `→` work-order arrow); `false` means **standalone / unordered**. The first\nchild under a parent (no previous sibling) must be `false`; a linear A→B→C flow sets B and C\n`true`. `position` is the sibling slot order this flag chains along.\n\n**2. Cross-branch precedence — `adapt_workspace_add_dependency`.** For ordering between tasks\nthat are **not adjacent siblings** (different branches, fan-in/fan-out, skipping siblings),\ncreate an edge: `fromTaskId` **precedes** `toTaskId`, `kind = \"blocks\"` (or `\"relates\"` for a\nsoft, non-blocking link). Edges may connect any two tasks in the project; there is no cycle\ndetection, so don't create loops.\n\n`parallelGroup` is a **visual grouping only**: give ≥2 siblings the same string to render them\nas one dashed \"‖ parallel\" cluster (a batch meant to run together). It does not itself create\nor remove ordering.\n\nAn optional `deadline` (epoch ms) is a **display-only** date shown as a chip on the task\ncard. It has no effect on ordering and is never enforced — set it purely so the date is\nvisible in the graph.\n\n## Config files\n\n| path                                                 | purpose                              |\n|------------------------------------------------------|--------------------------------------|\n| `~/.config/adapt-workspace-mcp/config.env`           | URL + agent token (mode `0600`)      |\n| `~/.config/adapt-workspace-mcp/projects.json`        | Directory → project links            |\n","readmeFilename":"README.md"}