@crypto512/jicon-mcp 2.3.0 → 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.
Files changed (181) hide show
  1. package/PROMPT.md +10 -28
  2. package/README.md +35 -7
  3. package/TOOL_LIST.md +206 -136
  4. package/dist/config/constants.d.ts +17 -4
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +20 -5
  7. package/dist/config/constants.js.map +1 -1
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +6 -2
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +19 -8
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +10 -8
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/client.d.ts.map +1 -1
  16. package/dist/confluence/client.js +7 -2
  17. package/dist/confluence/client.js.map +1 -1
  18. package/dist/confluence/tools.d.ts +8 -13
  19. package/dist/confluence/tools.d.ts.map +1 -1
  20. package/dist/confluence/tools.js +19 -37
  21. package/dist/confluence/tools.js.map +1 -1
  22. package/dist/credentials/extractor.d.ts +14 -3
  23. package/dist/credentials/extractor.d.ts.map +1 -1
  24. package/dist/credentials/extractor.js +83 -13
  25. package/dist/credentials/extractor.js.map +1 -1
  26. package/dist/credentials/index.d.ts +1 -1
  27. package/dist/credentials/index.d.ts.map +1 -1
  28. package/dist/credentials/index.js.map +1 -1
  29. package/dist/credentials/types.d.ts +22 -0
  30. package/dist/credentials/types.d.ts.map +1 -1
  31. package/dist/credentials/types.js.map +1 -1
  32. package/dist/index.js +196 -184
  33. package/dist/index.js.map +1 -1
  34. package/dist/jira/activity-tools.d.ts +0 -4
  35. package/dist/jira/activity-tools.d.ts.map +1 -1
  36. package/dist/jira/activity-tools.js +42 -65
  37. package/dist/jira/activity-tools.js.map +1 -1
  38. package/dist/jira/client.d.ts +12 -0
  39. package/dist/jira/client.d.ts.map +1 -1
  40. package/dist/jira/client.js +30 -6
  41. package/dist/jira/client.js.map +1 -1
  42. package/dist/jira/formatters.d.ts +4 -1
  43. package/dist/jira/formatters.d.ts.map +1 -1
  44. package/dist/jira/formatters.js +9 -6
  45. package/dist/jira/formatters.js.map +1 -1
  46. package/dist/jira/tools.d.ts +48 -14
  47. package/dist/jira/tools.d.ts.map +1 -1
  48. package/dist/jira/tools.js +174 -101
  49. package/dist/jira/tools.js.map +1 -1
  50. package/dist/permissions/filter.d.ts.map +1 -1
  51. package/dist/permissions/filter.js +8 -4
  52. package/dist/permissions/filter.js.map +1 -1
  53. package/dist/permissions/tool-registry.d.ts +15 -13
  54. package/dist/permissions/tool-registry.d.ts.map +1 -1
  55. package/dist/permissions/tool-registry.js +16 -8
  56. package/dist/permissions/tool-registry.js.map +1 -1
  57. package/dist/session/context.d.ts +3 -3
  58. package/dist/session/context.d.ts.map +1 -1
  59. package/dist/session/manager.d.ts +58 -27
  60. package/dist/session/manager.d.ts.map +1 -1
  61. package/dist/session/manager.js +177 -79
  62. package/dist/session/manager.js.map +1 -1
  63. package/dist/tempo/client.d.ts.map +1 -1
  64. package/dist/tempo/client.js +3 -1
  65. package/dist/tempo/client.js.map +1 -1
  66. package/dist/tempo/tools.d.ts +4 -4
  67. package/dist/tempo/tools.d.ts.map +1 -1
  68. package/dist/tempo/tools.js +15 -0
  69. package/dist/tempo/tools.js.map +1 -1
  70. package/dist/transport/http.d.ts +17 -18
  71. package/dist/transport/http.d.ts.map +1 -1
  72. package/dist/transport/http.js +135 -120
  73. package/dist/transport/http.js.map +1 -1
  74. package/dist/transport/index.d.ts +7 -2
  75. package/dist/transport/index.d.ts.map +1 -1
  76. package/dist/transport/index.js +10 -4
  77. package/dist/transport/index.js.map +1 -1
  78. package/dist/transport/types.d.ts +0 -2
  79. package/dist/transport/types.d.ts.map +1 -1
  80. package/dist/transport/types.js.map +1 -1
  81. package/dist/utils/buffer-tools.d.ts +2 -2
  82. package/dist/utils/buffer-tools.d.ts.map +1 -1
  83. package/dist/utils/buffer-tools.js +41 -19
  84. package/dist/utils/buffer-tools.js.map +1 -1
  85. package/dist/utils/http-client.d.ts.map +1 -1
  86. package/dist/utils/http-client.js +99 -2
  87. package/dist/utils/http-client.js.map +1 -1
  88. package/dist/utils/jicon-help.d.ts +1 -1
  89. package/dist/utils/jicon-help.d.ts.map +1 -1
  90. package/dist/utils/jicon-help.js +126 -336
  91. package/dist/utils/jicon-help.js.map +1 -1
  92. package/dist/utils/logger.d.ts +43 -0
  93. package/dist/utils/logger.d.ts.map +1 -0
  94. package/dist/utils/logger.js +102 -0
  95. package/dist/utils/logger.js.map +1 -0
  96. package/dist/utils/plantuml/tools.js +2 -2
  97. package/dist/utils/plantuml/tools.js.map +1 -1
  98. package/dist/utils/response-formatter.d.ts +8 -0
  99. package/dist/utils/response-formatter.d.ts.map +1 -1
  100. package/dist/utils/response-formatter.js +65 -7
  101. package/dist/utils/response-formatter.js.map +1 -1
  102. package/dist/utils/schemas/confluence.js +11 -11
  103. package/dist/utils/schemas/confluence.js.map +1 -1
  104. package/dist/utils/schemas/index.d.ts +11 -0
  105. package/dist/utils/schemas/index.d.ts.map +1 -1
  106. package/dist/utils/schemas/index.js.map +1 -1
  107. package/dist/utils/schemas/jira.d.ts +1 -1
  108. package/dist/utils/schemas/jira.d.ts.map +1 -1
  109. package/dist/utils/schemas/jira.js +37 -35
  110. package/dist/utils/schemas/jira.js.map +1 -1
  111. package/dist/utils/schemas/tempo.js +13 -13
  112. package/dist/utils/schemas/tempo.js.map +1 -1
  113. package/dist/utils/whoami-tools.d.ts +17 -0
  114. package/dist/utils/whoami-tools.d.ts.map +1 -0
  115. package/dist/utils/whoami-tools.js +90 -0
  116. package/dist/utils/whoami-tools.js.map +1 -0
  117. package/package.json +3 -3
  118. package/dist/credentials/client-factory.d.ts +0 -64
  119. package/dist/credentials/client-factory.d.ts.map +0 -1
  120. package/dist/credentials/client-factory.js +0 -110
  121. package/dist/credentials/client-factory.js.map +0 -1
  122. package/dist/credentials/context.d.ts +0 -25
  123. package/dist/credentials/context.d.ts.map +0 -1
  124. package/dist/credentials/context.js +0 -35
  125. package/dist/credentials/context.js.map +0 -1
  126. package/dist/utils/buffer-pipeline/index.d.ts +0 -30
  127. package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
  128. package/dist/utils/buffer-pipeline/index.js +0 -317
  129. package/dist/utils/buffer-pipeline/index.js.map +0 -1
  130. package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
  131. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
  132. package/dist/utils/buffer-pipeline/output/csv.js +0 -117
  133. package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
  134. package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
  135. package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
  136. package/dist/utils/buffer-pipeline/output/json.js +0 -48
  137. package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
  138. package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
  139. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
  140. package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
  141. package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
  142. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
  143. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
  144. package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
  145. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
  146. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
  147. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
  148. package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
  149. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
  150. package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
  151. package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
  152. package/dist/utils/buffer-pipeline/schema.js +0 -168
  153. package/dist/utils/buffer-pipeline/schema.js.map +0 -1
  154. package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
  155. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
  156. package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
  157. package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
  158. package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
  159. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
  160. package/dist/utils/buffer-pipeline/stages/format.js +0 -160
  161. package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
  162. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
  163. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
  164. package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
  165. package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
  166. package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
  167. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
  168. package/dist/utils/buffer-pipeline/stages/select.js +0 -228
  169. package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
  170. package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
  171. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
  172. package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
  173. package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
  174. package/dist/utils/buffer-pipeline/types.d.ts +0 -277
  175. package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
  176. package/dist/utils/buffer-pipeline/types.js +0 -8
  177. package/dist/utils/buffer-pipeline/types.js.map +0 -1
  178. package/dist/utils/plantuml/docker-manager.d.ts +0 -37
  179. package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
  180. package/dist/utils/plantuml/docker-manager.js +0 -284
  181. package/dist/utils/plantuml/docker-manager.js.map +0 -1
