@crypto512/jicon-mcp 2.2.1 → 2.3.19
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/PROMPT.md +10 -28
- package/README.md +39 -6
- package/TOOL_LIST.md +542 -407
- package/dist/config/constants.d.ts +28 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +34 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +12 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +49 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +18 -0
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/client.d.ts.map +1 -1
- package/dist/confluence/client.js +7 -2
- package/dist/confluence/client.js.map +1 -1
- package/dist/confluence/formatters.d.ts +20 -0
- package/dist/confluence/formatters.d.ts.map +1 -1
- package/dist/confluence/formatters.js +74 -8
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +16 -20
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +71 -68
- package/dist/confluence/tools.js.map +1 -1
- package/dist/credentials/extractor.d.ts +15 -5
- package/dist/credentials/extractor.d.ts.map +1 -1
- package/dist/credentials/extractor.js +99 -12
- package/dist/credentials/extractor.js.map +1 -1
- package/dist/credentials/index.d.ts +4 -3
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +3 -2
- package/dist/credentials/index.js.map +1 -1
- package/dist/credentials/types.d.ts +22 -0
- package/dist/credentials/types.d.ts.map +1 -1
- package/dist/credentials/types.js.map +1 -1
- package/dist/index.js +211 -176
- package/dist/index.js.map +1 -1
- package/dist/jira/activity-tools.d.ts +8 -15
- package/dist/jira/activity-tools.d.ts.map +1 -1
- package/dist/jira/activity-tools.js +131 -90
- package/dist/jira/activity-tools.js.map +1 -1
- package/dist/jira/client.d.ts +24 -0
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +65 -6
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +61 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +83 -11
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +78 -26
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +293 -130
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/filter.d.ts.map +1 -1
- package/dist/permissions/filter.js +8 -4
- package/dist/permissions/filter.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +15 -13
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +19 -10
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/session/context.d.ts +81 -0
- package/dist/session/context.d.ts.map +1 -0
- package/dist/session/context.js +107 -0
- package/dist/session/context.js.map +1 -0
- package/dist/session/index.d.ts +12 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +22 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +186 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +383 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/tempo/client.d.ts +14 -0
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +57 -0
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/formatters.d.ts +13 -0
- package/dist/tempo/formatters.d.ts.map +1 -1
- package/dist/tempo/formatters.js +106 -20
- package/dist/tempo/formatters.js.map +1 -1
- package/dist/tempo/tools.d.ts +14 -13
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +203 -33
- package/dist/tempo/tools.js.map +1 -1
- package/dist/tempo/types.d.ts +20 -6
- package/dist/tempo/types.d.ts.map +1 -1
- package/dist/transport/http.d.ts +21 -5
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +193 -22
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/index.d.ts +7 -2
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +10 -4
- package/dist/transport/index.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +48 -724
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +337 -170
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +10 -31
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +12 -86
- package/dist/utils/content-buffer.js.map +1 -1
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +99 -2
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/jicon-help.d.ts +3 -3
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +164 -312
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/logger.d.ts +43 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +102 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/plantuml/tools.d.ts.map +1 -1
- package/dist/utils/plantuml/tools.js +10 -9
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +20 -2
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +147 -17
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/sandbox/formatters.d.ts +25 -0
- package/dist/utils/sandbox/formatters.d.ts.map +1 -0
- package/dist/utils/sandbox/formatters.js +690 -0
- package/dist/utils/sandbox/formatters.js.map +1 -0
- package/dist/utils/sandbox/helpers.d.ts +16 -0
- package/dist/utils/sandbox/helpers.d.ts.map +1 -0
- package/dist/utils/sandbox/helpers.js +252 -0
- package/dist/utils/sandbox/helpers.js.map +1 -0
- package/dist/utils/sandbox/index.d.ts +19 -0
- package/dist/utils/sandbox/index.d.ts.map +1 -0
- package/dist/utils/sandbox/index.js +269 -0
- package/dist/utils/sandbox/index.js.map +1 -0
- package/dist/utils/sandbox/schema.d.ts +55 -0
- package/dist/utils/sandbox/schema.d.ts.map +1 -0
- package/dist/utils/sandbox/schema.js +39 -0
- package/dist/utils/sandbox/schema.js.map +1 -0
- package/dist/utils/sandbox/types.d.ts +179 -0
- package/dist/utils/sandbox/types.d.ts.map +1 -0
- package/dist/utils/sandbox/types.js +8 -0
- package/dist/utils/sandbox/types.js.map +1 -0
- package/dist/utils/schemas/confluence.d.ts +41 -0
- package/dist/utils/schemas/confluence.d.ts.map +1 -0
- package/dist/utils/schemas/confluence.js +105 -0
- package/dist/utils/schemas/confluence.js.map +1 -0
- package/dist/utils/schemas/index.d.ts +77 -0
- package/dist/utils/schemas/index.d.ts.map +1 -0
- package/dist/utils/schemas/index.js +107 -0
- package/dist/utils/schemas/index.js.map +1 -0
- package/dist/utils/schemas/jira.d.ts +49 -0
- package/dist/utils/schemas/jira.d.ts.map +1 -0
- package/dist/utils/schemas/jira.js +153 -0
- package/dist/utils/schemas/jira.js.map +1 -0
- package/dist/utils/schemas/tempo.d.ts +29 -0
- package/dist/utils/schemas/tempo.d.ts.map +1 -0
- package/dist/utils/schemas/tempo.js +72 -0
- package/dist/utils/schemas/tempo.js.map +1 -0
- package/dist/utils/whoami-tools.d.ts +17 -0
- package/dist/utils/whoami-tools.d.ts.map +1 -0
- package/dist/utils/whoami-tools.js +90 -0
- package/dist/utils/whoami-tools.js.map +1 -0
- package/dist/utils/xhtml/error-locator.js +5 -5
- package/dist/utils/xhtml/error-locator.js.map +1 -1
- package/package.json +10 -9
- package/dist/credentials/client-factory.d.ts +0 -64
- package/dist/credentials/client-factory.d.ts.map +0 -1
- package/dist/credentials/client-factory.js +0 -110
- package/dist/credentials/client-factory.js.map +0 -1
- package/dist/credentials/context.d.ts +0 -25
- package/dist/credentials/context.d.ts.map +0 -1
- package/dist/credentials/context.js +0 -35
- package/dist/credentials/context.js.map +0 -1
- package/dist/utils/buffer-pipeline/index.d.ts +0 -30
- package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/index.js +0 -317
- package/dist/utils/buffer-pipeline/index.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
- package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/csv.js +0 -117
- package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
- package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/json.js +0 -48
- package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
- package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
- package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
- package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
- package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
- package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
- package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/schema.js +0 -168
- package/dist/utils/buffer-pipeline/schema.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
- package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
- package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
- package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/format.js +0 -160
- package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
- package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
- package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/select.js +0 -228
- package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
- package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
- package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
- package/dist/utils/buffer-pipeline/types.d.ts +0 -277
- package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/types.js +0 -8
- package/dist/utils/buffer-pipeline/types.js.map +0 -1
- package/dist/utils/plantuml/docker-manager.d.ts +0 -37
- package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
- package/dist/utils/plantuml/docker-manager.js +0 -284
- package/dist/utils/plantuml/docker-manager.js.map +0 -1
package/TOOL_LIST.md
CHANGED
|
@@ -5,19 +5,20 @@ This document provides a comprehensive reference of all available tools in the J
|
|
|
5
5
|
|
|
6
6
|
## Summary
|
|
7
7
|
|
|
8
|
-
**
|
|
9
|
-
- **Jira Tools
|
|
10
|
-
- **Confluence Tools
|
|
11
|
-
- **Tempo Tools
|
|
12
|
-
- **Buffer Tools
|
|
13
|
-
- **Workload Tools
|
|
14
|
-
- **URL Tools
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
8
|
+
**Tool Categories**:
|
|
9
|
+
- **Jira Tools** - Issue search, CRUD, transitions, comments, boards, sprints, epic analysis
|
|
10
|
+
- **Confluence Tools** - Page search, CRUD, draft workflow, review workflow, comments, attachments
|
|
11
|
+
- **Tempo Tools** - Worklog management, accounts, teams, time analysis
|
|
12
|
+
- **Buffer Tools** - Content buffering, XHTML editing, transformation, schema discovery
|
|
13
|
+
- **Workload Tools** - Time conversion and calculation utilities
|
|
14
|
+
- **URL Tools** - Full URL construction and parsing
|
|
15
|
+
- **Date Tools** - Date expression resolution
|
|
16
|
+
- **Help Tools** - Unified help system with topics
|
|
17
|
+
- **Whoami Tools** - User identity across services
|
|
18
|
+
- **PlantUML Tools** - Diagram validation and rendering
|
|
18
19
|
|
|
19
20
|
**Note**: All data-heavy tools (search, list, get) **always** return buffered responses with metadata for origin tracking:
|
|
20
|
-
- **JSON arrays**: Use `buffer_get_items` for complete items, `
|
|
21
|
+
- **JSON arrays**: Use `buffer_get_items` for complete items, `buffer_transform` for reports
|
|
21
22
|
- **XHTML**: Use `buffer_get_element` for element-based access
|
|
22
23
|
- **Search**: Use `buffer_grep` to search within any buffer
|
|
23
24
|
|
|
@@ -49,7 +50,7 @@ JSON responses include `suggestedNextTools` based on context:
|
|
|
49
50
|
"bufferId": "buf_xxx",
|
|
50
51
|
"structure": { "type": "array", "itemCount": 500 },
|
|
51
52
|
"suggestedNextTools": [
|
|
52
|
-
{ "tool": "
|
|
53
|
+
{ "tool": "buffer_transform", "description": "Transform to table/report (98% token reduction)", "condition": "for Confluence reports" },
|
|
53
54
|
{ "tool": "buffer_get_items", "description": "Get complete items for AI analysis", "condition": "for detailed analysis" },
|
|
54
55
|
{ "tool": "buffer_grep", "description": "Search within results" }
|
|
55
56
|
]
|
|
@@ -111,7 +112,7 @@ When XHTML validation fails, the response includes element ID and suggested acti
|
|
|
111
112
|
#### Jira Search → Confluence Report
|
|
112
113
|
```
|
|
113
114
|
1. jira_search_issues(jql) → bufferId, suggestedNextTools
|
|
114
|
-
2.
|
|
115
|
+
2. buffer_transform(inputs, code) → tableBufferId (98% token reduction)
|
|
115
116
|
3. confluence_edit(pageId) → pageBufferId, structure
|
|
116
117
|
4. buffer_edit(pageBufferId, after=ID, fromBufferId=tableBufferId)
|
|
117
118
|
5. confluence_draft_create(pageId, pageBufferId, autoRetry=true) → draft URL
|
|
@@ -121,7 +122,7 @@ When XHTML validation fails, the response includes element ID and suggested acti
|
|
|
121
122
|
```
|
|
122
123
|
1. tempo_get_user_info() → workerKey
|
|
123
124
|
2. tempo_get_worklogs(dateFrom, dateTo, workerKey) → bufferId, suggestedNextTools
|
|
124
|
-
3.
|
|
125
|
+
3. buffer_transform(bufferId, groupBy=project, sum=hours) → summaryBufferId
|
|
125
126
|
4. Use in report or display directly
|
|
126
127
|
```
|
|
127
128
|
|
|
@@ -137,7 +138,7 @@ When XHTML validation fails, the response includes element ID and suggested acti
|
|
|
137
138
|
|
|
138
139
|
---
|
|
139
140
|
|
|
140
|
-
## Jira Tools (
|
|
141
|
+
## Jira Tools (29)
|
|
141
142
|
|
|
142
143
|
### Localization / Non-English Jira
|
|
143
144
|
|
|
@@ -166,8 +167,8 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
166
167
|
|
|
167
168
|
---
|
|
168
169
|
|
|
169
|
-
###
|
|
170
|
-
**Description**: Search for Jira issues using JQL. Auto-fetches all results
|
|
170
|
+
### jira_search_issues
|
|
171
|
+
**Description**: Search for Jira issues using JQL. Auto-fetches all matching results.
|
|
171
172
|
**Use Cases**: Find bugs, filter by status, search by assignee, complex queries
|
|
172
173
|
|
|
173
174
|
| Parameter | Type | Required | Description |
|
|
@@ -180,7 +181,6 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
180
181
|
|-------|-------------|
|
|
181
182
|
| `returnedItems` | Items available in buffer - **USE THIS** for actual count |
|
|
182
183
|
| `jiraTotalMatching` | Total matching in Jira (may exceed returnedItems) |
|
|
183
|
-
| `apiLimit` | Maximum items per search (5000 cap) |
|
|
184
184
|
| `note` | Explanation when results are truncated |
|
|
185
185
|
|
|
186
186
|
**Example Response** (when JQL matches 9998 issues):
|
|
@@ -189,16 +189,15 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
189
189
|
"bufferId": "buf_xxx",
|
|
190
190
|
"returnedItems": 5000,
|
|
191
191
|
"jiraTotalMatching": 9998,
|
|
192
|
-
"apiLimit": 5000,
|
|
193
192
|
"note": "9998 issues match query, 5000 returned (API limit)"
|
|
194
193
|
}
|
|
195
194
|
```
|
|
196
195
|
|
|
197
|
-
**Returns**: `bufferId` with issues. Use `
|
|
196
|
+
**Returns**: `bufferId` with issues. Use `buffer_transform` for tables, `buffer_get_items` for AI analysis.
|
|
198
197
|
|
|
199
198
|
---
|
|
200
199
|
|
|
201
|
-
###
|
|
200
|
+
### jira_get_issue
|
|
202
201
|
**Description**: Get detailed information about a specific issue
|
|
203
202
|
**Use Cases**: View issue details, check status, read description and comments
|
|
204
203
|
|
|
@@ -212,7 +211,20 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
212
211
|
|
|
213
212
|
---
|
|
214
213
|
|
|
215
|
-
###
|
|
214
|
+
### jira_get_issues
|
|
215
|
+
**Description**: Get multiple Jira issues at once in a single buffer
|
|
216
|
+
**Use Cases**: Batch fetch issues by key instead of calling jira_get_issue N times; compare issues side by side; bulk analysis
|
|
217
|
+
|
|
218
|
+
| Parameter | Type | Required | Description |
|
|
219
|
+
|-----------|------|----------|-------------|
|
|
220
|
+
| issueKeys | string \| string[] | ✓ | Single key or array of keys (e.g., "PROJ-123" or ["PROJ-123","PROJ-456"]) |
|
|
221
|
+
| fields | string[] | ✗ | Specific fields to return |
|
|
222
|
+
|
|
223
|
+
**Returns**: `bufferId` with flat issues array (same `jira_issue` schema as `jira_search_issues`). Use `buffer_transform` for tables, `buffer_get_items` for analysis.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### jira_create_issue
|
|
216
228
|
**Description**: Create a new Jira issue
|
|
217
229
|
**Use Cases**: Report bugs, create tasks, add stories to backlog
|
|
218
230
|
|
|
@@ -230,7 +242,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
230
242
|
|
|
231
243
|
---
|
|
232
244
|
|
|
233
|
-
###
|
|
245
|
+
### jira_update_issue
|
|
234
246
|
**Description**: Update fields on an existing issue
|
|
235
247
|
**Use Cases**: Change priority, update description, modify assignee
|
|
236
248
|
|
|
@@ -245,7 +257,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
245
257
|
|
|
246
258
|
---
|
|
247
259
|
|
|
248
|
-
###
|
|
260
|
+
### jira_transition_issue
|
|
249
261
|
**Description**: Move issue to different status
|
|
250
262
|
**Use Cases**: Start work, mark as done, move to review
|
|
251
263
|
|
|
@@ -258,7 +270,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
258
270
|
|
|
259
271
|
---
|
|
260
272
|
|
|
261
|
-
###
|
|
273
|
+
### jira_add_comment
|
|
262
274
|
**Description**: Add a comment to an issue
|
|
263
275
|
**Use Cases**: Provide updates, ask questions, document decisions
|
|
264
276
|
|
|
@@ -270,7 +282,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
270
282
|
|
|
271
283
|
---
|
|
272
284
|
|
|
273
|
-
###
|
|
285
|
+
### jira_get_issue_comments
|
|
274
286
|
**Description**: Retrieve all comments from a Jira issue
|
|
275
287
|
**Use Cases**: Read discussion history, check updates
|
|
276
288
|
|
|
@@ -283,7 +295,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
283
295
|
|
|
284
296
|
---
|
|
285
297
|
|
|
286
|
-
###
|
|
298
|
+
### jira_list_projects
|
|
287
299
|
**Description**: List all accessible Jira projects
|
|
288
300
|
**Use Cases**: Discover available projects, get project keys
|
|
289
301
|
|
|
@@ -296,7 +308,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
296
308
|
|
|
297
309
|
---
|
|
298
310
|
|
|
299
|
-
###
|
|
311
|
+
### jira_get_project
|
|
300
312
|
**Description**: Get detailed project information
|
|
301
313
|
**Use Cases**: View project details, components, versions
|
|
302
314
|
|
|
@@ -309,7 +321,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
309
321
|
|
|
310
322
|
---
|
|
311
323
|
|
|
312
|
-
###
|
|
324
|
+
### jira_get_issue_types
|
|
313
325
|
**Description**: Get all available issue types in this Jira instance
|
|
314
326
|
**Use Cases**: Discover type names before filtering by type in JQL, find localized or custom type names
|
|
315
327
|
|
|
@@ -321,29 +333,44 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
321
333
|
|
|
322
334
|
---
|
|
323
335
|
|
|
324
|
-
###
|
|
325
|
-
**Description**: Get
|
|
336
|
+
### jira_get_fields
|
|
337
|
+
**Description**: Get Jira fields (system and custom). Requires a search term or "all".
|
|
326
338
|
**Use Cases**: Discover field names in user's language, find custom field IDs for JQL, identify Epic Link field
|
|
327
339
|
|
|
328
340
|
| Parameter | Type | Required | Description |
|
|
329
341
|
|-----------|------|----------|-------------|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
342
|
+
| search | string | **Yes** | `"all"` to return every field, or a search term to filter by name, id, clauseNames, or schemaType (case-insensitive) |
|
|
343
|
+
| filter | enum | No | Filter by category: "all" (default), "custom", "system", or "navigable" |
|
|
332
344
|
|
|
333
345
|
**Returns**: List of fields with id, name, custom, clauseNames, schemaType
|
|
334
346
|
|
|
335
347
|
**Example workflow for Epic Link in any language**:
|
|
336
|
-
1. Call `jira_get_fields(search="epic")`
|
|
348
|
+
1. Call `jira_get_fields(search="epic")` — matches name, id, clauseNames, AND schemaType
|
|
337
349
|
2. Look for field with `schemaType = "com.pyxis.greenhopper.jira:gh-epic-link"`
|
|
338
|
-
3. Use
|
|
339
|
-
- Localized name: `"Lien d'épopée" = PROJ-123` (French)
|
|
340
|
-
- Language-independent: `cf[10014] = PROJ-123`
|
|
350
|
+
3. Use `cf[ID]` from clauseNames in JQL: `cf[10014] IS EMPTY`
|
|
341
351
|
|
|
342
|
-
**Tip**: The `clauseNames` array shows all valid JQL names for a field. The `cf[ID]` syntax always works regardless of language.
|
|
352
|
+
**Tip**: The `clauseNames` array shows all valid JQL names for a field. The `cf[ID]` syntax always works regardless of language. The search also matches `schemaType`, so `search="epic"` finds the Epic Link field even on French instances where it's named "Lien d'épopée".
|
|
343
353
|
|
|
344
354
|
---
|
|
345
355
|
|
|
346
|
-
###
|
|
356
|
+
### jira_search_users
|
|
357
|
+
**Description**: Search for Jira users by name, username, or email
|
|
358
|
+
**Use Cases**: Find a person's username before building JQL queries with assignee/reporter
|
|
359
|
+
|
|
360
|
+
| Parameter | Type | Required | Description |
|
|
361
|
+
|-----------|------|----------|-------------|
|
|
362
|
+
| query | string | ✓ | Search text (display name, username, or email) |
|
|
363
|
+
| maxResults | number | ✗ | Maximum results (default: 20) |
|
|
364
|
+
|
|
365
|
+
**Returns**: Inline list of matching users with `key`, `name`, `displayName`, `emailAddress`.
|
|
366
|
+
|
|
367
|
+
**Example workflow**:
|
|
368
|
+
1. `jira_search_users(query="Fabien")` → finds users matching "Fabien"
|
|
369
|
+
2. Use username in JQL: `assignee = "fthuillier"`
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
### jira_get_transitions
|
|
347
374
|
**Description**: Get available workflow transitions for an issue
|
|
348
375
|
**Use Cases**: Check what status changes are possible
|
|
349
376
|
|
|
@@ -353,7 +380,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
353
380
|
|
|
354
381
|
---
|
|
355
382
|
|
|
356
|
-
###
|
|
383
|
+
### jira_link_issues
|
|
357
384
|
**Description**: Create a link between two issues
|
|
358
385
|
**Use Cases**: Mark blockers, relate issues, create dependencies
|
|
359
386
|
|
|
@@ -366,7 +393,28 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
366
393
|
|
|
367
394
|
---
|
|
368
395
|
|
|
369
|
-
###
|
|
396
|
+
### jira_list_boards
|
|
397
|
+
**Description**: List all Jira Agile boards (Scrum and Kanban). Entry point for board discovery.
|
|
398
|
+
**Use Cases**: Discover available boards, filter by project or type, find board IDs
|
|
399
|
+
|
|
400
|
+
| Parameter | Type | Required | Description |
|
|
401
|
+
|-----------|------|----------|-------------|
|
|
402
|
+
| projectKeyOrId | string | ✗ | Filter by project key or ID |
|
|
403
|
+
| type | string | ✗ | Filter by board type ("scrum" or "kanban") |
|
|
404
|
+
| name | string | ✗ | Filter by board name (contains) |
|
|
405
|
+
|
|
406
|
+
**Returns**: `bufferId` with boards array. Each board has `id`, `name`, `type`, `projectKey`.
|
|
407
|
+
|
|
408
|
+
**Examples**:
|
|
409
|
+
```
|
|
410
|
+
jira_list_boards() # All boards
|
|
411
|
+
jira_list_boards(projectKeyOrId="PROJ") # Boards for project
|
|
412
|
+
jira_list_boards(type="scrum") # Only Scrum boards
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
### jira_get_board
|
|
370
418
|
**Description**: Get Agile board information
|
|
371
419
|
**Use Cases**: View board details, get board configuration
|
|
372
420
|
|
|
@@ -378,7 +426,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
378
426
|
|
|
379
427
|
---
|
|
380
428
|
|
|
381
|
-
###
|
|
429
|
+
### jira_get_sprints
|
|
382
430
|
**Description**: List all sprints for a board
|
|
383
431
|
**Use Cases**: View active sprints, check sprint schedules
|
|
384
432
|
|
|
@@ -391,7 +439,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
391
439
|
|
|
392
440
|
---
|
|
393
441
|
|
|
394
|
-
###
|
|
442
|
+
### jira_get_sprint_issues
|
|
395
443
|
**Description**: Get all issues in a specific sprint
|
|
396
444
|
**Use Cases**: View sprint backlog, check sprint progress
|
|
397
445
|
|
|
@@ -403,7 +451,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
403
451
|
|
|
404
452
|
---
|
|
405
453
|
|
|
406
|
-
###
|
|
454
|
+
### jira_get_issue_watchers
|
|
407
455
|
**Description**: Get list of watchers on an issue
|
|
408
456
|
**Use Cases**: See who's following an issue
|
|
409
457
|
|
|
@@ -413,7 +461,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
413
461
|
|
|
414
462
|
---
|
|
415
463
|
|
|
416
|
-
###
|
|
464
|
+
### jira_get_issue_worklogs
|
|
417
465
|
**Description**: Retrieve all worklogs from a Jira issue
|
|
418
466
|
**Use Cases**: Analyze time logged against an issue, see worklog history
|
|
419
467
|
|
|
@@ -425,7 +473,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
425
473
|
|
|
426
474
|
---
|
|
427
475
|
|
|
428
|
-
###
|
|
476
|
+
### jira_get_total_worklogs
|
|
429
477
|
**Description**: Get total worklogs for an issue and all its children recursively
|
|
430
478
|
**Use Cases**: Get total time spent on an Epic including all stories and sub-tasks
|
|
431
479
|
|
|
@@ -437,7 +485,7 @@ The server automatically handles localized changelog field names for activity tr
|
|
|
437
485
|
|
|
438
486
|
---
|
|
439
487
|
|
|
440
|
-
###
|
|
488
|
+
### jira_list_epic_children
|
|
441
489
|
**Description**: List all children of an Epic/Initiative without needing JQL
|
|
442
490
|
**Use Cases**: Get Epic children, list Initiative epics, find issue hierarchy
|
|
443
491
|
|
|
@@ -460,7 +508,7 @@ Automatically detects Epic Link and Parent Link fields for language-independent
|
|
|
460
508
|
|
|
461
509
|
---
|
|
462
510
|
|
|
463
|
-
###
|
|
511
|
+
### jira_get_activity_digest
|
|
464
512
|
**Description**: Get recent activity across issues for LLM analysis. Returns DIRECTLY (not buffered).
|
|
465
513
|
**Use Cases**: Project activity summary, team updates, blocker detection, weekly reports
|
|
466
514
|
|
|
@@ -471,7 +519,7 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
|
|
|
471
519
|
| projectKey | string | ✗ | Filter by project key |
|
|
472
520
|
| jql | string | ✗ | Full JQL query for flexible scoping |
|
|
473
521
|
| issueKeys | string[] | ✗ | Specific issue keys to include |
|
|
474
|
-
| since | string | ✗ | Time range: "
|
|
522
|
+
| since | string | ✗ | Time range: "7d", "30d", "365d", or ISO date (default: "30d"). Provide explicitly for accurate results. |
|
|
475
523
|
| includeComments | boolean | ✗ | Include comments (default: true) |
|
|
476
524
|
| includeStatusChanges | boolean | ✗ | Include status changes (default: true) |
|
|
477
525
|
| includePriorityChanges | boolean | ✗ | Include priority changes (default: true) |
|
|
@@ -501,27 +549,27 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
|
|
|
501
549
|
|
|
502
550
|
---
|
|
503
551
|
|
|
504
|
-
###
|
|
505
|
-
**Description**: Get comments across multiple issues for
|
|
506
|
-
**Use Cases**:
|
|
552
|
+
### jira_get_recent_comments
|
|
553
|
+
**Description**: Get comments across multiple issues for analysis. Returns buffered data.
|
|
554
|
+
**Use Cases**: Comment statistics (top commenters), discussion analysis, finding comments about specific topics
|
|
507
555
|
|
|
508
556
|
| Parameter | Type | Required | Description |
|
|
509
557
|
|-----------|------|----------|-------------|
|
|
510
558
|
| projectKey | string | ✗ | Filter by project key |
|
|
511
559
|
| jql | string | ✗ | Full JQL query for flexible scoping |
|
|
512
560
|
| issueKeys | string[] | ✗ | Specific issue keys to include |
|
|
513
|
-
| since | string | ✗ | Time range: "
|
|
561
|
+
| since | string | ✗ | Time range: "7d", "30d", "365d", or ISO date (default: "30d"). Provide explicitly for accurate results. |
|
|
514
562
|
| authorKey | string | ✗ | Filter by comment author username |
|
|
515
|
-
| maxComments | number | ✗ | Maximum comments to return (default:
|
|
516
|
-
| includeContext | boolean | ✗ | Include issue summary/status (default: true) |
|
|
563
|
+
| maxComments | number | ✗ | Maximum comments to return (default: all) |
|
|
517
564
|
|
|
518
565
|
**At least one scoping parameter required**: `projectKey`, `jql`, or `issueKeys`
|
|
519
566
|
|
|
520
|
-
**Returns**:
|
|
567
|
+
**Returns**: bufferId with `jira_comment` schema (issueKey, issueSummary, author, authorEmail, body, created, updated).
|
|
568
|
+
**Next**: `buffer_transform` for stats/tables, `buffer_grep` to search comments.
|
|
521
569
|
|
|
522
570
|
---
|
|
523
571
|
|
|
524
|
-
###
|
|
572
|
+
### jira_get_changelog
|
|
525
573
|
**Description**: Get field changes across issues for tracking what happened. Returns DIRECTLY (not buffered).
|
|
526
574
|
**Use Cases**: Status change tracking, priority escalation analysis, assignment history
|
|
527
575
|
|
|
@@ -530,7 +578,7 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
|
|
|
530
578
|
| projectKey | string | ✗ | Filter by project key |
|
|
531
579
|
| jql | string | ✗ | Full JQL query for flexible scoping |
|
|
532
580
|
| issueKeys | string[] | ✗ | Specific issue keys to include |
|
|
533
|
-
| since | string | ✗ | Time range: "
|
|
581
|
+
| since | string | ✗ | Time range: "7d", "30d", "365d", or ISO date (default: "30d"). Provide explicitly for accurate results. |
|
|
534
582
|
| fields | string[] | ✗ | Fields to track (default: ["status", "priority", "assignee", "resolution"]) |
|
|
535
583
|
| maxChanges | number | ✗ | Maximum changes to return (default: 50) |
|
|
536
584
|
|
|
@@ -551,7 +599,7 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
|
|
|
551
599
|
|
|
552
600
|
---
|
|
553
601
|
|
|
554
|
-
###
|
|
602
|
+
### jira_analyze_epic
|
|
555
603
|
**Description**: Comprehensive Epic/Feature analysis for LLM insights. Returns DIRECTLY (not buffered).
|
|
556
604
|
**Use Cases**: Epic progress analysis, velocity tracking, time metrics, feature status
|
|
557
605
|
|
|
@@ -596,7 +644,7 @@ Currently **3 issues** are in progress.
|
|
|
596
644
|
|
|
597
645
|
---
|
|
598
646
|
|
|
599
|
-
###
|
|
647
|
+
### jira_epic_summary
|
|
600
648
|
**Description**: Lightweight Epic/Initiative summary with hierarchy and status breakdown. Returns DIRECTLY (not buffered).
|
|
601
649
|
**Use Cases**: Quick Epic overview, status breakdown, cross-project dependencies
|
|
602
650
|
|
|
@@ -643,7 +691,7 @@ Provides quick overview without the heavy metrics of `jira_analyze_epic` - no ti
|
|
|
643
691
|
|
|
644
692
|
---
|
|
645
693
|
|
|
646
|
-
###
|
|
694
|
+
### jira_analyze_sprint
|
|
647
695
|
**Description**: Comprehensive Sprint analysis for LLM insights. Returns DIRECTLY (not buffered).
|
|
648
696
|
**Use Cases**: Sprint progress, risk assessment, team workload, daily standups
|
|
649
697
|
|
|
@@ -730,11 +778,12 @@ Time tracking shows **71% of estimate used** for **65% completion**.
|
|
|
730
778
|
|
|
731
779
|
---
|
|
732
780
|
|
|
733
|
-
## Confluence Tools (
|
|
781
|
+
## Confluence Tools (20)
|
|
734
782
|
|
|
735
|
-
###
|
|
783
|
+
### confluence_search_content
|
|
736
784
|
**Description**: Search Confluence content using CQL. Auto-fetches all results.
|
|
737
785
|
**Use Cases**: Find pages, search by keyword, filter by space
|
|
786
|
+
**CQL Syntax**: See `help(topic="cql")` for valid fields and examples.
|
|
738
787
|
|
|
739
788
|
| Parameter | Type | Required | Description |
|
|
740
789
|
|-----------|------|----------|-------------|
|
|
@@ -745,7 +794,7 @@ Time tracking shows **71% of estimate used** for **65% completion**.
|
|
|
745
794
|
|
|
746
795
|
---
|
|
747
796
|
|
|
748
|
-
###
|
|
797
|
+
### confluence_get_page
|
|
749
798
|
**Description**: Get a Confluence page by ID (PREFERRED when you have page ID)
|
|
750
799
|
**Use Cases**: Read page content, prepare for editing
|
|
751
800
|
|
|
@@ -760,7 +809,7 @@ Time tracking shows **71% of estimate used** for **65% completion**.
|
|
|
760
809
|
|
|
761
810
|
---
|
|
762
811
|
|
|
763
|
-
###
|
|
812
|
+
### confluence_get_page_by_title
|
|
764
813
|
**Description**: Get a page by title and space (use ONLY when you don't have page ID)
|
|
765
814
|
**Use Cases**: Find page by name, access documentation
|
|
766
815
|
|
|
@@ -776,7 +825,7 @@ Time tracking shows **71% of estimate used** for **65% completion**.
|
|
|
776
825
|
|
|
777
826
|
---
|
|
778
827
|
|
|
779
|
-
###
|
|
828
|
+
### confluence_edit (RECOMMENDED)
|
|
780
829
|
**Description**: Smart page/draft loader - auto-resolves URLs, pageIds, draftIds, or SPACE/Title
|
|
781
830
|
**Use Cases**: Edit any Confluence content with a single tool, handle URL input from users
|
|
782
831
|
|
|
@@ -826,7 +875,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
826
875
|
|
|
827
876
|
---
|
|
828
877
|
|
|
829
|
-
###
|
|
878
|
+
### confluence_delete_page
|
|
830
879
|
**Description**: Delete a Confluence page
|
|
831
880
|
**Use Cases**: Remove outdated content
|
|
832
881
|
|
|
@@ -836,7 +885,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
836
885
|
|
|
837
886
|
---
|
|
838
887
|
|
|
839
|
-
###
|
|
888
|
+
### confluence_list_spaces
|
|
840
889
|
**Description**: List all accessible Confluence spaces
|
|
841
890
|
**Use Cases**: Discover available spaces, get space keys
|
|
842
891
|
|
|
@@ -848,7 +897,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
848
897
|
|
|
849
898
|
---
|
|
850
899
|
|
|
851
|
-
###
|
|
900
|
+
### confluence_get_space
|
|
852
901
|
**Description**: Get detailed information about a space
|
|
853
902
|
**Use Cases**: View space details, get homepage
|
|
854
903
|
|
|
@@ -861,7 +910,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
861
910
|
|
|
862
911
|
---
|
|
863
912
|
|
|
864
|
-
###
|
|
913
|
+
### confluence_get_page_children
|
|
865
914
|
**Description**: Get all child pages of a page
|
|
866
915
|
**Use Cases**: Navigate page hierarchy, list subpages
|
|
867
916
|
|
|
@@ -874,7 +923,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
874
923
|
|
|
875
924
|
---
|
|
876
925
|
|
|
877
|
-
###
|
|
926
|
+
### confluence_add_comment
|
|
878
927
|
**Description**: Add a comment to a Confluence page
|
|
879
928
|
**Use Cases**: Provide feedback, ask questions
|
|
880
929
|
|
|
@@ -885,7 +934,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
885
934
|
|
|
886
935
|
---
|
|
887
936
|
|
|
888
|
-
###
|
|
937
|
+
### confluence_get_comments
|
|
889
938
|
**Description**: Get all comments on a Confluence page
|
|
890
939
|
**Use Cases**: Read feedback, review discussions
|
|
891
940
|
|
|
@@ -897,7 +946,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
897
946
|
|
|
898
947
|
---
|
|
899
948
|
|
|
900
|
-
###
|
|
949
|
+
### confluence_upload_attachment
|
|
901
950
|
**Description**: Upload an attachment to a Confluence page
|
|
902
951
|
**Use Cases**: Attach documents, upload images
|
|
903
952
|
|
|
@@ -909,7 +958,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
909
958
|
|
|
910
959
|
---
|
|
911
960
|
|
|
912
|
-
###
|
|
961
|
+
### confluence_list_attachments
|
|
913
962
|
**Description**: List all attachments on a Confluence page
|
|
914
963
|
**Use Cases**: View uploaded files, check attachments
|
|
915
964
|
|
|
@@ -921,23 +970,10 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
921
970
|
|
|
922
971
|
---
|
|
923
972
|
|
|
924
|
-
###
|
|
925
|
-
**Description**:
|
|
926
|
-
**Use Cases**: Verify personal space before write operations, check space key for write-home restriction
|
|
927
|
-
|
|
928
|
-
| Parameter | Type | Required | Description |
|
|
929
|
-
|-----------|------|----------|-------------|
|
|
930
|
-
| (none) | | | |
|
|
931
|
-
|
|
932
|
-
**Response includes**: `spaceKey`, `spaceName`, `spaceType`, `homePageId`, `homePageTitle`
|
|
933
|
-
|
|
934
|
-
**Tip**: Use this to find your personal space key when write-home restriction is enabled.
|
|
935
|
-
|
|
936
|
-
---
|
|
937
|
-
|
|
938
|
-
### 14. confluence_draft_list
|
|
939
|
-
**Description**: List user's draft pages
|
|
973
|
+
### confluence_draft_list
|
|
974
|
+
**Description**: List user's UNPUBLISHED draft pages (work-in-progress content)
|
|
940
975
|
**Use Cases**: View pending drafts, find drafts to continue editing
|
|
976
|
+
**NOTE**: To find published pages you edited, use `confluence_search_content(cql="contributor=currentUser()")`
|
|
941
977
|
|
|
942
978
|
| Parameter | Type | Required | Description |
|
|
943
979
|
|-----------|------|----------|-------------|
|
|
@@ -947,7 +983,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
947
983
|
|
|
948
984
|
---
|
|
949
985
|
|
|
950
|
-
###
|
|
986
|
+
### confluence_draft_open
|
|
951
987
|
**Description**: Load existing draft into buffer for editing
|
|
952
988
|
**Use Cases**: Continue editing a draft, prepare draft for publishing
|
|
953
989
|
|
|
@@ -961,7 +997,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
961
997
|
|
|
962
998
|
---
|
|
963
999
|
|
|
964
|
-
###
|
|
1000
|
+
### confluence_draft_create
|
|
965
1001
|
**Description**: Create a draft for user review - either a new page or as an edit to an existing page
|
|
966
1002
|
**Use Cases**: Start new page as draft, edit existing page through draft workflow
|
|
967
1003
|
|
|
@@ -1023,7 +1059,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
1023
1059
|
|
|
1024
1060
|
---
|
|
1025
1061
|
|
|
1026
|
-
###
|
|
1062
|
+
### confluence_draft_save
|
|
1027
1063
|
**Description**: Save buffer content to draft (delete + recreate pattern)
|
|
1028
1064
|
**Use Cases**: Checkpoint work, persist edits before publishing
|
|
1029
1065
|
|
|
@@ -1041,7 +1077,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
1041
1077
|
|
|
1042
1078
|
---
|
|
1043
1079
|
|
|
1044
|
-
###
|
|
1080
|
+
### confluence_draft_delete
|
|
1045
1081
|
**Description**: Permanently delete a draft
|
|
1046
1082
|
**Use Cases**: Clean up abandoned drafts, remove unwanted content
|
|
1047
1083
|
|
|
@@ -1053,7 +1089,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
1053
1089
|
|
|
1054
1090
|
---
|
|
1055
1091
|
|
|
1056
|
-
###
|
|
1092
|
+
### confluence_review_list
|
|
1057
1093
|
**Description**: List all "[jicon-mcp REVIEW]" drafts for cleanup or management
|
|
1058
1094
|
**Use Cases**: Find abandoned review drafts, manage multiple review workflows, clean up after publishing
|
|
1059
1095
|
|
|
@@ -1067,7 +1103,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
1067
1103
|
|
|
1068
1104
|
---
|
|
1069
1105
|
|
|
1070
|
-
###
|
|
1106
|
+
### confluence_review_publish
|
|
1071
1107
|
**Description**: Publish a review draft to apply changes to the original page
|
|
1072
1108
|
**Use Cases**: Apply reviewed changes to the original page, complete the review workflow
|
|
1073
1109
|
|
|
@@ -1087,7 +1123,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
1087
1123
|
|
|
1088
1124
|
---
|
|
1089
1125
|
|
|
1090
|
-
###
|
|
1126
|
+
### confluence_review_discard
|
|
1091
1127
|
**Description**: Discard a review draft without applying changes to the original page
|
|
1092
1128
|
**Use Cases**: Cancel a review, abandon changes, clean up unwanted review drafts
|
|
1093
1129
|
|
|
@@ -1108,7 +1144,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
|
|
|
1108
1144
|
|
|
1109
1145
|
### JQL (Jira Query Language) Examples
|
|
1110
1146
|
|
|
1111
|
-
> **Note**: Type, status, and priority names below are in English. Use `jira_get_issue_types()` and `jira_get_fields()` to discover actual names for your Jira instance. Functions like `currentUser()`, `openSprints()`, `startOfDay()` work in all languages.
|
|
1147
|
+
> **Note**: Type, status, and priority names below are in English. Use `jira_get_issue_types()` and `jira_get_fields(search="epic")` to discover actual names for your Jira instance. Functions like `currentUser()`, `openSprints()`, `startOfDay()` work in all languages.
|
|
1112
1148
|
|
|
1113
1149
|
```jql
|
|
1114
1150
|
# Find open bugs assigned to you
|
|
@@ -1212,7 +1248,7 @@ AND lastModified >= now("-30d")
|
|
|
1212
1248
|
|
|
1213
1249
|
## Tempo Tools (13)
|
|
1214
1250
|
|
|
1215
|
-
###
|
|
1251
|
+
### tempo_get_worklogs
|
|
1216
1252
|
**Description**: Get Tempo worklogs with filters
|
|
1217
1253
|
**Use Cases**: View time entries, generate reports, review team work
|
|
1218
1254
|
|
|
@@ -1230,7 +1266,7 @@ AND lastModified >= now("-30d")
|
|
|
1230
1266
|
|
|
1231
1267
|
---
|
|
1232
1268
|
|
|
1233
|
-
###
|
|
1269
|
+
### tempo_get_worklog
|
|
1234
1270
|
**Description**: Get detailed information about a specific worklog entry
|
|
1235
1271
|
**Use Cases**: View worklog details, check time logged
|
|
1236
1272
|
|
|
@@ -1242,7 +1278,7 @@ AND lastModified >= now("-30d")
|
|
|
1242
1278
|
|
|
1243
1279
|
---
|
|
1244
1280
|
|
|
1245
|
-
###
|
|
1281
|
+
### tempo_log_work
|
|
1246
1282
|
**Description**: Log time to a Jira issue
|
|
1247
1283
|
**Use Cases**: Record work time, track daily activities
|
|
1248
1284
|
|
|
@@ -1257,7 +1293,7 @@ AND lastModified >= now("-30d")
|
|
|
1257
1293
|
|
|
1258
1294
|
---
|
|
1259
1295
|
|
|
1260
|
-
###
|
|
1296
|
+
### tempo_update_worklog
|
|
1261
1297
|
**Description**: Update an existing worklog entry
|
|
1262
1298
|
**Use Cases**: Correct time logged, update descriptions
|
|
1263
1299
|
|
|
@@ -1273,7 +1309,7 @@ AND lastModified >= now("-30d")
|
|
|
1273
1309
|
|
|
1274
1310
|
---
|
|
1275
1311
|
|
|
1276
|
-
###
|
|
1312
|
+
### tempo_delete_worklog
|
|
1277
1313
|
**Description**: Delete a worklog entry
|
|
1278
1314
|
**Use Cases**: Remove incorrect entries
|
|
1279
1315
|
|
|
@@ -1283,7 +1319,7 @@ AND lastModified >= now("-30d")
|
|
|
1283
1319
|
|
|
1284
1320
|
---
|
|
1285
1321
|
|
|
1286
|
-
###
|
|
1322
|
+
### tempo_get_accounts
|
|
1287
1323
|
**Description**: Get all Tempo accounts
|
|
1288
1324
|
**Use Cases**: List accounts for time tracking, find account keys
|
|
1289
1325
|
|
|
@@ -1295,7 +1331,7 @@ AND lastModified >= now("-30d")
|
|
|
1295
1331
|
|
|
1296
1332
|
---
|
|
1297
1333
|
|
|
1298
|
-
###
|
|
1334
|
+
### tempo_get_account
|
|
1299
1335
|
**Description**: Get detailed information about a Tempo account
|
|
1300
1336
|
**Use Cases**: View account details, check status
|
|
1301
1337
|
|
|
@@ -1307,7 +1343,7 @@ AND lastModified >= now("-30d")
|
|
|
1307
1343
|
|
|
1308
1344
|
---
|
|
1309
1345
|
|
|
1310
|
-
###
|
|
1346
|
+
### tempo_get_teams
|
|
1311
1347
|
**Description**: Get all Tempo teams
|
|
1312
1348
|
**Use Cases**: List teams, find team IDs
|
|
1313
1349
|
|
|
@@ -1319,7 +1355,7 @@ AND lastModified >= now("-30d")
|
|
|
1319
1355
|
|
|
1320
1356
|
---
|
|
1321
1357
|
|
|
1322
|
-
###
|
|
1358
|
+
### tempo_get_team
|
|
1323
1359
|
**Description**: Get detailed information about a Tempo team
|
|
1324
1360
|
**Use Cases**: View team details, check membership
|
|
1325
1361
|
|
|
@@ -1331,7 +1367,7 @@ AND lastModified >= now("-30d")
|
|
|
1331
1367
|
|
|
1332
1368
|
---
|
|
1333
1369
|
|
|
1334
|
-
###
|
|
1370
|
+
### tempo_get_team_worklogs
|
|
1335
1371
|
**Description**: Get all worklogs for a team within a date range
|
|
1336
1372
|
**Use Cases**: Team capacity reports, sprint reviews
|
|
1337
1373
|
|
|
@@ -1345,7 +1381,7 @@ AND lastModified >= now("-30d")
|
|
|
1345
1381
|
|
|
1346
1382
|
---
|
|
1347
1383
|
|
|
1348
|
-
###
|
|
1384
|
+
### tempo_get_user_info
|
|
1349
1385
|
**Description**: Get current user info (workerKey, username, accountId, displayName)
|
|
1350
1386
|
**Use Cases**: Get workerKey for filtering worklogs, verify authentication
|
|
1351
1387
|
|
|
@@ -1357,7 +1393,7 @@ AND lastModified >= now("-30d")
|
|
|
1357
1393
|
|
|
1358
1394
|
---
|
|
1359
1395
|
|
|
1360
|
-
###
|
|
1396
|
+
### tempo_get_epic_worklogs
|
|
1361
1397
|
**Description**: Get all worklogs for an Epic and its child issues in one API call
|
|
1362
1398
|
**Use Cases**: Epic time tracking, aggregate time reports, sprint cost analysis
|
|
1363
1399
|
|
|
@@ -1371,7 +1407,7 @@ AND lastModified >= now("-30d")
|
|
|
1371
1407
|
|
|
1372
1408
|
---
|
|
1373
1409
|
|
|
1374
|
-
###
|
|
1410
|
+
### tempo_get_top_worklogs
|
|
1375
1411
|
**Description**: Get top issues or users by workload for a period. Returns DIRECTLY (not buffered).
|
|
1376
1412
|
**Use Cases**: Top tickets by workload, most active contributors, time distribution analysis
|
|
1377
1413
|
|
|
@@ -1402,22 +1438,22 @@ Aggregates Tempo worklogs and returns ranked results in markdown format.
|
|
|
1402
1438
|
|
|
1403
1439
|
---
|
|
1404
1440
|
|
|
1405
|
-
## Buffer Tools (
|
|
1441
|
+
## Buffer Tools (12)
|
|
1406
1442
|
|
|
1407
1443
|
Buffer tools are used for local content management. All buffer operations are in-memory - write enforcement is on Jira/Confluence/Tempo tools.
|
|
1408
1444
|
|
|
1409
1445
|
**XHTML Editing**: `buffer_edit` uses element IDs for precise positioning in XHTML content. Each element gets a unique ID when loaded - use `buffer_get_structure` to see them. `buffer_validate_xhtml` validates Confluence storage format. XHTML validation is also automatically applied before any Confluence write operation.
|
|
1410
1446
|
|
|
1411
|
-
**Data
|
|
1447
|
+
**Data Transformation**: `buffer_transform` transforms JSON buffers (from Jira/Tempo searches) with JavaScript code for filtering, grouping, sorting, and output generation - minimizing token usage.
|
|
1412
1448
|
|
|
1413
|
-
###
|
|
1449
|
+
### buffer_create
|
|
1414
1450
|
**Description**: Create a new buffer with initial content. Returns bufferId and structure.
|
|
1415
1451
|
|
|
1416
1452
|
**TIP**: Call `help(topic="storage")` for XHTML syntax. Call `help(topic="plantuml")` for diagram syntax.
|
|
1417
1453
|
|
|
1418
1454
|
**Content types**:
|
|
1419
1455
|
- **xhtml**: Confluence storage format. Returns element IDs for `buffer_edit`.
|
|
1420
|
-
- **json**: JSON data (array or object). Use `buffer_get_items` to access, `
|
|
1456
|
+
- **json**: JSON data (array or object). Use `buffer_get_items` to access, `buffer_transform` to transform.
|
|
1421
1457
|
|
|
1422
1458
|
**Use Cases**: Draft new Confluence pages, prepare content before persisting, create JSON arrays for aggregation
|
|
1423
1459
|
|
|
@@ -1464,7 +1500,7 @@ buffer_create({ content: [{"key":"PROJ-1"}], contentType: "json" }) // Native
|
|
|
1464
1500
|
|
|
1465
1501
|
---
|
|
1466
1502
|
|
|
1467
|
-
###
|
|
1503
|
+
### buffer_get_items
|
|
1468
1504
|
**Description**: Retrieve items from a JSON buffer (arrays by index, objects by key).
|
|
1469
1505
|
**Use Cases**: Iterate through search results, access object properties, process items in batches
|
|
1470
1506
|
|
|
@@ -1534,7 +1570,7 @@ buffer_get_items({ bufferId: "buf_xxx" })
|
|
|
1534
1570
|
|
|
1535
1571
|
---
|
|
1536
1572
|
|
|
1537
|
-
###
|
|
1573
|
+
### buffer_get_element
|
|
1538
1574
|
**Description**: Get the raw XHTML content of a specific element by ID. Use to inspect problematic elements when fixing XHTML parsing errors.
|
|
1539
1575
|
**Use Cases**: Debug XHTML validation errors, inspect element content before editing, targeted error recovery
|
|
1540
1576
|
|
|
@@ -1567,7 +1603,7 @@ buffer_get_element({
|
|
|
1567
1603
|
|
|
1568
1604
|
---
|
|
1569
1605
|
|
|
1570
|
-
###
|
|
1606
|
+
### buffer_set_items
|
|
1571
1607
|
**Description**: Update or append items in a JSON buffer (arrays by ID/append, objects by key).
|
|
1572
1608
|
**Use Cases**: Modify JSON data after processing, update specific fields, append new items to arrays, merge new data into objects
|
|
1573
1609
|
|
|
@@ -1631,19 +1667,19 @@ buffer_set_items({
|
|
|
1631
1667
|
|
|
1632
1668
|
---
|
|
1633
1669
|
|
|
1634
|
-
###
|
|
1635
|
-
**Description**: List all active buffers with their metadata
|
|
1636
|
-
**Use Cases**: View active buffers,
|
|
1670
|
+
### buffer_list
|
|
1671
|
+
**Description**: List all active buffers with their metadata. Buffers are cleaned up when session ends. Max buffers per session configurable via JICON_MAX_BUFFERS (default: 10); oldest unmodified evicted first when full.
|
|
1672
|
+
**Use Cases**: View active buffers, recover lost buffer IDs
|
|
1637
1673
|
|
|
1638
1674
|
| Parameter | Type | Required | Description |
|
|
1639
1675
|
|-----------|------|----------|-------------|
|
|
1640
1676
|
| (none) | | | |
|
|
1641
1677
|
|
|
1642
|
-
**Response includes**: `count`, list of buffers with `bufferId`, `totalSize`, `createdAt`, `
|
|
1678
|
+
**Response includes**: `count`, list of buffers with `bufferId`, `totalSize`, `createdAt`, `metadata`
|
|
1643
1679
|
|
|
1644
1680
|
---
|
|
1645
1681
|
|
|
1646
|
-
###
|
|
1682
|
+
### buffer_clear
|
|
1647
1683
|
**Description**: Clear a specific buffer or all buffers
|
|
1648
1684
|
**Use Cases**: Free up memory, clean up after processing
|
|
1649
1685
|
|
|
@@ -1655,7 +1691,7 @@ buffer_set_items({
|
|
|
1655
1691
|
|
|
1656
1692
|
---
|
|
1657
1693
|
|
|
1658
|
-
###
|
|
1694
|
+
### buffer_grep
|
|
1659
1695
|
**Description**: Search buffered content for patterns. Supports regex, context lines (-A/-B/-C), and case-insensitive (-i). Large results are buffered.
|
|
1660
1696
|
**Use Cases**: Find specific content in large responses, locate text for editing
|
|
1661
1697
|
|
|
@@ -1677,253 +1713,228 @@ buffer_set_items({
|
|
|
1677
1713
|
|
|
1678
1714
|
---
|
|
1679
1715
|
|
|
1680
|
-
###
|
|
1681
|
-
**Description**:
|
|
1682
|
-
**Use Cases**: Server-side data transformation
|
|
1716
|
+
### buffer_transform
|
|
1717
|
+
**Description**: Execute JavaScript code in a secure QuickJS sandbox to transform buffer data.
|
|
1718
|
+
**Use Cases**: Server-side data transformation with full JavaScript expressiveness, generate XHTML tables for Confluence, custom filtering/grouping/aggregation
|
|
1683
1719
|
|
|
1684
|
-
**Token Efficiency**: A
|
|
1685
|
-
|
|
1686
|
-
**Schema Quick Reference:**
|
|
1687
|
-
```json
|
|
1688
|
-
{
|
|
1689
|
-
"sourceBufferId": "buf_xxx",
|
|
1690
|
-
"pipeline": {
|
|
1691
|
-
"select": { "fields": [...] },
|
|
1692
|
-
"filter": [...],
|
|
1693
|
-
"groupBy": { "field": "...", "aggregations": [...] },
|
|
1694
|
-
"sort": [...],
|
|
1695
|
-
"limit": 10,
|
|
1696
|
-
"format": [...],
|
|
1697
|
-
"output": { "type": "xhtml_table", "table": {...} }
|
|
1698
|
-
}
|
|
1699
|
-
}
|
|
1700
|
-
```
|
|
1701
|
-
|
|
1702
|
-
**Common Mistakes:**
|
|
1703
|
-
|
|
1704
|
-
| Wrong | Correct | Why |
|
|
1705
|
-
|-------|---------|-----|
|
|
1706
|
-
| `sortBy: [...]` | `sort: [...]` | Key name is "sort" not "sortBy" |
|
|
1707
|
-
| `transform: "map"` | `transform: "date"` | Valid: uppercase, lowercase, date, number, boolean, string |
|
|
1708
|
-
| No `output` | `output: {...}` | Required field - pipeline must have output |
|
|
1709
|
-
| `pipeline: "{...}"` | `pipeline: {...}` | Must be object, not JSON string |
|
|
1710
|
-
| After select: `sort: [{field: "issueType"}]` | `sort: [{field: "Type"}]` | After `select` renames "issueType" to "Type", use NEW name |
|
|
1720
|
+
**Token Efficiency**: A transformation generates complete output in **1 tool call** instead of iterating through items. For pure data transforms, this achieves **98% token reduction**.
|
|
1711
1721
|
|
|
1712
1722
|
| Parameter | Type | Required | Description |
|
|
1713
1723
|
|-----------|------|----------|-------------|
|
|
1714
|
-
|
|
|
1715
|
-
|
|
|
1724
|
+
| inputs | object | ✓ | Map of variable name to buffer ID. Example: `{ issues: "buf_abc123" }` |
|
|
1725
|
+
| code | string | ✓ | JavaScript code to execute (ES2020, synchronous). Access inputs as globals, return value becomes output buffer. |
|
|
1726
|
+
| limits | object | ✗ | Optional `{ timeout: 5000, memory: 50000000 }` (default: 5s, 50MB) |
|
|
1716
1727
|
|
|
1717
|
-
**Type Requirement**:
|
|
1728
|
+
**Type Requirement**: All input buffers must have `contentType: "json"`. Returns error if buffer is XHTML or plain text.
|
|
1718
1729
|
|
|
1719
|
-
**
|
|
1730
|
+
**Built-in Helper Functions (available as globals):**
|
|
1720
1731
|
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1732
|
+
| Category | Function | Description |
|
|
1733
|
+
|----------|----------|-------------|
|
|
1734
|
+
| **Aggregation** | `groupBy(array, keyOrFn)` | Group array by field or function → `{ key: items[] }` |
|
|
1735
|
+
| | `sum(array, field?)` | Sum numeric values |
|
|
1736
|
+
| | `avg(array, field?)` | Average numeric values |
|
|
1737
|
+
| | `min(array, field?)` | Minimum value |
|
|
1738
|
+
| | `max(array, field?)` | Maximum value |
|
|
1739
|
+
| | `count(array)` | Count items |
|
|
1740
|
+
| | `unique(array, field?)` | Unique values |
|
|
1741
|
+
| **Object** | `get(obj, 'path.to.field')` | Deep get with dot notation |
|
|
1742
|
+
| | `pick(obj, ['a', 'b'])` | Pick specific keys |
|
|
1743
|
+
| | `omit(obj, ['a'])` | Omit specific keys |
|
|
1744
|
+
| **Date** | `parseDate(string)` | Parse date → timestamp (ms) |
|
|
1745
|
+
| | `formatDate(ts, fmt?)` | Format timestamp (fmt: 'date', 'time', 'datetime', 'iso') |
|
|
1746
|
+
| | `daysBetween(d1, d2)` | Days between two dates |
|
|
1747
|
+
| **Output** | `toTable(array, config)` | Generate Confluence XHTML table |
|
|
1748
|
+
| | `toList(array, config)` | Generate Confluence XHTML list |
|
|
1749
|
+
| | `toMarkdownTable(array, config)` | Generate Markdown table |
|
|
1750
|
+
| | `toMarkdownList(array, config)` | Generate Markdown list |
|
|
1731
1751
|
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
{ field: "priority.name", operator: "in", value: ["High", "Critical"] }
|
|
1736
|
-
],
|
|
1752
|
+
**Context Variables (for link generation):**
|
|
1753
|
+
- `JIRA_URL` - Jira base URL (from server config)
|
|
1754
|
+
- `CONFLUENCE_URL` - Confluence base URL (from server config)
|
|
1737
1755
|
|
|
1738
|
-
|
|
1739
|
-
groupBy?: {
|
|
1740
|
-
field: "assignee.displayName",
|
|
1741
|
-
aggregations: [
|
|
1742
|
-
{ function: "count", as: "totalIssues" },
|
|
1743
|
-
{ function: "sum", field: "timeSpent", as: "totalTime" },
|
|
1744
|
-
{ function: "list", field: "key", as: "issueKeys" }
|
|
1745
|
-
]
|
|
1746
|
-
},
|
|
1756
|
+
**toTable() Configuration:**
|
|
1747
1757
|
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1758
|
+
```javascript
|
|
1759
|
+
toTable(array, {
|
|
1760
|
+
title: 'Table Title', // Optional h2 above table
|
|
1761
|
+
showRowNumbers: true, // Add # column
|
|
1762
|
+
tableClass: 'confluenceTable', // CSS class
|
|
1763
|
+
columns: [
|
|
1764
|
+
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
1765
|
+
{ field: 'summary', header: 'Summary', width: '40%' },
|
|
1766
|
+
{ field: 'priority.name', header: 'Priority', align: 'center' }
|
|
1752
1767
|
],
|
|
1753
|
-
|
|
1754
|
-
// Stage 5: Limit results (optional)
|
|
1755
|
-
limit?: 50,
|
|
1756
|
-
|
|
1757
|
-
// Stage 6: Conditional formatting (optional)
|
|
1758
|
-
format?: [
|
|
1768
|
+
format: [ // Conditional styling
|
|
1759
1769
|
{
|
|
1760
|
-
condition: { field:
|
|
1761
|
-
style: { color:
|
|
1762
|
-
|
|
1763
|
-
{
|
|
1764
|
-
condition: { field: "status.name", operator: "eq", value: "Done" },
|
|
1765
|
-
style: { color: "#28a745", icon: "✓" }
|
|
1770
|
+
condition: { field: 'priority.name', operator: 'eq', value: 'Blocker' },
|
|
1771
|
+
style: { color: '#d04437', bold: true, icon: '🔴' },
|
|
1772
|
+
fields: ['priority.name'] // Apply to specific fields (or omit for row)
|
|
1766
1773
|
}
|
|
1767
|
-
]
|
|
1774
|
+
]
|
|
1775
|
+
})
|
|
1776
|
+
```
|
|
1768
1777
|
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1778
|
+
**toList() Configuration:**
|
|
1779
|
+
|
|
1780
|
+
```javascript
|
|
1781
|
+
toList(array, {
|
|
1782
|
+
title: 'List Title',
|
|
1783
|
+
style: 'bullet', // 'bullet', 'numbered', 'none'
|
|
1784
|
+
template: '{{key}}: {{summary}} ({{assignee.displayName}})'
|
|
1785
|
+
})
|
|
1786
|
+
```
|
|
1787
|
+
|
|
1788
|
+
**toMarkdownTable() Configuration:**
|
|
1789
|
+
|
|
1790
|
+
```javascript
|
|
1791
|
+
toMarkdownTable(array, {
|
|
1792
|
+
title: 'Table Title', // Optional ## heading
|
|
1793
|
+
showRowNumbers: true, // Add # column
|
|
1794
|
+
columns: [
|
|
1795
|
+
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
1796
|
+
{ field: 'summary', header: 'Summary' },
|
|
1797
|
+
{ field: 'priority.name', header: 'Priority', align: 'center' }
|
|
1798
|
+
],
|
|
1799
|
+
format: [ // Conditional styling (bold/italic in Markdown)
|
|
1800
|
+
{
|
|
1801
|
+
condition: { field: 'priority.name', operator: 'eq', value: 'Blocker' },
|
|
1802
|
+
style: { bold: true, icon: '🔴' },
|
|
1803
|
+
fields: ['priority.name']
|
|
1779
1804
|
}
|
|
1780
|
-
|
|
1781
|
-
}
|
|
1805
|
+
]
|
|
1806
|
+
})
|
|
1807
|
+
// Returns: { __markdown: true, content: "| # | Issue | Summary |..." }
|
|
1782
1808
|
```
|
|
1783
1809
|
|
|
1784
|
-
**
|
|
1785
|
-
|
|
1786
|
-
| Operator | Description | Example |
|
|
1787
|
-
|----------|-------------|---------|
|
|
1788
|
-
| `eq` | Equals | `{ field: "status.name", operator: "eq", value: "Open" }` |
|
|
1789
|
-
| `ne` | Not equals | `{ field: "status.name", operator: "ne", value: "Done" }` |
|
|
1790
|
-
| `gt`, `lt`, `gte`, `lte` | Numeric comparison | `{ field: "priority.id", operator: "gt", value: 2 }` |
|
|
1791
|
-
| `contains` | Substring match (case-insensitive) | `{ field: "summary", operator: "contains", value: "bug" }` |
|
|
1792
|
-
| `startsWith`, `endsWith` | String prefix/suffix | `{ field: "key", operator: "startsWith", value: "PROJ-" }` |
|
|
1793
|
-
| `in`, `notIn` | Value in array | `{ field: "priority.name", operator: "in", value: ["High", "Critical"] }` |
|
|
1794
|
-
| `exists`, `notExists` | Field presence | `{ field: "assignee", operator: "exists" }` |
|
|
1795
|
-
| `empty`, `notEmpty` | Empty string/array/null | `{ field: "labels", operator: "notEmpty" }` |
|
|
1796
|
-
| `regex` | Regular expression | `{ field: "summary", operator: "regex", value: "^\\[BUG\\]" }` |
|
|
1797
|
-
|
|
1798
|
-
**Aggregation Functions:**
|
|
1799
|
-
|
|
1800
|
-
| Function | Description | Requires `field` |
|
|
1801
|
-
|----------|-------------|------------------|
|
|
1802
|
-
| `count` | Count items in group | No |
|
|
1803
|
-
| `sum` | Sum numeric values | Yes |
|
|
1804
|
-
| `avg` | Average numeric values | Yes |
|
|
1805
|
-
| `min`, `max` | Min/max numeric values | Yes |
|
|
1806
|
-
| `first`, `last` | First/last value | Yes |
|
|
1807
|
-
| `list` | Collect all values | Yes |
|
|
1808
|
-
| `unique` | Unique values | Yes |
|
|
1809
|
-
|
|
1810
|
-
**Output Types:**
|
|
1811
|
-
|
|
1812
|
-
| Type | Description | Config |
|
|
1813
|
-
|------|-------------|--------|
|
|
1814
|
-
| `xhtml_table` | Confluence-compatible table | `table: { title?, columns: [...], showRowNumbers? }` |
|
|
1815
|
-
| `xhtml_list` | Confluence-compatible list | `list: { title?, template: "{{key}}: {{summary}}", style?: "bullet"|"numbered"|"none" }` |
|
|
1816
|
-
| `json` | Clean JSON array | `includeMetadata?: boolean` |
|
|
1817
|
-
| `csv` | CSV with headers | `table: { columns: [...] }` |
|
|
1818
|
-
| `markdown` | Markdown table | `table: { columns: [...] }` |
|
|
1819
|
-
|
|
1820
|
-
**Column Configuration:**
|
|
1810
|
+
**toMarkdownList() Configuration:**
|
|
1821
1811
|
|
|
1822
|
-
```
|
|
1823
|
-
{
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
}
|
|
1812
|
+
```javascript
|
|
1813
|
+
toMarkdownList(array, {
|
|
1814
|
+
title: 'List Title',
|
|
1815
|
+
style: 'bullet', // 'bullet', 'numbered', 'task'
|
|
1816
|
+
template: '{{key}}: {{summary}} ({{assignee.displayName}})'
|
|
1817
|
+
})
|
|
1818
|
+
// Returns: { __markdown: true, content: "- PROJ-1: Fix bug..." }
|
|
1830
1819
|
```
|
|
1831
1820
|
|
|
1832
|
-
**
|
|
1821
|
+
**Link Types:**
|
|
1822
|
+
- `jira` - Auto-links to Jira issue using `key` field
|
|
1823
|
+
- `confluence` - Links to Confluence page by ID
|
|
1824
|
+
- `custom` - Custom URL template with `{{field}}` placeholders
|
|
1825
|
+
|
|
1826
|
+
**Format Condition Operators:** `eq`, `ne`, `gt`, `lt`, `gte`, `lte`, `contains`, `startsWith`, `endsWith`, `in`, `notIn`, `exists`, `notExists`, `regex`, `empty`, `notEmpty`
|
|
1827
|
+
|
|
1828
|
+
**Response includes**: `bufferId` (new output buffer), `contentType` (json, xhtml, or markdown), `itemCount` (for arrays), `hint`
|
|
1833
1829
|
|
|
1834
1830
|
**Example - Filter and output table:**
|
|
1835
|
-
```
|
|
1831
|
+
```javascript
|
|
1836
1832
|
// Search returns bufferId with 500 issues
|
|
1837
1833
|
jira_search_issues({ jql: "project = PROJ" })
|
|
1838
1834
|
// -> { bufferId: "buf_issues", structure: { itemCount: 500 } }
|
|
1839
1835
|
|
|
1840
1836
|
// Transform in ONE call (instead of iterating 500 items)
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
filter
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
sort
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
{
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
}
|
|
1866
|
-
}
|
|
1837
|
+
buffer_transform({
|
|
1838
|
+
inputs: { issues: "buf_issues" },
|
|
1839
|
+
code: `
|
|
1840
|
+
const bugs = issues.filter(i =>
|
|
1841
|
+
i.issuetype?.name === 'Bug' &&
|
|
1842
|
+
i.status?.name !== 'Done'
|
|
1843
|
+
);
|
|
1844
|
+
bugs.sort((a, b) => (a.priority?.id || 0) - (b.priority?.id || 0));
|
|
1845
|
+
const top20 = bugs.slice(0, 20);
|
|
1846
|
+
|
|
1847
|
+
return toTable(top20, {
|
|
1848
|
+
title: 'Top 20 Open Bugs',
|
|
1849
|
+
columns: [
|
|
1850
|
+
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
1851
|
+
{ field: 'summary', header: 'Summary' },
|
|
1852
|
+
{ field: 'priority.name', header: 'Priority' },
|
|
1853
|
+
{ field: 'assignee.displayName', header: 'Assignee' }
|
|
1854
|
+
],
|
|
1855
|
+
format: [
|
|
1856
|
+
{ condition: { field: 'priority.name', operator: 'eq', value: 'High' },
|
|
1857
|
+
style: { color: '#dc3545', bold: true } }
|
|
1858
|
+
]
|
|
1859
|
+
});
|
|
1860
|
+
`
|
|
1867
1861
|
})
|
|
1868
|
-
// -> { bufferId: "buf_result",
|
|
1862
|
+
// -> { bufferId: "buf_result", contentType: "xhtml" }
|
|
1869
1863
|
```
|
|
1870
1864
|
|
|
1871
|
-
**Example - Group by assignee with
|
|
1872
|
-
```
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
groupBy
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1865
|
+
**Example - Group by assignee with statistics:**
|
|
1866
|
+
```javascript
|
|
1867
|
+
buffer_transform({
|
|
1868
|
+
inputs: { issues: "buf_issues" },
|
|
1869
|
+
code: `
|
|
1870
|
+
const open = issues.filter(i => i.status?.name !== 'Done');
|
|
1871
|
+
const byAssignee = groupBy(open, 'assignee.displayName');
|
|
1872
|
+
|
|
1873
|
+
const stats = Object.entries(byAssignee).map(([name, items]) => ({
|
|
1874
|
+
assignee: name || 'Unassigned',
|
|
1875
|
+
count: items.length,
|
|
1876
|
+
issues: items.map(i => i.key).join(', ')
|
|
1877
|
+
}));
|
|
1878
|
+
|
|
1879
|
+
stats.sort((a, b) => b.count - a.count);
|
|
1880
|
+
|
|
1881
|
+
return toTable(stats, {
|
|
1882
|
+
title: 'Issues by Assignee',
|
|
1883
|
+
columns: [
|
|
1884
|
+
{ field: 'assignee', header: 'Assignee' },
|
|
1885
|
+
{ field: 'count', header: 'Count', align: 'right' },
|
|
1886
|
+
{ field: 'issues', header: 'Issue Keys' }
|
|
1882
1887
|
]
|
|
1883
|
-
}
|
|
1884
|
-
|
|
1885
|
-
output: {
|
|
1886
|
-
type: "xhtml_table",
|
|
1887
|
-
table: {
|
|
1888
|
-
title: "Issues by Assignee",
|
|
1889
|
-
columns: [
|
|
1890
|
-
{ field: "displayName", header: "Assignee" },
|
|
1891
|
-
{ field: "issueCount", header: "Count" },
|
|
1892
|
-
{ field: "issues", header: "Issues" }
|
|
1893
|
-
]
|
|
1894
|
-
}
|
|
1895
|
-
}
|
|
1896
|
-
}
|
|
1888
|
+
});
|
|
1889
|
+
`
|
|
1897
1890
|
})
|
|
1898
1891
|
```
|
|
1899
1892
|
|
|
1900
|
-
**Example -
|
|
1901
|
-
```
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1893
|
+
**Example - Return JSON for further processing:**
|
|
1894
|
+
```javascript
|
|
1895
|
+
buffer_transform({
|
|
1896
|
+
inputs: { issues: "buf_issues" },
|
|
1897
|
+
code: `
|
|
1898
|
+
const summary = issues.map(i => ({
|
|
1899
|
+
key: i.key,
|
|
1900
|
+
summary: i.summary,
|
|
1901
|
+
status: i.status?.name,
|
|
1902
|
+
priority: i.priority?.name
|
|
1903
|
+
}));
|
|
1904
|
+
return summary; // Returns JSON buffer, not XHTML
|
|
1905
|
+
`
|
|
1906
|
+
})
|
|
1907
|
+
// -> { bufferId: "buf_result", contentType: "json", itemCount: 500 }
|
|
1908
|
+
```
|
|
1909
|
+
|
|
1910
|
+
**Example - Markdown table output:**
|
|
1911
|
+
```javascript
|
|
1912
|
+
buffer_transform({
|
|
1913
|
+
inputs: { issues: "buf_issues" },
|
|
1914
|
+
code: `
|
|
1915
|
+
const open = issues.filter(i => i.status?.name !== 'Done');
|
|
1916
|
+
return toMarkdownTable(open.slice(0, 20), {
|
|
1917
|
+
title: 'Open Issues',
|
|
1918
|
+
columns: [
|
|
1919
|
+
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
1920
|
+
{ field: 'summary', header: 'Summary' },
|
|
1921
|
+
{ field: 'status.name', header: 'Status' },
|
|
1922
|
+
{ field: 'priority.name', header: 'Priority', align: 'center' }
|
|
1923
|
+
],
|
|
1924
|
+
format: [
|
|
1925
|
+
{ condition: { field: 'priority.name', operator: 'eq', value: 'High' },
|
|
1926
|
+
style: { bold: true, icon: '🔴' } }
|
|
1911
1927
|
]
|
|
1912
|
-
}
|
|
1913
|
-
|
|
1914
|
-
type: "csv",
|
|
1915
|
-
table: {
|
|
1916
|
-
columns: [
|
|
1917
|
-
{ field: "key", header: "Issue" },
|
|
1918
|
-
{ field: "summary", header: "Summary" },
|
|
1919
|
-
{ field: "Status", header: "Status" },
|
|
1920
|
-
{ field: "created", header: "Created" }
|
|
1921
|
-
]
|
|
1922
|
-
}
|
|
1923
|
-
}
|
|
1924
|
-
}
|
|
1928
|
+
});
|
|
1929
|
+
`
|
|
1925
1930
|
})
|
|
1926
|
-
// -> { bufferId: "
|
|
1931
|
+
// -> { bufferId: "buf_result", contentType: "markdown" }
|
|
1932
|
+
// Output:
|
|
1933
|
+
// ## Open Issues
|
|
1934
|
+
//
|
|
1935
|
+
// | Issue | Summary | Status | Priority |
|
|
1936
|
+
// | --- | --- | --- | :--: |
|
|
1937
|
+
// | [PROJ-1](https://jira.example.com/browse/PROJ-1) | Fix login bug | Open | 🔴 **High** |
|
|
1927
1938
|
```
|
|
1928
1939
|
|
|
1929
1940
|
**Common Jira Fields:**
|
|
@@ -1932,12 +1943,12 @@ buffer_pipeline({
|
|
|
1932
1943
|
- `assignee.displayName`, `reporter.displayName`
|
|
1933
1944
|
- `created`, `updated`, `resolutiondate`
|
|
1934
1945
|
- `labels` (array), `components[].name`
|
|
1935
|
-
- `timeoriginalestimate`, `timeestimate`, `timespent`
|
|
1946
|
+
- `timeoriginalestimate`, `timeestimate`, `timespent` (often null — use `buffer_get_schema` to check `optional` flag)
|
|
1936
1947
|
|
|
1937
1948
|
**Workflow - Jira to Confluence table:**
|
|
1938
1949
|
```
|
|
1939
1950
|
1. jira_search_issues(jql) → bufferId with JSON
|
|
1940
|
-
2.
|
|
1951
|
+
2. buffer_transform(inputs, code) → bufferId with XHTML table
|
|
1941
1952
|
3. confluence_edit(pageId) → page bufferId
|
|
1942
1953
|
4. buffer_edit(pageBufferId, after=ID, fromBufferId=tableBufferId)
|
|
1943
1954
|
5. confluence_draft_create(pageId, pageBufferId) → draft for review
|
|
@@ -1945,7 +1956,7 @@ buffer_pipeline({
|
|
|
1945
1956
|
|
|
1946
1957
|
---
|
|
1947
1958
|
|
|
1948
|
-
###
|
|
1959
|
+
### buffer_edit
|
|
1949
1960
|
**Description**: Edit buffer content. For XHTML: use element IDs (single or batch). For plain/json: use string replacement or append.
|
|
1950
1961
|
**Use Cases**: Insert/replace/remove elements in Confluence pages, modify Jira/Tempo content, compose content from multiple buffers
|
|
1951
1962
|
|
|
@@ -2077,7 +2088,7 @@ confluence_draft_create({ pageId: "123", bufferId: "buf_A" })
|
|
|
2077
2088
|
|
|
2078
2089
|
---
|
|
2079
2090
|
|
|
2080
|
-
###
|
|
2091
|
+
### buffer_get_structure
|
|
2081
2092
|
**Description**: Get current element structure for an XHTML buffer
|
|
2082
2093
|
**Use Cases**: View element IDs for editing, understand document structure
|
|
2083
2094
|
|
|
@@ -2111,7 +2122,7 @@ buffer_get_structure({ bufferId: "buf_xxx" })
|
|
|
2111
2122
|
|
|
2112
2123
|
---
|
|
2113
2124
|
|
|
2114
|
-
###
|
|
2125
|
+
### buffer_validate_xhtml
|
|
2115
2126
|
**Description**: Validate buffered content as Confluence storage format (XHTML)
|
|
2116
2127
|
**Use Cases**: Check content validity before writing, debug validation errors
|
|
2117
2128
|
|
|
@@ -2139,11 +2150,95 @@ buffer_get_structure({ bufferId: "buf_xxx" })
|
|
|
2139
2150
|
|
|
2140
2151
|
---
|
|
2141
2152
|
|
|
2153
|
+
### buffer_get_schema
|
|
2154
|
+
**Description**: Get the schema for a JSON buffer. Returns field names, types, and sample values from the actual data.
|
|
2155
|
+
**Use Cases**: Understand buffer structure before writing `buffer_transform` code, discover available fields for data processing
|
|
2156
|
+
|
|
2157
|
+
| Parameter | Type | Required | Description |
|
|
2158
|
+
|-----------|------|----------|-------------|
|
|
2159
|
+
| bufferId | string | ✓ | Buffer ID to get schema for |
|
|
2160
|
+
|
|
2161
|
+
**Type Requirement**: Buffer must have `contentType: "json"`. Returns error if buffer is XHTML.
|
|
2162
|
+
|
|
2163
|
+
**Schema Types**: Buffers from API tools have a named schema type (e.g., `jira_issue`, `tempo_worklog`, `confluence_page`). The schema defines all available fields with consistent structure.
|
|
2164
|
+
|
|
2165
|
+
**Available Schema Types**:
|
|
2166
|
+
| Schema Type | Tools That Return It |
|
|
2167
|
+
|-------------|---------------------|
|
|
2168
|
+
| `jira_issue` | `jira_search_issues`, `jira_get_issue`, `jira_get_issues`, `jira_list_epic_children`, `jira_get_sprint_issues` |
|
|
2169
|
+
| `jira_comment` | `jira_get_issue_comments` |
|
|
2170
|
+
| `jira_project` | `jira_list_projects`, `jira_get_project` |
|
|
2171
|
+
| `jira_board` | `jira_get_board` |
|
|
2172
|
+
| `jira_sprint` | `jira_get_sprints` |
|
|
2173
|
+
| `jira_worklog` | `jira_get_issue_worklogs` |
|
|
2174
|
+
| `jira_worklog_total` | `jira_get_total_worklogs` |
|
|
2175
|
+
| `tempo_worklog` | `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_get_team_worklogs`, `tempo_get_epic_worklogs` |
|
|
2176
|
+
| `tempo_account` | `tempo_get_accounts`, `tempo_get_account` |
|
|
2177
|
+
| `tempo_team` | `tempo_get_teams`, `tempo_get_team` |
|
|
2178
|
+
| `confluence_page` | `confluence_search_content`, `confluence_get_page_children` |
|
|
2179
|
+
| `confluence_space` | `confluence_list_spaces`, `confluence_get_space` |
|
|
2180
|
+
| `confluence_comment` | `confluence_get_comments` |
|
|
2181
|
+
| `confluence_attachment` | `confluence_list_attachments` |
|
|
2182
|
+
| `confluence_draft` | `confluence_draft_list` |
|
|
2183
|
+
|
|
2184
|
+
**Response includes**: `bufferId`, `schemaType`, `description`, `itemCount` (for arrays), `legend` (property definitions), `fields` (with type, required, optional, searchable, writable, jqlName, description, sample)
|
|
2185
|
+
|
|
2186
|
+
**Field Properties**:
|
|
2187
|
+
| Property | Meaning |
|
|
2188
|
+
|----------|---------|
|
|
2189
|
+
| `required` | Always present with a non-null value |
|
|
2190
|
+
| `optional` | May be null when not set — use `== null` to check |
|
|
2191
|
+
| `searchable` | Can be used in JQL/CQL queries |
|
|
2192
|
+
| `writable` | Can be set via update API |
|
|
2193
|
+
| `jqlName` | JQL clause name when different from field name (e.g., `type` → `issuetype`) |
|
|
2194
|
+
|
|
2195
|
+
**Example - Get schema before writing transform code:**
|
|
2196
|
+
```typescript
|
|
2197
|
+
// 1. Search returns bufferId with schemaType in response
|
|
2198
|
+
jira_search_issues({ jql: "project=PROJ" })
|
|
2199
|
+
// Returns: { bufferId: "buf_xxx", schemaType: "jira_issue", fields: ["key", "summary", "status", ...] }
|
|
2200
|
+
|
|
2201
|
+
// 2. Get detailed schema with samples
|
|
2202
|
+
buffer_get_schema({ bufferId: "buf_xxx" })
|
|
2203
|
+
// Returns: {
|
|
2204
|
+
// bufferId: "buf_xxx",
|
|
2205
|
+
// schemaType: "jira_issue",
|
|
2206
|
+
// description: "Jira issue with core fields flattened for easy access",
|
|
2207
|
+
// itemCount: 45,
|
|
2208
|
+
// legend: { required: "Always present...", optional: "May be null...", ... },
|
|
2209
|
+
// fields: {
|
|
2210
|
+
// key: { type: "string", required: true, searchable: true, description: "Issue key (e.g., PROJ-123)", sample: "PROJ-123" },
|
|
2211
|
+
// summary: { type: "string", required: true, searchable: true, writable: true, description: "Issue title/summary", sample: "Fix login bug" },
|
|
2212
|
+
// status: { type: "string", required: true, searchable: true, description: "Current status name", sample: "In Progress" },
|
|
2213
|
+
// type: { type: "string", required: true, searchable: true, writable: true, jqlName: "issuetype", description: "Issue type name", sample: "Bug" },
|
|
2214
|
+
// assignee: { type: "string", required: false, optional: true, searchable: true, writable: true, description: "Assignee display name", sample: "John Doe" },
|
|
2215
|
+
// ...
|
|
2216
|
+
// }
|
|
2217
|
+
// }
|
|
2218
|
+
|
|
2219
|
+
// 3. Now write accurate transform code using flat field names
|
|
2220
|
+
buffer_transform({
|
|
2221
|
+
inputs: [{ bufferId: "buf_xxx" }],
|
|
2222
|
+
code: `return toMarkdownTable(issues, {
|
|
2223
|
+
columns: [
|
|
2224
|
+
{ field: 'key', header: 'Key' },
|
|
2225
|
+
{ field: 'summary', header: 'Summary' },
|
|
2226
|
+
{ field: 'status', header: 'Status' },
|
|
2227
|
+
{ field: 'assignee', header: 'Assignee' }
|
|
2228
|
+
]
|
|
2229
|
+
});`
|
|
2230
|
+
})
|
|
2231
|
+
```
|
|
2232
|
+
|
|
2233
|
+
**Key Benefit**: All tools returning the same schemaType produce identical field structure. Once you learn `jira_issue` fields, the same structure works for `jira_search_issues`, `jira_get_issue`, `jira_list_epic_children`, and `jira_get_sprint_issues`.
|
|
2234
|
+
|
|
2235
|
+
---
|
|
2236
|
+
|
|
2142
2237
|
## Workload Tools (2)
|
|
2143
2238
|
|
|
2144
2239
|
Utility tools for time calculations. Always available with any Jira, Confluence, or Tempo action.
|
|
2145
2240
|
|
|
2146
|
-
###
|
|
2241
|
+
### workload_convert
|
|
2147
2242
|
**Description**: Convert workload time between units (seconds, hours, days)
|
|
2148
2243
|
**Use Cases**: Convert time values for display, calculate work estimates
|
|
2149
2244
|
|
|
@@ -2157,7 +2252,7 @@ Utility tools for time calculations. Always available with any Jira, Confluence,
|
|
|
2157
2252
|
|
|
2158
2253
|
---
|
|
2159
2254
|
|
|
2160
|
-
###
|
|
2255
|
+
### workload_sum
|
|
2161
2256
|
**Description**: Sum multiple workload values and return total in all units
|
|
2162
2257
|
**Use Cases**: Calculate total time from multiple entries, aggregate worklogs
|
|
2163
2258
|
|
|
@@ -2174,7 +2269,7 @@ Utility tools for time calculations. Always available with any Jira, Confluence,
|
|
|
2174
2269
|
|
|
2175
2270
|
Utility tools for URL construction and parsing. Always available with any Jira, Confluence, or Tempo action.
|
|
2176
2271
|
|
|
2177
|
-
###
|
|
2272
|
+
### fullurl
|
|
2178
2273
|
**Description**: Convert Jira issue keys, Confluence page IDs, or relative paths into full URLs
|
|
2179
2274
|
**Use Cases**: Generate clickable links for display, resolve relative Confluence paths
|
|
2180
2275
|
|
|
@@ -2203,7 +2298,7 @@ fullurl("/display/DOCS/Home") // → https://confluence.example.com/display/DOCS
|
|
|
2203
2298
|
|
|
2204
2299
|
---
|
|
2205
2300
|
|
|
2206
|
-
###
|
|
2301
|
+
### parseurl
|
|
2207
2302
|
**Description**: Parse a Jira or Confluence URL to extract identifiers (pageId, issueKey, draftId, etc.)
|
|
2208
2303
|
**Use Cases**: Extract IDs from URLs users share, prepare input for other tools
|
|
2209
2304
|
|
|
@@ -2238,7 +2333,7 @@ fullurl("/display/DOCS/Home") // → https://confluence.example.com/display/DOCS
|
|
|
2238
2333
|
|
|
2239
2334
|
Unified help system for all Jicon workflows and syntax guides. Always available with any Jira, Confluence, or Tempo action.
|
|
2240
2335
|
|
|
2241
|
-
###
|
|
2336
|
+
### help
|
|
2242
2337
|
**Description**: Get Jicon MCP Server help - workflows and syntax guides
|
|
2243
2338
|
**Use Cases**: Learn workflows, understand tool sequences, get syntax references
|
|
2244
2339
|
|
|
@@ -2284,7 +2379,7 @@ help(topic="analysis") // LLM analysis tools guide
|
|
|
2284
2379
|
|
|
2285
2380
|
Date resolution utility for pre-computing date ranges. Always available with any Jira, Confluence, or Tempo action.
|
|
2286
2381
|
|
|
2287
|
-
###
|
|
2382
|
+
### date_resolve
|
|
2288
2383
|
**Description**: Resolve date expressions to concrete dates with business day counts
|
|
2289
2384
|
**Use Cases**: Pre-compute date ranges for reports, time tracking, activity analysis
|
|
2290
2385
|
|
|
@@ -2332,6 +2427,50 @@ date_resolve(expression="this_month") // Current month to date
|
|
|
2332
2427
|
|
|
2333
2428
|
---
|
|
2334
2429
|
|
|
2430
|
+
## Whoami Tools (1)
|
|
2431
|
+
|
|
2432
|
+
Unified user identity across all configured services.
|
|
2433
|
+
|
|
2434
|
+
### whoami
|
|
2435
|
+
**Description**: Get the currently authenticated user from all configured services
|
|
2436
|
+
**Use Cases**: Verify credentials, get user keys for queries, check access across services
|
|
2437
|
+
|
|
2438
|
+
| Parameter | Type | Required | Description |
|
|
2439
|
+
|-----------|------|----------|-------------|
|
|
2440
|
+
| (none) | | | |
|
|
2441
|
+
|
|
2442
|
+
**Returns**: User info from each configured service:
|
|
2443
|
+
```json
|
|
2444
|
+
{
|
|
2445
|
+
"jira": {
|
|
2446
|
+
"key": "JIRAUSER12345",
|
|
2447
|
+
"name": "john.doe",
|
|
2448
|
+
"displayName": "John Doe",
|
|
2449
|
+
"emailAddress": "john.doe@example.com"
|
|
2450
|
+
},
|
|
2451
|
+
"confluence": {
|
|
2452
|
+
"userKey": "JIRAUSER12345",
|
|
2453
|
+
"username": "john.doe",
|
|
2454
|
+
"displayName": "John Doe",
|
|
2455
|
+
"personalSpace": {
|
|
2456
|
+
"spaceKey": "~johndoe",
|
|
2457
|
+
"spaceName": "John Doe",
|
|
2458
|
+
"spaceType": "personal",
|
|
2459
|
+
"homePageId": "123456",
|
|
2460
|
+
"homePageTitle": "John Doe's Home"
|
|
2461
|
+
}
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
```
|
|
2465
|
+
|
|
2466
|
+
**Notes**:
|
|
2467
|
+
- Returns info from each configured service (Jira, Confluence)
|
|
2468
|
+
- Includes Confluence personal space info (for write-home restriction)
|
|
2469
|
+
- Errors are collected in `errors` array if any service fails
|
|
2470
|
+
- Available in all permission modes (readonly, full, custom)
|
|
2471
|
+
|
|
2472
|
+
---
|
|
2473
|
+
|
|
2335
2474
|
## PlantUML Tools (3)
|
|
2336
2475
|
|
|
2337
2476
|
PlantUML validation and rendering via external server. Configure with `JICON_PLANTUML_SERVER_URL` environment variable.
|
|
@@ -2348,7 +2487,7 @@ PlantUML validation and rendering via external server. Configure with `JICON_PLA
|
|
|
2348
2487
|
```
|
|
2349
2488
|
Include expansion is enabled by default. Whitelisted URLs: `plantuml-stdlib/*`, `plantuml/*`, `awslabs/aws-icons-for-plantuml/*`. See `help(topic="plantuml")` for examples.
|
|
2350
2489
|
|
|
2351
|
-
###
|
|
2490
|
+
### plantuml_validate
|
|
2352
2491
|
**Description**: Validate PlantUML diagram syntax using a real PlantUML server
|
|
2353
2492
|
**Use Cases**: Check diagram syntax before inserting into Confluence, debug diagram errors
|
|
2354
2493
|
|
|
@@ -2363,7 +2502,7 @@ Include expansion is enabled by default. Whitelisted URLs: `plantuml-stdlib/*`,
|
|
|
2363
2502
|
|
|
2364
2503
|
---
|
|
2365
2504
|
|
|
2366
|
-
###
|
|
2505
|
+
### plantuml_render
|
|
2367
2506
|
**Description**: Render PlantUML diagram to a specified format
|
|
2368
2507
|
**Use Cases**: Generate ASCII art for terminal display, create images for documentation
|
|
2369
2508
|
|
|
@@ -2390,7 +2529,7 @@ plantuml_render({
|
|
|
2390
2529
|
|
|
2391
2530
|
---
|
|
2392
2531
|
|
|
2393
|
-
###
|
|
2532
|
+
### plantuml_status
|
|
2394
2533
|
**Description**: Check PlantUML server status
|
|
2395
2534
|
**Use Cases**: Verify PlantUML server is available, troubleshoot connection issues
|
|
2396
2535
|
|
|
@@ -2426,7 +2565,7 @@ All data-heavy tools (search, list, get) **always** return buffered responses wi
|
|
|
2426
2565
|
"title": "JQL: project = PROJ"
|
|
2427
2566
|
},
|
|
2428
2567
|
"accessors": {
|
|
2429
|
-
"
|
|
2568
|
+
"transform": { "tool": "buffer_transform", "description": "Transform with JavaScript code" },
|
|
2430
2569
|
"get_items": { "tool": "buffer_get_items", "description": "Get complete items for analysis" },
|
|
2431
2570
|
"search": { "tool": "buffer_grep", "description": "Search within buffer" }
|
|
2432
2571
|
}
|
|
@@ -2439,7 +2578,7 @@ All data-heavy tools (search, list, get) **always** return buffered responses wi
|
|
|
2439
2578
|
- `contentType`: Buffer type (`json`, `xhtml`, `plain`)
|
|
2440
2579
|
|
|
2441
2580
|
**Working with JSON Buffers (Jira/Tempo):**
|
|
2442
|
-
- `
|
|
2581
|
+
- `buffer_transform(inputs, code)` - Transform with JavaScript code (98% token reduction)
|
|
2443
2582
|
- `buffer_get_items(bufferId, start, count)` - Get complete items for AI analysis
|
|
2444
2583
|
- `buffer_grep(bufferId, pattern)` - Search within buffered data
|
|
2445
2584
|
|
|
@@ -2449,7 +2588,7 @@ All data-heavy tools (search, list, get) **always** return buffered responses wi
|
|
|
2449
2588
|
- `buffer_grep(bufferId, pattern)` - Search within buffered data
|
|
2450
2589
|
|
|
2451
2590
|
**Always-Buffered Tools:**
|
|
2452
|
-
- **Jira**: `jira_search_issues`, `jira_get_issue`, `jira_list_projects`, `jira_get_project`, `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues`, `jira_get_issue_comments`, `jira_get_issue_worklogs`, `jira_get_total_worklogs`
|
|
2591
|
+
- **Jira**: `jira_search_issues`, `jira_get_issue`, `jira_get_issues`, `jira_list_projects`, `jira_get_project`, `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues`, `jira_get_issue_comments`, `jira_get_issue_worklogs`, `jira_get_total_worklogs`
|
|
2453
2592
|
- **Confluence**: `confluence_search_content`, `confluence_list_spaces`, `confluence_get_space`, `confluence_get_page_children`, `confluence_get_comments`, `confluence_list_attachments`, `confluence_draft_list`
|
|
2454
2593
|
- **Tempo**: `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_get_accounts`, `tempo_get_account`, `tempo_get_teams`, `tempo_get_team`, `tempo_get_team_worklogs`, `tempo_get_epic_worklogs`
|
|
2455
2594
|
|
|
@@ -2506,25 +2645,25 @@ Tools enforce type-safe buffer access - each tool only accepts buffers of the ty
|
|
|
2506
2645
|
|
|
2507
2646
|
| Buffer Type | Tools That REQUIRE This Type |
|
|
2508
2647
|
|-------------|------------------------------|
|
|
2509
|
-
| **json** | `
|
|
2648
|
+
| **json** | `buffer_transform`, `buffer_get_items` |
|
|
2510
2649
|
| **xhtml** | `buffer_get_structure`, `buffer_get_element`, `buffer_validate_xhtml`, `confluence_draft_create` (with bufferId), `confluence_draft_save` |
|
|
2511
2650
|
| **any** | `buffer_grep`, `buffer_list`, `buffer_clear`, `buffer_edit` (string mode) |
|
|
2512
2651
|
|
|
2513
2652
|
**Error Messages**: When you use a tool with the wrong buffer type, you get a helpful error:
|
|
2514
2653
|
```
|
|
2515
|
-
|
|
2654
|
+
buffer_transform requires json buffer, but got: xhtml.
|
|
2516
2655
|
For XHTML content, use buffer_edit or buffer_get_structure instead.
|
|
2517
2656
|
```
|
|
2518
2657
|
|
|
2519
|
-
**Key Principle**: If you have a JSON buffer (from Jira/Tempo search), use JSON-aware tools (`
|
|
2658
|
+
**Key Principle**: If you have a JSON buffer (from Jira/Tempo search), use JSON-aware tools (`buffer_transform`, `buffer_get_items`). If you have an XHTML buffer (from Confluence), use XHTML-aware tools (`buffer_get_structure`, `buffer_edit` with element IDs).
|
|
2520
2659
|
|
|
2521
2660
|
### Large Dataset Patterns
|
|
2522
2661
|
|
|
2523
2662
|
**Simple table (no AI analysis):**
|
|
2524
|
-
Use `
|
|
2663
|
+
Use `buffer_transform` - generates complete table in ONE tool call:
|
|
2525
2664
|
```typescript
|
|
2526
2665
|
jira_search_issues({ jql: "project=PROJ" }) // → bufferId (500+ items)
|
|
2527
|
-
|
|
2666
|
+
buffer_transform({ inputs: { issues: bufferId }, code: "return toTable(issues, { columns: [...] })" }) // → complete table!
|
|
2528
2667
|
```
|
|
2529
2668
|
|
|
2530
2669
|
**Table with AI-enhanced columns (complexity, impact):**
|
|
@@ -2661,14 +2800,14 @@ buffer_validate_xhtml({
|
|
|
2661
2800
|
**Automatic Validation:**
|
|
2662
2801
|
XHTML content is automatically validated before Confluence writes (`confluence_draft_create`, `confluence_draft_save`).
|
|
2663
2802
|
|
|
2664
|
-
### JSON
|
|
2803
|
+
### JSON Transform Workflows
|
|
2665
2804
|
|
|
2666
|
-
Use `
|
|
2805
|
+
Use `buffer_transform` for efficient server-side data transformation. This eliminates the need to iterate through items in the LLM context.
|
|
2667
2806
|
|
|
2668
2807
|
**Workflow - Search to Table (98% token reduction):**
|
|
2669
2808
|
```
|
|
2670
2809
|
1. jira_search_issues(jql) → bufferId with JSON array
|
|
2671
|
-
2.
|
|
2810
|
+
2. buffer_transform(inputs, code) → bufferId with XHTML table
|
|
2672
2811
|
3. Use result directly or insert into Confluence page
|
|
2673
2812
|
```
|
|
2674
2813
|
|
|
@@ -2679,29 +2818,27 @@ jira_search_issues({ jql: "project = PROJ AND type = Bug" })
|
|
|
2679
2818
|
// → { bufferId: "buf_issues", structure: { itemCount: 150 } }
|
|
2680
2819
|
|
|
2681
2820
|
// 2. Transform to table with one call (NOT iterating 150 items!)
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
sort
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
{
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
}
|
|
2702
|
-
}
|
|
2821
|
+
buffer_transform({
|
|
2822
|
+
inputs: { issues: "buf_issues" },
|
|
2823
|
+
code: `
|
|
2824
|
+
const open = issues.filter(i => i.status?.name !== 'Done');
|
|
2825
|
+
open.sort((a, b) => (a.priority?.id || 0) - (b.priority?.id || 0));
|
|
2826
|
+
|
|
2827
|
+
return toTable(open, {
|
|
2828
|
+
title: 'Open Bugs',
|
|
2829
|
+
columns: [
|
|
2830
|
+
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
2831
|
+
{ field: 'summary', header: 'Summary' },
|
|
2832
|
+
{ field: 'priority.name', header: 'Priority' }
|
|
2833
|
+
],
|
|
2834
|
+
format: [
|
|
2835
|
+
{ condition: { field: 'priority.name', operator: 'eq', value: 'High' },
|
|
2836
|
+
style: { color: '#dc3545', bold: true } }
|
|
2837
|
+
]
|
|
2838
|
+
});
|
|
2839
|
+
`
|
|
2703
2840
|
})
|
|
2704
|
-
// → { bufferId: "buf_table",
|
|
2841
|
+
// → { bufferId: "buf_table", contentType: "xhtml" }
|
|
2705
2842
|
|
|
2706
2843
|
// 3. Insert into Confluence page
|
|
2707
2844
|
confluence_edit("DOCS/Bug Report")
|
|
@@ -2715,41 +2852,39 @@ confluence_draft_create({ pageId: "123", bufferId: "buf_page" })
|
|
|
2715
2852
|
**Workflow - Statistics Dashboard:**
|
|
2716
2853
|
```typescript
|
|
2717
2854
|
// Group issues by assignee with counts
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
groupBy
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2855
|
+
buffer_transform({
|
|
2856
|
+
inputs: { issues: "buf_issues" },
|
|
2857
|
+
code: `
|
|
2858
|
+
const open = issues.filter(i => i.status?.name !== 'Done');
|
|
2859
|
+
const byAssignee = groupBy(open, 'assignee.displayName');
|
|
2860
|
+
|
|
2861
|
+
const stats = Object.entries(byAssignee).map(([name, items]) => ({
|
|
2862
|
+
assignee: name || 'Unassigned',
|
|
2863
|
+
total: items.length,
|
|
2864
|
+
issues: items.map(i => i.key).join(', ')
|
|
2865
|
+
}));
|
|
2866
|
+
stats.sort((a, b) => b.total - a.total);
|
|
2867
|
+
|
|
2868
|
+
return toTable(stats, {
|
|
2869
|
+
title: 'Work Distribution',
|
|
2870
|
+
columns: [
|
|
2871
|
+
{ field: 'assignee', header: 'Assignee' },
|
|
2872
|
+
{ field: 'total', header: 'Open Issues', align: 'right' },
|
|
2873
|
+
{ field: 'issues', header: 'Issue Keys' }
|
|
2727
2874
|
]
|
|
2728
|
-
}
|
|
2729
|
-
|
|
2730
|
-
output: {
|
|
2731
|
-
type: "xhtml_table",
|
|
2732
|
-
table: {
|
|
2733
|
-
title: "Work Distribution",
|
|
2734
|
-
columns: [
|
|
2735
|
-
{ field: "displayName", header: "Assignee" },
|
|
2736
|
-
{ field: "total", header: "Open Issues" },
|
|
2737
|
-
{ field: "issues", header: "Issue Keys" }
|
|
2738
|
-
]
|
|
2739
|
-
}
|
|
2740
|
-
}
|
|
2741
|
-
}
|
|
2875
|
+
});
|
|
2876
|
+
`
|
|
2742
2877
|
})
|
|
2743
2878
|
```
|
|
2744
2879
|
|
|
2745
|
-
**When to Use `
|
|
2880
|
+
**When to Use `buffer_transform`:**
|
|
2746
2881
|
- Generating tables/lists for Confluence from Jira/Tempo data
|
|
2747
2882
|
- Creating CSV/Markdown exports
|
|
2748
2883
|
- Aggregating statistics (count by status, sum time by project, etc.)
|
|
2749
2884
|
- Filtering and sorting large result sets server-side
|
|
2750
2885
|
- Any data transformation that doesn't require LLM reasoning
|
|
2751
2886
|
|
|
2752
|
-
**When NOT to Use `
|
|
2887
|
+
**When NOT to Use `buffer_transform`:**
|
|
2753
2888
|
- When you need to read and understand each item's content
|
|
2754
2889
|
- When decisions require LLM judgment (e.g., categorizing by sentiment)
|
|
2755
2890
|
- When output format depends on item content analysis
|