@edicarlos.lds/businessmap-mcp 3.1.0 → 4.0.1
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/CONTRIBUTING.md +11 -8
- package/README.md +17 -17
- package/dist/client/businessmap-client.d.ts.map +1 -1
- package/dist/client/businessmap-client.js +3 -3
- package/dist/client/businessmap-client.js.map +1 -1
- package/dist/client/modules/index.d.ts +0 -3
- package/dist/client/modules/index.d.ts.map +1 -1
- package/dist/client/modules/index.js +0 -1
- package/dist/client/modules/index.js.map +1 -1
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +5 -3
- package/dist/config/environment.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schemas/board-schemas.d.ts +6 -6
- package/dist/schemas/board-schemas.d.ts.map +1 -1
- package/dist/schemas/board-schemas.js +6 -2
- package/dist/schemas/board-schemas.js.map +1 -1
- package/dist/schemas/card-schemas.d.ts +16 -6
- package/dist/schemas/card-schemas.d.ts.map +1 -1
- package/dist/schemas/card-schemas.js +14 -6
- package/dist/schemas/card-schemas.js.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +1 -1
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/prompts/base-prompt.d.ts +12 -0
- package/dist/server/prompts/base-prompt.d.ts.map +1 -1
- package/dist/server/prompts/base-prompt.js +9 -1
- package/dist/server/prompts/base-prompt.js.map +1 -1
- package/dist/server/prompts/board-prompts.d.ts.map +1 -1
- package/dist/server/prompts/board-prompts.js +6 -5
- package/dist/server/prompts/board-prompts.js.map +1 -1
- package/dist/server/prompts/card-prompts.d.ts.map +1 -1
- package/dist/server/prompts/card-prompts.js +2 -1
- package/dist/server/prompts/card-prompts.js.map +1 -1
- package/dist/server/prompts/index.d.ts +0 -1
- package/dist/server/prompts/index.d.ts.map +1 -1
- package/dist/server/prompts/index.js.map +1 -1
- package/dist/server/prompts/workspace-prompts.d.ts.map +1 -1
- package/dist/server/prompts/workspace-prompts.js +4 -3
- package/dist/server/prompts/workspace-prompts.js.map +1 -1
- package/dist/server/resources/card-resources.d.ts.map +1 -1
- package/dist/server/resources/card-resources.js +22 -4
- package/dist/server/resources/card-resources.js.map +1 -1
- package/dist/server/tools/base-tool.d.ts.map +1 -1
- package/dist/server/tools/base-tool.js +7 -5
- package/dist/server/tools/base-tool.js.map +1 -1
- package/dist/server/tools/board-tools.d.ts +0 -6
- package/dist/server/tools/board-tools.d.ts.map +1 -1
- package/dist/server/tools/board-tools.js +32 -72
- package/dist/server/tools/board-tools.js.map +1 -1
- package/dist/server/tools/card-tools.d.ts.map +1 -1
- package/dist/server/tools/card-tools.js +57 -12
- package/dist/server/tools/card-tools.js.map +1 -1
- package/dist/server/tools/index.d.ts +0 -2
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +0 -1
- package/dist/server/tools/index.js.map +1 -1
- package/docs/RELEASE_PROCESS.md +88 -106
- package/docs/TOOLS.md +123 -106
- package/package.json +20 -19
package/docs/RELEASE_PROCESS.md
CHANGED
|
@@ -1,146 +1,128 @@
|
|
|
1
1
|
# Release Process
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Releases are fully automated by the [Release workflow](../.github/workflows/release.yml).
|
|
4
|
+
Merging to `main` is the only manual step.
|
|
4
5
|
|
|
5
|
-
## 🚀
|
|
6
|
+
## 🚀 What Happens on Every Push to `main`
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
1. **Validation**: lint, unit tests, build, knip and, when the smoke secrets are
|
|
9
|
+
configured, the `test:npx` package smoke test.
|
|
10
|
+
2. **Version calculation** from [Conventional Commits](https://www.conventionalcommits.org)
|
|
11
|
+
since the last `vX.Y.Z` tag:
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
| Commits since last tag | Release |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `feat!:`, `fix(scope)!:` or a `BREAKING CHANGE:` footer | major |
|
|
16
|
+
| `feat:` | minor |
|
|
17
|
+
| `fix:`, `perf:` (including `fix(deps):` from Dependabot) | patch |
|
|
18
|
+
| only `chore:`, `docs:`, `test:`, `ci:`, `refactor:`, ... | no release |
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
3. **Release commit and tag**: `chore(release): X.Y.Z` plus tag `vX.Y.Z`, pushed to `main`.
|
|
21
|
+
4. **npm publication** with provenance, through npm Trusted Publishing (no token stored in GitHub).
|
|
22
|
+
5. **GitHub release** with the generated release notes.
|
|
17
23
|
|
|
18
|
-
|
|
24
|
+
Runs are serialized, so pushes made while a release is running are released by
|
|
25
|
+
the next run.
|
|
19
26
|
|
|
20
|
-
|
|
27
|
+
## 🏷️ Commit Convention
|
|
21
28
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- [ ] You are authenticated to GitHub CLI: `gh auth status`
|
|
25
|
-
- [ ] Working directory is clean
|
|
29
|
+
Pull requests are squash merged, so the **PR title** becomes the commit message
|
|
30
|
+
that drives the release. Use:
|
|
26
31
|
|
|
27
|
-
|
|
32
|
+
```text
|
|
33
|
+
feat: add a new capability -> minor
|
|
34
|
+
fix: correct existing behavior -> patch
|
|
35
|
+
perf: make something faster -> patch
|
|
36
|
+
feat!: remove deprecated tool -> major
|
|
37
|
+
docs: / refactor: / test: / chore: -> no release on their own
|
|
38
|
+
```
|
|
28
39
|
|
|
29
|
-
|
|
40
|
+
For a breaking change without `!`, add a footer to the commit body:
|
|
30
41
|
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
# or for a specific version:
|
|
34
|
-
npm run preview:release 1.2.3
|
|
42
|
+
```text
|
|
43
|
+
BREAKING CHANGE: list_cards no longer accepts board_name
|
|
35
44
|
```
|
|
36
45
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Execute the publish npm command:
|
|
46
|
+
## 👀 Previewing the Next Release
|
|
40
47
|
|
|
41
48
|
```bash
|
|
42
|
-
npm run
|
|
49
|
+
npm run preview:release # next version and notes, as the workflow would compute them
|
|
50
|
+
npm run preview:release 1.2.3 # notes for an explicit version
|
|
43
51
|
```
|
|
44
52
|
|
|
45
|
-
The
|
|
46
|
-
|
|
47
|
-
1. Verify authentications
|
|
48
|
-
2. Build and test
|
|
49
|
-
3. Show version options (patch/minor/major)
|
|
50
|
-
4. Generate release notes preview
|
|
51
|
-
5. Confirm publication
|
|
52
|
-
6. Execute the entire process automatically
|
|
53
|
-
|
|
54
|
-
## 📋 Release Notes Format
|
|
55
|
-
|
|
56
|
-
Release notes are automatically generated based on commits since the last tag and organized by category:
|
|
57
|
-
|
|
58
|
-
### 🚀 New Features
|
|
59
|
-
|
|
60
|
-
- Commits starting with `feat:`, `feature:` or `FEAT:`
|
|
61
|
-
|
|
62
|
-
### 🐛 Bug Fixes
|
|
63
|
-
|
|
64
|
-
- Commits starting with `fix:` or `FIX:`
|
|
65
|
-
|
|
66
|
-
### ♻️ Code Refactoring
|
|
67
|
-
|
|
68
|
-
- Commits starting with `refactor:` or `REFACTOR:`
|
|
69
|
-
|
|
70
|
-
### 📚 Documentation
|
|
71
|
-
|
|
72
|
-
- Commits starting with `docs:`, `doc:` or `DOCS:`
|
|
73
|
-
|
|
74
|
-
### 🔧 Other Changes
|
|
75
|
-
|
|
76
|
-
- All other commits
|
|
53
|
+
The workflow can also be started manually from **Actions → Release → Run workflow**
|
|
54
|
+
with **dry_run** checked to see the version and notes without publishing anything.
|
|
77
55
|
|
|
78
|
-
##
|
|
79
|
-
|
|
80
|
-
To maximize release notes quality, it's recommended to use the following prefixes:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
feat: add new functionality
|
|
84
|
-
fix: fix bug
|
|
85
|
-
docs: update documentation
|
|
86
|
-
refactor: refactor code
|
|
87
|
-
test: add or update tests
|
|
88
|
-
chore: maintenance tasks
|
|
89
|
-
```
|
|
56
|
+
## 🎛️ Forcing a Specific Version
|
|
90
57
|
|
|
91
|
-
|
|
58
|
+
Bump `version` in `package.json` (and `package-lock.json`) in a pull request,
|
|
59
|
+
for example with `npm version 5.0.0 --no-git-tag-version`. When it lands on
|
|
60
|
+
`main`, the workflow sees an unpublished version, tags that commit and releases
|
|
61
|
+
it as is instead of computing a bump.
|
|
92
62
|
|
|
93
|
-
|
|
94
|
-
- `npm run publish:github` - Create GitHub release only
|
|
95
|
-
- `npm run preview:release` - Preview release notes
|
|
96
|
-
- `scripts/generate-release-notes.sh` - Generate release notes for specific version
|
|
63
|
+
## 📋 Release Notes Format
|
|
97
64
|
|
|
98
|
-
|
|
65
|
+
Commits since the previous tag are grouped by type, each one credited to its
|
|
66
|
+
GitHub author:
|
|
99
67
|
|
|
100
68
|
```markdown
|
|
101
69
|
## What's Changed
|
|
102
70
|
|
|
71
|
+
### ⚠️ Breaking Changes
|
|
103
72
|
### 🚀 New Features
|
|
104
|
-
- add user authentication support by @username
|
|
105
|
-
- implement card filtering by @username
|
|
106
|
-
|
|
107
73
|
### 🐛 Bug Fixes
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
74
|
+
### ⚡ Performance
|
|
75
|
+
### ♻️ Code Refactoring
|
|
111
76
|
### 📚 Documentation
|
|
112
|
-
|
|
77
|
+
### 📦 Dependencies (scope `deps` / `deps-dev`)
|
|
78
|
+
### 🔧 Other Changes
|
|
113
79
|
|
|
114
80
|
**Full Changelog**: https://github.com/edicarloslds/businessmap-mcp/compare/v1.0.0...v1.1.0
|
|
115
81
|
```
|
|
116
82
|
|
|
117
|
-
##
|
|
118
|
-
|
|
119
|
-
|
|
83
|
+
## ⚙️ One-time Setup
|
|
84
|
+
|
|
85
|
+
1. **GitHub environment**: in *Settings → Environments*, create `npm` and under
|
|
86
|
+
*Deployment branches and tags* select *Selected branches and tags* with only
|
|
87
|
+
`main`. Only the release job running on `main` can then request an npm
|
|
88
|
+
publish token.
|
|
89
|
+
2. **npm Trusted Publishing**: on npmjs.com, open the package → *Settings* →
|
|
90
|
+
*Trusted Publisher* → *GitHub Actions* and set:
|
|
91
|
+
- Organization or user: `edicarloslds`
|
|
92
|
+
- Repository: `businessmap-mcp`
|
|
93
|
+
- Workflow filename: `release.yml`
|
|
94
|
+
- Environment name: `npm`
|
|
95
|
+
- Allowed actions: `npm publish` (besides the default `npm stage publish`),
|
|
96
|
+
since the workflow publishes directly without a manual approval step
|
|
97
|
+
3. **Smoke test secrets** (optional): add environment secrets to `npm` or repository secrets
|
|
98
|
+
`BUSINESSMAP_SMOKE_API_URL` and `BUSINESSMAP_SMOKE_API_TOKEN`, ideally a
|
|
99
|
+
read-only token. Without them the smoke test step is skipped.
|
|
100
|
+
4. **Squash merge only**: in *Settings → General → Pull Requests*, keep only
|
|
101
|
+
*Allow squash merging* with the default message set to the PR title.
|
|
102
|
+
5. **Branch protection** (if enabled later): allow GitHub Actions to push the
|
|
103
|
+
release commit and tag to `main`, otherwise the release push is rejected.
|
|
104
|
+
|
|
105
|
+
## 🔧 Scripts
|
|
106
|
+
|
|
107
|
+
- `scripts/release.sh` - non-interactive release used by the workflow (`DRY_RUN=true` to simulate)
|
|
108
|
+
- `scripts/next-version.sh` - bump type implied by the commits in a range
|
|
109
|
+
- `scripts/generate-release-notes.sh` - release notes for a version and commit range
|
|
110
|
+
- `scripts/preview-release-notes.sh` - local preview of the next release
|
|
120
111
|
|
|
121
|
-
|
|
122
|
-
npm login
|
|
123
|
-
```
|
|
112
|
+
## 🚨 Troubleshooting
|
|
124
113
|
|
|
125
|
-
###
|
|
114
|
+
### A release failed halfway
|
|
126
115
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
116
|
+
Re-run the failed workflow. `scripts/release.sh` is idempotent: when the version
|
|
117
|
+
in `package.json` is missing from npm or has no GitHub release yet, it finishes
|
|
118
|
+
that release instead of computing a new one.
|
|
130
119
|
|
|
131
|
-
###
|
|
120
|
+
### Merged a fix but nothing was released
|
|
132
121
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
git add .
|
|
136
|
-
git commit -m "prepare for release"
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Tag already exists
|
|
122
|
+
Check that the squash commit on `main` starts with `fix:`/`feat:`/`perf:` and
|
|
123
|
+
run `npm run preview:release` locally to see what the workflow detects.
|
|
140
124
|
|
|
141
|
-
|
|
125
|
+
### npm publish fails with 404 / ENEEDAUTH
|
|
142
126
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
git push origin :refs/tags/v1.2.3
|
|
146
|
-
```
|
|
127
|
+
The Trusted Publisher on npmjs.com must match the repository and the
|
|
128
|
+
`release.yml` filename exactly.
|
package/docs/TOOLS.md
CHANGED
|
@@ -4,16 +4,32 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
4
4
|
|
|
5
5
|
## Summary
|
|
6
6
|
|
|
7
|
-
| Category
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
applied independently and removes mutation tools
|
|
7
|
+
| Category | Count |
|
|
8
|
+
| --------------------------- | :---: |
|
|
9
|
+
| Default tools (`essential`) | 27 |
|
|
10
|
+
| Full-profile tools | 93 |
|
|
11
|
+
| Resources | 6 |
|
|
12
|
+
| Prompts | 4 |
|
|
13
|
+
|
|
14
|
+
The default `essential` profile exposes an agent-oriented discovery-to-detail
|
|
15
|
+
catalog. Set `BUSINESSMAP_TOOL_PROFILE=full` to register every advanced
|
|
16
|
+
operation. Read-only mode is applied independently and removes mutation tools
|
|
17
|
+
from either profile.
|
|
18
|
+
|
|
19
|
+
Run `npm run eval:hierarchy` to validate the progressive-disclosure contracts:
|
|
20
|
+
bounded card discovery, compact payloads, board discovery without implicit
|
|
21
|
+
structure fetches, and explicit summary/full detail levels. These deterministic
|
|
22
|
+
checks complement production trajectory evals, where tool-call count, latency,
|
|
23
|
+
and token cost should also be monitored.
|
|
24
|
+
|
|
25
|
+
## Architecture inspiration
|
|
26
|
+
|
|
27
|
+
The progressive-disclosure architecture used by this server was inspired by
|
|
28
|
+
[“MCPs need to be designed too”](https://www.raindrop.ai/blog/mcp-design/), by
|
|
29
|
+
Jackson Ferrigno at Raindrop. The article's tool-hierarchy approach informed
|
|
30
|
+
the separation between compact discovery, focused detail, and deeper forensic
|
|
31
|
+
operations in this project. Credit belongs to the author and the Raindrop team
|
|
32
|
+
for publishing the design and its evaluation results.
|
|
17
33
|
|
|
18
34
|
---
|
|
19
35
|
|
|
@@ -30,23 +46,24 @@ applied independently and removes mutation tools from either profile.
|
|
|
30
46
|
|
|
31
47
|
---
|
|
32
48
|
|
|
33
|
-
### Board Management (
|
|
34
|
-
|
|
35
|
-
| Tool | Description
|
|
36
|
-
| :---------------------------- |
|
|
37
|
-
| `list_boards` |
|
|
38
|
-
| `search_board` |
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
49
|
+
### Board Management (14 tools)
|
|
50
|
+
|
|
51
|
+
| Tool | Description | Read-Only Safe |
|
|
52
|
+
| :---------------------------- | :-------------------------------------------------------------------------------------------- | :------------: |
|
|
53
|
+
| `list_boards` | Discover compact board candidates; set `detail_level=full` for complete board payloads | ✅ |
|
|
54
|
+
| `search_board` | Find compact candidates by name fragment; use `get_board` when the ID is known | ✅ |
|
|
55
|
+
| `get_board` | Get board details without loading its structure | ✅ |
|
|
56
|
+
| `get_columns` | Get all columns for a board | ✅ |
|
|
57
|
+
| `get_lanes` | Get all lanes/swimlanes for a board | ✅ |
|
|
58
|
+
| `get_lane` | Get details of a specific lane/swimlane | ✅ |
|
|
59
|
+
| `get_current_board_structure` | Get the complete structure of a board (workflows, columns, lanes, configs) | ✅ |
|
|
60
|
+
| `create_board` | Create a new board in a workspace | ❌ |
|
|
61
|
+
| `update_board` | Update the name and/or description of a board | ❌ |
|
|
62
|
+
| `create_lane` | Create a new lane/swimlane in a board (supports sub-lanes via `parent_lane_id`) | ❌ |
|
|
63
|
+
| `update_lane` | Update a lane (name, description, color, position, parent lane) | ❌ |
|
|
47
64
|
| `create_column` | Create a new column (main or sub-column). Section: 1=Backlog, 2=Requested, 3=Progress, 4=Done | ❌ |
|
|
48
|
-
| `update_column` | Update the details of a specific column
|
|
49
|
-
| `delete_column` | Delete a column from a board
|
|
65
|
+
| `update_column` | Update the details of a specific column | ❌ |
|
|
66
|
+
| `delete_column` | Delete a column from a board | ❌ ⚠️ |
|
|
50
67
|
|
|
51
68
|
---
|
|
52
69
|
|
|
@@ -54,18 +71,18 @@ applied independently and removes mutation tools from either profile.
|
|
|
54
71
|
|
|
55
72
|
#### Basic Operations
|
|
56
73
|
|
|
57
|
-
| Tool | Description
|
|
58
|
-
| :--------------- |
|
|
59
|
-
| `list_cards` |
|
|
60
|
-
| `search_cards` |
|
|
61
|
-
| `get_card` | Get
|
|
62
|
-
| `get_card_size` | Get the size/points of a specific card
|
|
63
|
-
| `get_card_types` | Get all available card types
|
|
64
|
-
| `create_card` | Create a new card in a board
|
|
65
|
-
| `move_card` | Move a card to a different column or lane
|
|
66
|
-
| `update_card` | Update card properties
|
|
67
|
-
| `set_card_size` | Set the size/points of a specific card
|
|
68
|
-
| `delete_card` | Permanently delete a card (irreversible)
|
|
74
|
+
| Tool | Description | Read-Only Safe |
|
|
75
|
+
| :--------------- | :------------------------------------------------------------------- | :------------: |
|
|
76
|
+
| `list_cards` | Discover a compact, paginated page of cards on a board | ✅ |
|
|
77
|
+
| `search_cards` | Discover compact cards across boards with advanced filters | ✅ |
|
|
78
|
+
| `get_card` | Get a card summary; set `detail_level=full` for the complete payload | ✅ |
|
|
79
|
+
| `get_card_size` | Get the size/points of a specific card | ✅ |
|
|
80
|
+
| `get_card_types` | Get all available card types | ✅ |
|
|
81
|
+
| `create_card` | Create a new card in a board | ❌ |
|
|
82
|
+
| `move_card` | Move a card to a different column or lane | ❌ |
|
|
83
|
+
| `update_card` | Update card properties | ❌ |
|
|
84
|
+
| `set_card_size` | Set the size/points of a specific card | ❌ |
|
|
85
|
+
| `delete_card` | Permanently delete a card (irreversible) | ❌ ⚠️ |
|
|
69
86
|
|
|
70
87
|
`list_cards` supports a `state` parameter (`active` | `archived` | `discarded` | `all`) to control which card lifecycle states are returned. The API defaults to `active`, so archived or discarded cards are only included when explicitly requested:
|
|
71
88
|
|
|
@@ -78,11 +95,11 @@ applied independently and removes mutation tools from either profile.
|
|
|
78
95
|
}
|
|
79
96
|
```
|
|
80
97
|
|
|
81
|
-
By default, `list_cards`
|
|
82
|
-
|
|
83
|
-
`per_page` to
|
|
84
|
-
|
|
85
|
-
|
|
98
|
+
By default, `list_cards` returns a compact `{ data, pagination }` page bounded
|
|
99
|
+
to 50 cards, and `search_cards` also defaults to compact results with a 50-card
|
|
100
|
+
page size. Use `page` and `per_page` to navigate. Set `compact: false` only when
|
|
101
|
+
full list payloads are required; set `include_pagination: false` on `list_cards`
|
|
102
|
+
only for legacy array compatibility.
|
|
86
103
|
|
|
87
104
|
#### Comments
|
|
88
105
|
|
|
@@ -102,13 +119,13 @@ planning fields.
|
|
|
102
119
|
|
|
103
120
|
#### Outcomes & History
|
|
104
121
|
|
|
105
|
-
| Tool | Description
|
|
106
|
-
| :----------------------- |
|
|
107
|
-
| `get_card_outcomes` | Get all outcomes for a specific card
|
|
108
|
-
| `get_card_history` | Get the history of a specific card outcome
|
|
109
|
-
| `get_card_flow_history` | Get the card's movement (transitions) across workflows/columns with timing
|
|
110
|
-
| `get_card_blocked_times` | Get the full blocking history of a card
|
|
111
|
-
| `get_card_logged_time` | Get time logged on a card and its subtasks, with individual entries
|
|
122
|
+
| Tool | Description | Read-Only Safe |
|
|
123
|
+
| :----------------------- | :----------------------------------------------------------------------------------------------------------------------- | :------------: |
|
|
124
|
+
| `get_card_outcomes` | Get all outcomes for a specific card | ✅ |
|
|
125
|
+
| `get_card_history` | Get the history of a specific card outcome | ✅ |
|
|
126
|
+
| `get_card_flow_history` | Get the card's movement (transitions) across workflows/columns with timing | ✅ |
|
|
127
|
+
| `get_card_blocked_times` | Get the full blocking history of a card | ✅ |
|
|
128
|
+
| `get_card_logged_time` | Get time logged on a card and its subtasks, with individual entries | ✅ |
|
|
112
129
|
| `get_card_revisions` | Get the chronological change history (revisions) of a card; pass a revision number for the full card state at that point | ✅ |
|
|
113
130
|
|
|
114
131
|
#### Relationships
|
|
@@ -119,25 +136,25 @@ planning fields.
|
|
|
119
136
|
|
|
120
137
|
#### Subtasks
|
|
121
138
|
|
|
122
|
-
| Tool | Description
|
|
123
|
-
| :-------------------- |
|
|
124
|
-
| `get_card_subtasks` | Get all subtasks for a specific card
|
|
125
|
-
| `get_card_subtask` | Get details of a specific subtask
|
|
126
|
-
| `create_card_subtask` | Create a new subtask for a card
|
|
139
|
+
| Tool | Description | Read-Only Safe |
|
|
140
|
+
| :-------------------- | :------------------------------------------------------------------------ | :------------: |
|
|
141
|
+
| `get_card_subtasks` | Get all subtasks for a specific card | ✅ |
|
|
142
|
+
| `get_card_subtask` | Get details of a specific subtask | ✅ |
|
|
143
|
+
| `create_card_subtask` | Create a new subtask for a card | ❌ |
|
|
127
144
|
| `update_card_subtask` | Update a subtask (description, owner, finished state, deadline, position) | ❌ |
|
|
128
|
-
| `delete_card_subtask` | Delete a subtask from a card
|
|
145
|
+
| `delete_card_subtask` | Delete a subtask from a card | ❌ ⚠️ |
|
|
129
146
|
|
|
130
147
|
#### Parent-Child Relationships
|
|
131
148
|
|
|
132
|
-
| Tool | Description
|
|
133
|
-
| :---------------------- |
|
|
134
|
-
| `get_card_parents` | Get a list of parent cards for a specific card
|
|
135
|
-
| `get_card_parent` | Check if a card is a parent of a given card
|
|
136
|
-
| `get_card_parent_graph` | Get parent cards including their parents (full graph)
|
|
137
|
-
| `get_card_children` | Get a list of child cards of a specified parent card
|
|
149
|
+
| Tool | Description | Read-Only Safe |
|
|
150
|
+
| :---------------------- | :------------------------------------------------------------------------- | :------------: |
|
|
151
|
+
| `get_card_parents` | Get a list of parent cards for a specific card | ✅ |
|
|
152
|
+
| `get_card_parent` | Check if a card is a parent of a given card | ✅ |
|
|
153
|
+
| `get_card_parent_graph` | Get parent cards including their parents (full graph) | ✅ |
|
|
154
|
+
| `get_card_children` | Get a list of child cards of a specified parent card | ✅ |
|
|
138
155
|
| `get_card_child_graph` | Get the hierarchical graph of a card's children (children of children too) | ✅ |
|
|
139
|
-
| `add_card_parent` | Make a card a parent of a given card
|
|
140
|
-
| `remove_card_parent` | Remove the link between a child card and a parent card
|
|
156
|
+
| `add_card_parent` | Make a card a parent of a given card | ❌ |
|
|
157
|
+
| `remove_card_parent` | Remove the link between a child card and a parent card | ❌ |
|
|
141
158
|
|
|
142
159
|
#### Blocking
|
|
143
160
|
|
|
@@ -180,46 +197,46 @@ planning fields.
|
|
|
180
197
|
|
|
181
198
|
### Workflow Management & Cycle Time Analysis (8 tools)
|
|
182
199
|
|
|
183
|
-
| Tool | Description
|
|
184
|
-
| :------------------------------------------ |
|
|
185
|
-
| `list_workflows` | Get a list of workflows for a board
|
|
186
|
-
| `get_workflow` | Get the details of a workflow
|
|
187
|
-
| `get_workflow_cycle_time_columns` | Get workflow's cycle time columns
|
|
188
|
-
| `get_workflow_effective_cycle_time_columns` | Get workflow's effective cycle time columns
|
|
189
|
-
| `create_workflow` | Create a new workflow on a board (0=cards, 1=initiatives, 2=timeline)
|
|
190
|
-
| `update_workflow` | Update a workflow (name, position, enabled/collapsible)
|
|
191
|
-
| `link_related_workflow` | Link a workflow from another board as a related workflow
|
|
192
|
-
| `unlink_related_workflow` | Remove a related workflow from a board
|
|
200
|
+
| Tool | Description | Read-Only Safe |
|
|
201
|
+
| :------------------------------------------ | :-------------------------------------------------------------------- | :------------: |
|
|
202
|
+
| `list_workflows` | Get a list of workflows for a board | ✅ |
|
|
203
|
+
| `get_workflow` | Get the details of a workflow | ✅ |
|
|
204
|
+
| `get_workflow_cycle_time_columns` | Get workflow's cycle time columns | ✅ |
|
|
205
|
+
| `get_workflow_effective_cycle_time_columns` | Get workflow's effective cycle time columns | ✅ |
|
|
206
|
+
| `create_workflow` | Create a new workflow on a board (0=cards, 1=initiatives, 2=timeline) | ❌ |
|
|
207
|
+
| `update_workflow` | Update a workflow (name, position, enabled/collapsible) | ❌ |
|
|
208
|
+
| `link_related_workflow` | Link a workflow from another board as a related workflow | ❌ |
|
|
209
|
+
| `unlink_related_workflow` | Remove a related workflow from a board | ❌ ⚠️ |
|
|
193
210
|
|
|
194
211
|
---
|
|
195
212
|
|
|
196
213
|
### Quick Setup — Batch (3 tools)
|
|
197
214
|
|
|
198
|
-
| Tool | Description
|
|
199
|
-
| :----------------------------- |
|
|
200
|
-
| `create_workspaces_and_boards` | Create up to 3 workspaces together with their boards and full board structure in one call
|
|
201
|
-
| `create_boards_in_workspace` | Create up to 3 boards with their full structure (workflows, renamed default columns, columns, lanes) in one call
|
|
202
|
-
| `configure_board_structure`
|
|
215
|
+
| Tool | Description | Read-Only Safe |
|
|
216
|
+
| :----------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | :------------: |
|
|
217
|
+
| `create_workspaces_and_boards` | Create up to 3 workspaces together with their boards and full board structure in one call | ❌ |
|
|
218
|
+
| `create_boards_in_workspace` | Create up to 3 boards with their full structure (workflows, renamed default columns, columns, lanes) in one call | ❌ |
|
|
219
|
+
| `configure_board_structure` | Configure an existing board's structure in one call: create/rename workflows, rename built-in columns, add columns and lanes | ❌ |
|
|
203
220
|
|
|
204
221
|
---
|
|
205
222
|
|
|
206
223
|
### Docs (13 tools)
|
|
207
224
|
|
|
208
|
-
| Tool
|
|
209
|
-
|
|
|
210
|
-
| `search_docs`
|
|
211
|
-
| `get_docs_text_title_search
|
|
212
|
-
| `get_doc_hierarchy`
|
|
213
|
-
| `list_docs`
|
|
214
|
-
| `list_personal_docs`
|
|
215
|
-
| `get_doc_content_batch`
|
|
216
|
-
| `get_docs_for_boards_batch`
|
|
217
|
-
| `create_doc`
|
|
218
|
-
| `update_doc`
|
|
219
|
-
| `archive_doc`
|
|
220
|
-
| `unarchive_doc`
|
|
221
|
-
| `create_personal_doc`
|
|
222
|
-
| `update_personal_doc`
|
|
225
|
+
| Tool | Description | Read-Only Safe |
|
|
226
|
+
| :--------------------------- | :------------------------------------------------------------------------------------------------- | :------------: |
|
|
227
|
+
| `search_docs` | Search docs by title (case-insensitive substring), optionally including archived and personal docs | ✅ |
|
|
228
|
+
| `get_docs_text_title_search` | Search docs by title AND content, returning matches with content snippets | ✅ |
|
|
229
|
+
| `get_doc_hierarchy` | Get the hierarchical parent/child tree of docs, optionally rooted at a specific doc | ✅ |
|
|
230
|
+
| `list_docs` | Get a list of docs (metadata only) with filters (ids, title, archived, important, parent) | ✅ |
|
|
231
|
+
| `list_personal_docs` | Get a list of your personal docs (metadata only) | ✅ |
|
|
232
|
+
| `get_doc_content_batch` | Get the full details (including content) of up to 20 docs in one call (shared or personal) | ✅ |
|
|
233
|
+
| `get_docs_for_boards_batch` | Get the docs pinned to each of up to 10 boards in one call | ✅ |
|
|
234
|
+
| `create_doc` | Create a new doc, optionally as a child of another doc | ❌ |
|
|
235
|
+
| `update_doc` | Update the title, content, position, or parent of an existing doc | ❌ |
|
|
236
|
+
| `archive_doc` | Archive a doc | ❌ |
|
|
237
|
+
| `unarchive_doc` | Restore an archived doc | ❌ |
|
|
238
|
+
| `create_personal_doc` | Create a new personal doc (visible only to you) | ❌ |
|
|
239
|
+
| `update_personal_doc` | Update the title, content, or position of an existing personal doc | ❌ |
|
|
223
240
|
|
|
224
241
|
---
|
|
225
242
|
|
|
@@ -247,14 +264,14 @@ planning fields.
|
|
|
247
264
|
|
|
248
265
|
MCP resources provide structured data access via URI. Clients can read resources directly without invoking tools.
|
|
249
266
|
|
|
250
|
-
| URI
|
|
251
|
-
|
|
|
252
|
-
| `businessmap://workspaces`
|
|
253
|
-
| `businessmap://boards`
|
|
254
|
-
| `businessmap://boards/{board_id}`
|
|
255
|
-
| `businessmap://boards/{board_id}/cards`
|
|
256
|
-
| `businessmap://boards/{board_id}/cards/pages/{page}/size/{per_page}` | `card-page`
|
|
257
|
-
| `businessmap://cards/{card_id}`
|
|
267
|
+
| URI | Name | Description | Listable |
|
|
268
|
+
| :------------------------------------------------------------------- | :----------- | :------------------------------------------------------------------- | :------: |
|
|
269
|
+
| `businessmap://workspaces` | `workspaces` | List all workspaces | ✅ |
|
|
270
|
+
| `businessmap://boards` | `boards` | List all boards | ✅ |
|
|
271
|
+
| `businessmap://boards/{board_id}` | `board` | Get details of a specific board | ❌ |
|
|
272
|
+
| `businessmap://boards/{board_id}/cards` | `cards` | Read the first compact card page (50 items) with pagination metadata | ✅ |
|
|
273
|
+
| `businessmap://boards/{board_id}/cards/pages/{page}/size/{per_page}` | `card-page` | Read a bounded card page (maximum 100) | ❌ |
|
|
274
|
+
| `businessmap://cards/{card_id}` | `card` | Get details of a specific card | ❌ |
|
|
258
275
|
|
|
259
276
|
---
|
|
260
277
|
|
|
@@ -275,7 +292,7 @@ Analyze a board's performance: flow efficiency, bottlenecks, cycle time, and wor
|
|
|
275
292
|
**Workflow:**
|
|
276
293
|
|
|
277
294
|
1. Uses `get_current_board_structure` to retrieve the full board structure
|
|
278
|
-
2. Uses `list_cards` to retrieve
|
|
295
|
+
2. Uses compact, paginated `list_cards` calls to retrieve active cards
|
|
279
296
|
3. Uses `get_workflow_cycle_time_columns` for each workflow
|
|
280
297
|
4. Delivers a structured analysis covering flow efficiency, cycle time, workload distribution, and actionable recommendations
|
|
281
298
|
|
|
@@ -294,8 +311,8 @@ Generate a comprehensive status report for a board, including cards summary, pro
|
|
|
294
311
|
**Workflow:**
|
|
295
312
|
|
|
296
313
|
1. Uses `get_current_board_structure` to get the board structure
|
|
297
|
-
2. Uses `list_cards`
|
|
298
|
-
3. Uses `get_card` for detailed info on a sample of cards
|
|
314
|
+
2. Uses compact, paginated `list_cards` for a bounded card snapshot
|
|
315
|
+
3. Uses summary-level `get_card` for detailed info on a sample of cards
|
|
299
316
|
4. Generates a structured report with: Executive Summary, Column Breakdown, Recently Updated Cards, Risks & Blockers, and Next Steps
|
|
300
317
|
|
|
301
318
|
---
|
|
@@ -334,7 +351,7 @@ Generate a high-level status overview of a workspace, including all boards and t
|
|
|
334
351
|
|
|
335
352
|
1. Uses `get_workspace` to get workspace details
|
|
336
353
|
2. Uses `list_boards` with `workspace_id` filter to list all boards
|
|
337
|
-
3. Uses `list_cards` for each board to get active card counts
|
|
354
|
+
3. Uses bounded, compact `list_cards` calls for each board to get active card counts
|
|
338
355
|
4. Uses `get_current_board_structure` for up to 3 boards
|
|
339
356
|
5. Delivers a structured overview with: Workspace Summary, Board Summaries, Highlights, and Recommendations
|
|
340
357
|
|