package/TOOL_LIST.md CHANGED
@@ -5,16 +5,17 @@ This document provides a comprehensive reference of all available tools in the J
5
5
 
6
6
  ## Summary
7
7
 
8
- **Total Tools**: 80
9
- - **Jira Tools**: 27 (22 read + 5 write)
10
- - **Confluence Tools**: 21 (13 read + 8 write)
11
- - **Tempo Tools**: 13 (10 read + 3 write)
12
- - **Buffer Tools**: 11
13
- - **Workload Tools**: 2
14
- - **URL Tools**: 2
15
- - **Jicon Help Tools**: 1
16
- - **Date Tools**: 1
17
- - **PlantUML Tools**: 3
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
21
  - **JSON arrays**: Use `buffer_get_items` for complete items, `buffer_transform` for reports
@@ -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 (27)
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
- ### 1. jira_search_issues
170
- **Description**: Search for Jira issues using JQL. Auto-fetches all results (up to 5000).
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,7 +189,6 @@ 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
  ```
@@ -198,7 +197,7 @@ The server automatically handles localized changelog field names for activity tr
198
197
 
199
198
  ---
200
199
 
201
- ### 2. jira_get_issue
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
- ### 3. jira_create_issue
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
- ### 4. jira_update_issue
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
- ### 5. jira_transition_issue
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
- ### 6. jira_add_comment
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
- ### 7. jira_get_issue_comments
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
- ### 8. jira_list_projects
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
- ### 9. jira_get_project
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
- ### 10. jira_get_issue_types
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
- ### 11. jira_get_fields
325
- **Description**: Get all available Jira fields (system and custom)
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
- | filter | enum | | Filter: "all" (default), "custom", "system", or "navigable" |
331
- | search | string | | Search in field name or ID (case-insensitive) |
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")` to find the Epic Link field
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 either:
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`
351
+
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".
353
+
354
+ ---
341
355
 
342
- **Tip**: The `clauseNames` array shows all valid JQL names for a field. The `cf[ID]` syntax always works regardless of language.
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"`
343
370
 
344
371
  ---
345
372
 
346
- ### 12. jira_get_transitions
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
- ### 13. jira_link_issues
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,7 @@ The server automatically handles localized changelog field names for activity tr
366
393
 
367
394
  ---
368
395
 
369
- ### 14. jira_list_boards
396
+ ### jira_list_boards
370
397
  **Description**: List all Jira Agile boards (Scrum and Kanban). Entry point for board discovery.
371
398
  **Use Cases**: Discover available boards, filter by project or type, find board IDs
372
399
 
@@ -387,7 +414,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
387
414
 
388
415
  ---
389
416
 
390
- ### 15. jira_get_board
417
+ ### jira_get_board
391
418
  **Description**: Get Agile board information
392
419
  **Use Cases**: View board details, get board configuration
393
420
 
@@ -399,7 +426,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
399
426
 
400
427
  ---
401
428
 
402
- ### 16. jira_get_sprints
429
+ ### jira_get_sprints
403
430
  **Description**: List all sprints for a board
404
431
  **Use Cases**: View active sprints, check sprint schedules
405
432
 
@@ -412,7 +439,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
412
439
 
413
440
  ---
414
441
 
415
- ### 17. jira_get_sprint_issues
442
+ ### jira_get_sprint_issues
416
443
  **Description**: Get all issues in a specific sprint
417
444
  **Use Cases**: View sprint backlog, check sprint progress
418
445
 
@@ -424,7 +451,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
424
451
 
425
452
  ---
426
453
 
427
- ### 18. jira_get_issue_watchers
454
+ ### jira_get_issue_watchers
428
455
  **Description**: Get list of watchers on an issue
429
456
  **Use Cases**: See who's following an issue
430
457
 
@@ -434,7 +461,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
434
461
 
435
462
  ---
436
463
 
437
- ### 19. jira_get_issue_worklogs
464
+ ### jira_get_issue_worklogs
438
465
  **Description**: Retrieve all worklogs from a Jira issue
439
466
  **Use Cases**: Analyze time logged against an issue, see worklog history
440
467
 
@@ -446,7 +473,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
446
473
 
447
474
  ---
448
475
 
449
- ### 20. jira_get_total_worklogs
476
+ ### jira_get_total_worklogs
450
477
  **Description**: Get total worklogs for an issue and all its children recursively
451
478
  **Use Cases**: Get total time spent on an Epic including all stories and sub-tasks
452
479
 
@@ -458,7 +485,7 @@ jira_list_boards(type="scrum") # Only Scrum boards
458
485
 
459
486
  ---
460
487
 
461
- ### 21. jira_list_epic_children
488
+ ### jira_list_epic_children
462
489
  **Description**: List all children of an Epic/Initiative without needing JQL
463
490
  **Use Cases**: Get Epic children, list Initiative epics, find issue hierarchy
464
491
 
@@ -481,7 +508,7 @@ Automatically detects Epic Link and Parent Link fields for language-independent
481
508
 
482
509
  ---
483
510
 
484
- ### 22. jira_get_activity_digest
511
+ ### jira_get_activity_digest
485
512
  **Description**: Get recent activity across issues for LLM analysis. Returns DIRECTLY (not buffered).
486
513
  **Use Cases**: Project activity summary, team updates, blocker detection, weekly reports
487
514
 
@@ -492,7 +519,7 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
492
519
  | projectKey | string | ✗ | Filter by project key |
493
520
  | jql | string | ✗ | Full JQL query for flexible scoping |
494
521
  | issueKeys | string[] | ✗ | Specific issue keys to include |
495
- | since | string | ✗ | Time range: "1d", "7d", "30d", or ISO date (default: "7d") |
522
+ | since | string | ✗ | Time range: "7d", "30d", "365d", or ISO date (default: "30d"). Provide explicitly for accurate results. |
496
523
  | includeComments | boolean | ✗ | Include comments (default: true) |
497
524
  | includeStatusChanges | boolean | ✗ | Include status changes (default: true) |
498
525
  | includePriorityChanges | boolean | ✗ | Include priority changes (default: true) |
@@ -522,27 +549,27 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
522
549
 
523
550
  ---
524
551
 
525
- ### 23. jira_get_recent_comments
526
- **Description**: Get comments across multiple issues for discussion analysis. Returns DIRECTLY (not buffered).
527
- **Use Cases**: Discussion summaries, finding comments about specific topics, tracking team communication
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
528
555
 
529
556
  | Parameter | Type | Required | Description |
530
557
  |-----------|------|----------|-------------|
531
558
  | projectKey | string | ✗ | Filter by project key |
532
559
  | jql | string | ✗ | Full JQL query for flexible scoping |
533
560
  | issueKeys | string[] | ✗ | Specific issue keys to include |
534
- | since | string | ✗ | Time range: "1d", "7d", "30d", or ISO date (default: "7d") |
561
+ | since | string | ✗ | Time range: "7d", "30d", "365d", or ISO date (default: "30d"). Provide explicitly for accurate results. |
535
562
  | authorKey | string | ✗ | Filter by comment author username |
536
- | maxComments | number | ✗ | Maximum comments to return (default: 30) |
537
- | includeContext | boolean | ✗ | Include issue summary/status (default: true) |
563
+ | maxComments | number | ✗ | Maximum comments to return (default: all) |
538
564
 
539
565
  **At least one scoping parameter required**: `projectKey`, `jql`, or `issueKeys`
540
566
 
541
- **Returns**: Markdown-formatted comments grouped by issue with summary statistics.
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.
542
569
 
543
570
  ---
544
571
 
545
- ### 24. jira_get_changelog
572
+ ### jira_get_changelog
546
573
  **Description**: Get field changes across issues for tracking what happened. Returns DIRECTLY (not buffered).
547
574
  **Use Cases**: Status change tracking, priority escalation analysis, assignment history
548
575
 
@@ -551,7 +578,7 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
551
578
  | projectKey | string | ✗ | Filter by project key |
552
579
  | jql | string | ✗ | Full JQL query for flexible scoping |
553
580
  | issueKeys | string[] | ✗ | Specific issue keys to include |
554
- | since | string | ✗ | Time range: "1d", "7d", "30d", or ISO date (default: "7d") |
581
+ | since | string | ✗ | Time range: "7d", "30d", "365d", or ISO date (default: "30d"). Provide explicitly for accurate results. |
555
582
  | fields | string[] | ✗ | Fields to track (default: ["status", "priority", "assignee", "resolution"]) |
556
583
  | maxChanges | number | ✗ | Maximum changes to return (default: 50) |
557
584
 
@@ -572,7 +599,7 @@ Fetches comments, status changes, priority changes, and assignee changes - forma
572
599
 
573
600
  ---
574
601
 
575
- ### 25. jira_analyze_epic
602
+ ### jira_analyze_epic
576
603
  **Description**: Comprehensive Epic/Feature analysis for LLM insights. Returns DIRECTLY (not buffered).
577
604
  **Use Cases**: Epic progress analysis, velocity tracking, time metrics, feature status
578
605
 
@@ -617,7 +644,7 @@ Currently **3 issues** are in progress.
617
644
 
618
645
  ---
619
646
 
620
- ### 26. jira_epic_summary
647
+ ### jira_epic_summary
621
648
  **Description**: Lightweight Epic/Initiative summary with hierarchy and status breakdown. Returns DIRECTLY (not buffered).
622
649
  **Use Cases**: Quick Epic overview, status breakdown, cross-project dependencies
623
650
 
@@ -664,7 +691,7 @@ Provides quick overview without the heavy metrics of `jira_analyze_epic` - no ti
664
691
 
665
692
  ---
666
693
 
667
- ### 27. jira_analyze_sprint
694
+ ### jira_analyze_sprint
668
695
  **Description**: Comprehensive Sprint analysis for LLM insights. Returns DIRECTLY (not buffered).
669
696
  **Use Cases**: Sprint progress, risk assessment, team workload, daily standups
670
697
 
@@ -751,11 +778,12 @@ Time tracking shows **71% of estimate used** for **65% completion**.
751
778
 
752
779
  ---
753
780
 
754
- ## Confluence Tools (21)
781
+ ## Confluence Tools (20)
755
782
 
756
- ### 1. confluence_search_content
783
+ ### confluence_search_content
757
784
  **Description**: Search Confluence content using CQL. Auto-fetches all results.
758
785
  **Use Cases**: Find pages, search by keyword, filter by space
786
+ **CQL Syntax**: See `help(topic="cql")` for valid fields and examples.
759
787
 
760
788
  | Parameter | Type | Required | Description |
761
789
  |-----------|------|----------|-------------|
@@ -766,7 +794,7 @@ Time tracking shows **71% of estimate used** for **65% completion**.
766
794
 
767
795
  ---
768
796
 
769
- ### 2. confluence_get_page
797
+ ### confluence_get_page
770
798
  **Description**: Get a Confluence page by ID (PREFERRED when you have page ID)
771
799
  **Use Cases**: Read page content, prepare for editing
772
800
 
@@ -781,7 +809,7 @@ Time tracking shows **71% of estimate used** for **65% completion**.
781
809
 
782
810
  ---
783
811
 
784
- ### 3. confluence_get_page_by_title
812
+ ### confluence_get_page_by_title
785
813
  **Description**: Get a page by title and space (use ONLY when you don't have page ID)
786
814
  **Use Cases**: Find page by name, access documentation
787
815
 
@@ -797,7 +825,7 @@ Time tracking shows **71% of estimate used** for **65% completion**.
797
825
 
798
826
  ---
799
827
 
800
- ### 4. confluence_edit (RECOMMENDED)
828
+ ### confluence_edit (RECOMMENDED)
801
829
  **Description**: Smart page/draft loader - auto-resolves URLs, pageIds, draftIds, or SPACE/Title
802
830
  **Use Cases**: Edit any Confluence content with a single tool, handle URL input from users
803
831
 
@@ -847,7 +875,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
847
875
 
848
876
  ---
849
877
 
850
- ### 5. confluence_delete_page
878
+ ### confluence_delete_page
851
879
  **Description**: Delete a Confluence page
852
880
  **Use Cases**: Remove outdated content
853
881
 
@@ -857,7 +885,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
857
885
 
858
886
  ---
859
887
 
860
- ### 6. confluence_list_spaces
888
+ ### confluence_list_spaces
861
889
  **Description**: List all accessible Confluence spaces
862
890
  **Use Cases**: Discover available spaces, get space keys
863
891
 
@@ -869,7 +897,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
869
897
 
870
898
  ---
871
899
 
872
- ### 7. confluence_get_space
900
+ ### confluence_get_space
873
901
  **Description**: Get detailed information about a space
874
902
  **Use Cases**: View space details, get homepage
875
903
 
@@ -882,7 +910,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
882
910
 
883
911
  ---
884
912
 
885
- ### 8. confluence_get_page_children
913
+ ### confluence_get_page_children
886
914
  **Description**: Get all child pages of a page
887
915
  **Use Cases**: Navigate page hierarchy, list subpages
888
916
 
@@ -895,7 +923,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
895
923
 
896
924
  ---
897
925
 
898
- ### 9. confluence_add_comment
926
+ ### confluence_add_comment
899
927
  **Description**: Add a comment to a Confluence page
900
928
  **Use Cases**: Provide feedback, ask questions
901
929
 
@@ -906,7 +934,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
906
934
 
907
935
  ---
908
936
 
909
- ### 10. confluence_get_comments
937
+ ### confluence_get_comments
910
938
  **Description**: Get all comments on a Confluence page
911
939
  **Use Cases**: Read feedback, review discussions
912
940
 
@@ -918,7 +946,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
918
946
 
919
947
  ---
920
948
 
921
- ### 11. confluence_upload_attachment
949
+ ### confluence_upload_attachment
922
950
  **Description**: Upload an attachment to a Confluence page
923
951
  **Use Cases**: Attach documents, upload images
924
952
 
@@ -930,7 +958,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
930
958
 
931
959
  ---
932
960
 
933
- ### 12. confluence_list_attachments
961
+ ### confluence_list_attachments
934
962
  **Description**: List all attachments on a Confluence page
935
963
  **Use Cases**: View uploaded files, check attachments
936
964
 
@@ -942,23 +970,10 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
942
970
 
943
971
  ---
944
972
 
945
- ### 13. confluence_get_current_user_space
946
- **Description**: Get the current user's personal Confluence space
947
- **Use Cases**: Verify personal space before write operations, check space key for write-home restriction
948
-
949
- | Parameter | Type | Required | Description |
950
- |-----------|------|----------|-------------|
951
- | (none) | | | |
952
-
953
- **Response includes**: `spaceKey`, `spaceName`, `spaceType`, `homePageId`, `homePageTitle`
954
-
955
- **Tip**: Use this to find your personal space key when write-home restriction is enabled.
956
-
957
- ---
958
-
959
- ### 14. confluence_draft_list
960
- **Description**: List user's draft pages
973
+ ### confluence_draft_list
974
+ **Description**: List user's UNPUBLISHED draft pages (work-in-progress content)
961
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()")`
962
977
 
963
978
  | Parameter | Type | Required | Description |
964
979
  |-----------|------|----------|-------------|
@@ -968,7 +983,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
968
983
 
969
984
  ---
970
985
 
971
- ### 15. confluence_draft_open
986
+ ### confluence_draft_open
972
987
  **Description**: Load existing draft into buffer for editing
973
988
  **Use Cases**: Continue editing a draft, prepare draft for publishing
974
989
 
@@ -982,7 +997,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
982
997
 
983
998
  ---
984
999
 
985
- ### 16. confluence_draft_create
1000
+ ### confluence_draft_create
986
1001
  **Description**: Create a draft for user review - either a new page or as an edit to an existing page
987
1002
  **Use Cases**: Start new page as draft, edit existing page through draft workflow
988
1003
 
@@ -1044,7 +1059,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
1044
1059
 
1045
1060
  ---
1046
1061
 
1047
- ### 17. confluence_draft_save
1062
+ ### confluence_draft_save
1048
1063
  **Description**: Save buffer content to draft (delete + recreate pattern)
1049
1064
  **Use Cases**: Checkpoint work, persist edits before publishing
1050
1065
 
@@ -1062,7 +1077,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
1062
1077
 
1063
1078
  ---
1064
1079
 
1065
- ### 18. confluence_draft_delete
1080
+ ### confluence_draft_delete
1066
1081
  **Description**: Permanently delete a draft
1067
1082
  **Use Cases**: Clean up abandoned drafts, remove unwanted content
1068
1083
 
@@ -1074,7 +1089,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
1074
1089
 
1075
1090
  ---
1076
1091
 
1077
- ### 19. confluence_review_list
1092
+ ### confluence_review_list
1078
1093
  **Description**: List all "[jicon-mcp REVIEW]" drafts for cleanup or management
1079
1094
  **Use Cases**: Find abandoned review drafts, manage multiple review workflows, clean up after publishing
1080
1095
 
@@ -1088,7 +1103,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
1088
1103
 
1089
1104
  ---
1090
1105
 
1091
- ### 20. confluence_review_publish
1106
+ ### confluence_review_publish
1092
1107
  **Description**: Publish a review draft to apply changes to the original page
1093
1108
  **Use Cases**: Apply reviewed changes to the original page, complete the review workflow
1094
1109
 
@@ -1108,7 +1123,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
1108
1123
 
1109
1124
  ---
1110
1125
 
1111
- ### 21. confluence_review_discard
1126
+ ### confluence_review_discard
1112
1127
  **Description**: Discard a review draft without applying changes to the original page
1113
1128
  **Use Cases**: Cancel a review, abandon changes, clean up unwanted review drafts
1114
1129
 
@@ -1129,7 +1144,7 @@ buffer_edit(bufferId=pageBuffer, after=5, fromBufferId=newContentBuffer)
1129
1144
 
1130
1145
  ### JQL (Jira Query Language) Examples
1131
1146
 
1132
- > **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.
1133
1148
 
1134
1149
  ```jql
1135
1150
  # Find open bugs assigned to you
@@ -1233,7 +1248,7 @@ AND lastModified >= now("-30d")
1233
1248
 
1234
1249
  ## Tempo Tools (13)
1235
1250
 
1236
- ### 1. tempo_get_worklogs
1251
+ ### tempo_get_worklogs
1237
1252
  **Description**: Get Tempo worklogs with filters
1238
1253
  **Use Cases**: View time entries, generate reports, review team work
1239
1254
 
@@ -1251,7 +1266,7 @@ AND lastModified >= now("-30d")
1251
1266
 
1252
1267
  ---
1253
1268
 
1254
- ### 2. tempo_get_worklog
1269
+ ### tempo_get_worklog
1255
1270
  **Description**: Get detailed information about a specific worklog entry
1256
1271
  **Use Cases**: View worklog details, check time logged
1257
1272
 
@@ -1263,7 +1278,7 @@ AND lastModified >= now("-30d")
1263
1278
 
1264
1279
  ---
1265
1280
 
1266
- ### 3. tempo_log_work
1281
+ ### tempo_log_work
1267
1282
  **Description**: Log time to a Jira issue
1268
1283
  **Use Cases**: Record work time, track daily activities
1269
1284
 
@@ -1278,7 +1293,7 @@ AND lastModified >= now("-30d")
1278
1293
 
1279
1294
  ---
1280
1295
 
1281
- ### 4. tempo_update_worklog
1296
+ ### tempo_update_worklog
1282
1297
  **Description**: Update an existing worklog entry
1283
1298
  **Use Cases**: Correct time logged, update descriptions
1284
1299
 
@@ -1294,7 +1309,7 @@ AND lastModified >= now("-30d")
1294
1309
 
1295
1310
  ---
1296
1311
 
1297
- ### 5. tempo_delete_worklog
1312
+ ### tempo_delete_worklog
1298
1313
  **Description**: Delete a worklog entry
1299
1314
  **Use Cases**: Remove incorrect entries
1300
1315
 
@@ -1304,7 +1319,7 @@ AND lastModified >= now("-30d")
1304
1319
 
1305
1320
  ---
1306
1321
 
1307
- ### 6. tempo_get_accounts
1322
+ ### tempo_get_accounts
1308
1323
  **Description**: Get all Tempo accounts
1309
1324
  **Use Cases**: List accounts for time tracking, find account keys
1310
1325
 
@@ -1316,7 +1331,7 @@ AND lastModified >= now("-30d")
1316
1331
 
1317
1332
  ---
1318
1333
 
1319
- ### 7. tempo_get_account
1334
+ ### tempo_get_account
1320
1335
  **Description**: Get detailed information about a Tempo account
1321
1336
  **Use Cases**: View account details, check status
1322
1337
 
@@ -1328,7 +1343,7 @@ AND lastModified >= now("-30d")
1328
1343
 
1329
1344
  ---
1330
1345
 
1331
- ### 8. tempo_get_teams
1346
+ ### tempo_get_teams
1332
1347
  **Description**: Get all Tempo teams
1333
1348
  **Use Cases**: List teams, find team IDs
1334
1349
 
@@ -1340,7 +1355,7 @@ AND lastModified >= now("-30d")
1340
1355
 
1341
1356
  ---
1342
1357
 
1343
- ### 9. tempo_get_team
1358
+ ### tempo_get_team
1344
1359
  **Description**: Get detailed information about a Tempo team
1345
1360
  **Use Cases**: View team details, check membership
1346
1361
 
@@ -1352,7 +1367,7 @@ AND lastModified >= now("-30d")
1352
1367
 
1353
1368
  ---
1354
1369
 
1355
- ### 10. tempo_get_team_worklogs
1370
+ ### tempo_get_team_worklogs
1356
1371
  **Description**: Get all worklogs for a team within a date range
1357
1372
  **Use Cases**: Team capacity reports, sprint reviews
1358
1373
 
@@ -1366,7 +1381,7 @@ AND lastModified >= now("-30d")
1366
1381
 
1367
1382
  ---
1368
1383
 
1369
- ### 11. tempo_get_user_info
1384
+ ### tempo_get_user_info
1370
1385
  **Description**: Get current user info (workerKey, username, accountId, displayName)
1371
1386
  **Use Cases**: Get workerKey for filtering worklogs, verify authentication
1372
1387
 
@@ -1378,7 +1393,7 @@ AND lastModified >= now("-30d")
1378
1393
 
1379
1394
  ---
1380
1395
 
1381
- ### 12. tempo_get_epic_worklogs
1396
+ ### tempo_get_epic_worklogs
1382
1397
  **Description**: Get all worklogs for an Epic and its child issues in one API call
1383
1398
  **Use Cases**: Epic time tracking, aggregate time reports, sprint cost analysis
1384
1399
 
@@ -1392,7 +1407,7 @@ AND lastModified >= now("-30d")
1392
1407
 
1393
1408
  ---
1394
1409
 
1395
- ### 13. tempo_get_top_worklogs
1410
+ ### tempo_get_top_worklogs
1396
1411
  **Description**: Get top issues or users by workload for a period. Returns DIRECTLY (not buffered).
1397
1412
  **Use Cases**: Top tickets by workload, most active contributors, time distribution analysis
1398
1413
 
@@ -1431,7 +1446,7 @@ Buffer tools are used for local content management. All buffer operations are in
1431
1446
 
1432
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.
1433
1448
 
1434
- ### 1. buffer_create
1449
+ ### buffer_create
1435
1450
  **Description**: Create a new buffer with initial content. Returns bufferId and structure.
1436
1451
 
1437
1452
  **TIP**: Call `help(topic="storage")` for XHTML syntax. Call `help(topic="plantuml")` for diagram syntax.
@@ -1485,7 +1500,7 @@ buffer_create({ content: [{"key":"PROJ-1"}], contentType: "json" }) // Native
1485
1500
 
1486
1501
  ---
1487
1502
 
1488
- ### 2. buffer_get_items
1503
+ ### buffer_get_items
1489
1504
  **Description**: Retrieve items from a JSON buffer (arrays by index, objects by key).
1490
1505
  **Use Cases**: Iterate through search results, access object properties, process items in batches
1491
1506
 
@@ -1555,7 +1570,7 @@ buffer_get_items({ bufferId: "buf_xxx" })
1555
1570
 
1556
1571
  ---
1557
1572
 
1558
- ### 3. buffer_get_element
1573
+ ### buffer_get_element
1559
1574
  **Description**: Get the raw XHTML content of a specific element by ID. Use to inspect problematic elements when fixing XHTML parsing errors.
1560
1575
  **Use Cases**: Debug XHTML validation errors, inspect element content before editing, targeted error recovery
1561
1576
 
@@ -1588,7 +1603,7 @@ buffer_get_element({
1588
1603
 
1589
1604
  ---
1590
1605
 
1591
- ### 4. buffer_set_items
1606
+ ### buffer_set_items
1592
1607
  **Description**: Update or append items in a JSON buffer (arrays by ID/append, objects by key).
1593
1608
  **Use Cases**: Modify JSON data after processing, update specific fields, append new items to arrays, merge new data into objects
1594
1609
 
@@ -1652,7 +1667,7 @@ buffer_set_items({
1652
1667
 
1653
1668
  ---
1654
1669
 
1655
- ### 5. buffer_list
1670
+ ### buffer_list
1656
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.
1657
1672
  **Use Cases**: View active buffers, recover lost buffer IDs
1658
1673
 
@@ -1664,7 +1679,7 @@ buffer_set_items({
1664
1679
 
1665
1680
  ---
1666
1681
 
1667
- ### 6. buffer_clear
1682
+ ### buffer_clear
1668
1683
  **Description**: Clear a specific buffer or all buffers
1669
1684
  **Use Cases**: Free up memory, clean up after processing
1670
1685
 
@@ -1676,7 +1691,7 @@ buffer_set_items({
1676
1691
 
1677
1692
  ---
1678
1693
 
1679
- ### 7. buffer_grep
1694
+ ### buffer_grep
1680
1695
  **Description**: Search buffered content for patterns. Supports regex, context lines (-A/-B/-C), and case-insensitive (-i). Large results are buffered.
1681
1696
  **Use Cases**: Find specific content in large responses, locate text for editing
1682
1697
 
@@ -1698,7 +1713,7 @@ buffer_set_items({
1698
1713
 
1699
1714
  ---
1700
1715
 
1701
- ### 8. buffer_transform
1716
+ ### buffer_transform
1702
1717
  **Description**: Execute JavaScript code in a secure QuickJS sandbox to transform buffer data.
1703
1718
  **Use Cases**: Server-side data transformation with full JavaScript expressiveness, generate XHTML tables for Confluence, custom filtering/grouping/aggregation
1704
1719
 
@@ -1928,7 +1943,7 @@ buffer_transform({
1928
1943
  - `assignee.displayName`, `reporter.displayName`
1929
1944
  - `created`, `updated`, `resolutiondate`
1930
1945
  - `labels` (array), `components[].name`
1931
- - `timeoriginalestimate`, `timeestimate`, `timespent`
1946
+ - `timeoriginalestimate`, `timeestimate`, `timespent` (often null — use `buffer_get_schema` to check `optional` flag)
1932
1947
 
1933
1948
  **Workflow - Jira to Confluence table:**
1934
1949
  ```
@@ -1941,7 +1956,7 @@ buffer_transform({
1941
1956
 
1942
1957
  ---
1943
1958
 
1944
- ### 9. buffer_edit
1959
+ ### buffer_edit
1945
1960
  **Description**: Edit buffer content. For XHTML: use element IDs (single or batch). For plain/json: use string replacement or append.
1946
1961
  **Use Cases**: Insert/replace/remove elements in Confluence pages, modify Jira/Tempo content, compose content from multiple buffers
1947
1962
 
@@ -2073,7 +2088,7 @@ confluence_draft_create({ pageId: "123", bufferId: "buf_A" })
2073
2088
 
2074
2089
  ---
2075
2090
 
2076
- ### 10. buffer_get_structure
2091
+ ### buffer_get_structure
2077
2092
  **Description**: Get current element structure for an XHTML buffer
2078
2093
  **Use Cases**: View element IDs for editing, understand document structure
2079
2094
 
@@ -2107,7 +2122,7 @@ buffer_get_structure({ bufferId: "buf_xxx" })
2107
2122
 
2108
2123
  ---
2109
2124
 
2110
- ### 11. buffer_validate_xhtml
2125
+ ### buffer_validate_xhtml
2111
2126
  **Description**: Validate buffered content as Confluence storage format (XHTML)
2112
2127
  **Use Cases**: Check content validity before writing, debug validation errors
2113
2128
 
@@ -2135,7 +2150,7 @@ buffer_get_structure({ bufferId: "buf_xxx" })
2135
2150
 
2136
2151
  ---
2137
2152
 
2138
- ### 12. buffer_get_schema
2153
+ ### buffer_get_schema
2139
2154
  **Description**: Get the schema for a JSON buffer. Returns field names, types, and sample values from the actual data.
2140
2155
  **Use Cases**: Understand buffer structure before writing `buffer_transform` code, discover available fields for data processing
2141
2156
 
@@ -2150,7 +2165,7 @@ buffer_get_structure({ bufferId: "buf_xxx" })
2150
2165
  **Available Schema Types**:
2151
2166
  | Schema Type | Tools That Return It |
2152
2167
  |-------------|---------------------|
2153
- | `jira_issue` | `jira_search_issues`, `jira_get_issue`, `jira_list_epic_children`, `jira_get_sprint_issues` |
2168
+ | `jira_issue` | `jira_search_issues`, `jira_get_issue`, `jira_get_issues`, `jira_list_epic_children`, `jira_get_sprint_issues` |
2154
2169
  | `jira_comment` | `jira_get_issue_comments` |
2155
2170
  | `jira_project` | `jira_list_projects`, `jira_get_project` |
2156
2171
  | `jira_board` | `jira_get_board` |
@@ -2166,7 +2181,16 @@ buffer_get_structure({ bufferId: "buf_xxx" })
2166
2181
  | `confluence_attachment` | `confluence_list_attachments` |
2167
2182
  | `confluence_draft` | `confluence_draft_list` |
2168
2183
 
2169
- **Response includes**: `bufferId`, `schemaType`, `description`, `itemCount` (for arrays), `fields` (with type, required, description, sample)
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`) |
2170
2194
 
2171
2195
  **Example - Get schema before writing transform code:**
2172
2196
  ```typescript
@@ -2181,11 +2205,13 @@ buffer_get_schema({ bufferId: "buf_xxx" })
2181
2205
  // schemaType: "jira_issue",
2182
2206
  // description: "Jira issue with core fields flattened for easy access",
2183
2207
  // itemCount: 45,
2208
+ // legend: { required: "Always present...", optional: "May be null...", ... },
2184
2209
  // fields: {
2185
- // key: { type: "string", required: true, description: "Issue key (e.g., PROJ-123)", sample: "PROJ-123" },
2186
- // summary: { type: "string", required: true, description: "Issue title/summary", sample: "Fix login bug" },
2187
- // status: { type: "string", required: true, description: "Current status name", sample: "In Progress" },
2188
- // assignee: { type: "string", required: false, description: "Assignee display name", sample: "John Doe" },
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" },
2189
2215
  // ...
2190
2216
  // }
2191
2217
  // }
@@ -2212,7 +2238,7 @@ buffer_transform({
2212
2238
 
2213
2239
  Utility tools for time calculations. Always available with any Jira, Confluence, or Tempo action.
2214
2240
 
2215
- ### 1. workload_convert
2241
+ ### workload_convert
2216
2242
  **Description**: Convert workload time between units (seconds, hours, days)
2217
2243
  **Use Cases**: Convert time values for display, calculate work estimates
2218
2244
 
@@ -2226,7 +2252,7 @@ Utility tools for time calculations. Always available with any Jira, Confluence,
2226
2252
 
2227
2253
  ---
2228
2254
 
2229
- ### 2. workload_sum
2255
+ ### workload_sum
2230
2256
  **Description**: Sum multiple workload values and return total in all units
2231
2257
  **Use Cases**: Calculate total time from multiple entries, aggregate worklogs
2232
2258
 
@@ -2243,7 +2269,7 @@ Utility tools for time calculations. Always available with any Jira, Confluence,
2243
2269
 
2244
2270
  Utility tools for URL construction and parsing. Always available with any Jira, Confluence, or Tempo action.
2245
2271
 
2246
- ### 1. fullurl
2272
+ ### fullurl
2247
2273
  **Description**: Convert Jira issue keys, Confluence page IDs, or relative paths into full URLs
2248
2274
  **Use Cases**: Generate clickable links for display, resolve relative Confluence paths
2249
2275
 
@@ -2272,7 +2298,7 @@ fullurl("/display/DOCS/Home") // → https://confluence.example.com/display/DOCS
2272
2298
 
2273
2299
  ---
2274
2300
 
2275
- ### 2. parseurl
2301
+ ### parseurl
2276
2302
  **Description**: Parse a Jira or Confluence URL to extract identifiers (pageId, issueKey, draftId, etc.)
2277
2303
  **Use Cases**: Extract IDs from URLs users share, prepare input for other tools
2278
2304
 
@@ -2307,7 +2333,7 @@ fullurl("/display/DOCS/Home") // → https://confluence.example.com/display/DOCS
2307
2333
 
2308
2334
  Unified help system for all Jicon workflows and syntax guides. Always available with any Jira, Confluence, or Tempo action.
2309
2335
 
2310
- ### 1. help
2336
+ ### help
2311
2337
  **Description**: Get Jicon MCP Server help - workflows and syntax guides
2312
2338
  **Use Cases**: Learn workflows, understand tool sequences, get syntax references
2313
2339
 
@@ -2353,7 +2379,7 @@ help(topic="analysis") // LLM analysis tools guide
2353
2379
 
2354
2380
  Date resolution utility for pre-computing date ranges. Always available with any Jira, Confluence, or Tempo action.
2355
2381
 
2356
- ### 1. date_resolve
2382
+ ### date_resolve
2357
2383
  **Description**: Resolve date expressions to concrete dates with business day counts
2358
2384
  **Use Cases**: Pre-compute date ranges for reports, time tracking, activity analysis
2359
2385
 
@@ -2401,6 +2427,50 @@ date_resolve(expression="this_month") // Current month to date
2401
2427
 
2402
2428
  ---
2403
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
+
2404
2474
  ## PlantUML Tools (3)
2405
2475
 
2406
2476
  PlantUML validation and rendering via external server. Configure with `JICON_PLANTUML_SERVER_URL` environment variable.
@@ -2417,7 +2487,7 @@ PlantUML validation and rendering via external server. Configure with `JICON_PLA
2417
2487
  ```
2418
2488
  Include expansion is enabled by default. Whitelisted URLs: `plantuml-stdlib/*`, `plantuml/*`, `awslabs/aws-icons-for-plantuml/*`. See `help(topic="plantuml")` for examples.
2419
2489
 
2420
- ### 1. plantuml_validate
2490
+ ### plantuml_validate
2421
2491
  **Description**: Validate PlantUML diagram syntax using a real PlantUML server
2422
2492
  **Use Cases**: Check diagram syntax before inserting into Confluence, debug diagram errors
2423
2493
 
@@ -2432,7 +2502,7 @@ Include expansion is enabled by default. Whitelisted URLs: `plantuml-stdlib/*`,
2432
2502
 
2433
2503
  ---
2434
2504
 
2435
- ### 2. plantuml_render
2505
+ ### plantuml_render
2436
2506
  **Description**: Render PlantUML diagram to a specified format
2437
2507
  **Use Cases**: Generate ASCII art for terminal display, create images for documentation
2438
2508
 
@@ -2459,7 +2529,7 @@ plantuml_render({
2459
2529
 
2460
2530
  ---
2461
2531
 
2462
- ### 3. plantuml_status
2532
+ ### plantuml_status
2463
2533
  **Description**: Check PlantUML server status
2464
2534
  **Use Cases**: Verify PlantUML server is available, troubleshoot connection issues
2465
2535
 
@@ -2518,7 +2588,7 @@ All data-heavy tools (search, list, get) **always** return buffered responses wi
2518
2588
  - `buffer_grep(bufferId, pattern)` - Search within buffered data
2519
2589
 
2520
2590
  **Always-Buffered Tools:**
2521
- - **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`
2522
2592
  - **Confluence**: `confluence_search_content`, `confluence_list_spaces`, `confluence_get_space`, `confluence_get_page_children`, `confluence_get_comments`, `confluence_list_attachments`, `confluence_draft_list`
2523
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`
2524
2594