@crypto512/jicon-mcp 0.6.1 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +265 -43
  2. package/TOOL_LIST.md +201 -5
  3. package/dist/config/types.d.ts +6 -6
  4. package/dist/config/types.d.ts.map +1 -1
  5. package/dist/config/types.js +3 -2
  6. package/dist/config/types.js.map +1 -1
  7. package/dist/confluence/client.d.ts +8 -16
  8. package/dist/confluence/client.d.ts.map +1 -1
  9. package/dist/confluence/client.js +75 -43
  10. package/dist/confluence/client.js.map +1 -1
  11. package/dist/confluence/formatters.d.ts +4 -0
  12. package/dist/confluence/formatters.d.ts.map +1 -1
  13. package/dist/confluence/formatters.js +19 -0
  14. package/dist/confluence/formatters.js.map +1 -1
  15. package/dist/confluence/tools.d.ts +9 -36
  16. package/dist/confluence/tools.d.ts.map +1 -1
  17. package/dist/confluence/tools.js +90 -158
  18. package/dist/confluence/tools.js.map +1 -1
  19. package/dist/index.js +9 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/jira/client.d.ts +9 -9
  22. package/dist/jira/client.d.ts.map +1 -1
  23. package/dist/jira/client.js +252 -30
  24. package/dist/jira/client.js.map +1 -1
  25. package/dist/jira/formatters.d.ts +4 -0
  26. package/dist/jira/formatters.d.ts.map +1 -1
  27. package/dist/jira/formatters.js +24 -0
  28. package/dist/jira/formatters.js.map +1 -1
  29. package/dist/jira/tools.d.ts +36 -36
  30. package/dist/jira/tools.d.ts.map +1 -1
  31. package/dist/jira/tools.js +161 -139
  32. package/dist/jira/tools.js.map +1 -1
  33. package/dist/jira/types.d.ts +50 -0
  34. package/dist/jira/types.d.ts.map +1 -1
  35. package/dist/permissions/filter.d.ts.map +1 -1
  36. package/dist/permissions/filter.js +42 -13
  37. package/dist/permissions/filter.js.map +1 -1
  38. package/dist/permissions/tool-registry.d.ts +33 -14
  39. package/dist/permissions/tool-registry.d.ts.map +1 -1
  40. package/dist/permissions/tool-registry.js +80 -5
  41. package/dist/permissions/tool-registry.js.map +1 -1
  42. package/dist/tempo/client.d.ts +1 -0
  43. package/dist/tempo/client.d.ts.map +1 -1
  44. package/dist/tempo/client.js +43 -0
  45. package/dist/tempo/client.js.map +1 -1
  46. package/dist/tempo/formatters.d.ts +4 -0
  47. package/dist/tempo/formatters.d.ts.map +1 -1
  48. package/dist/tempo/formatters.js +24 -0
  49. package/dist/tempo/formatters.js.map +1 -1
  50. package/dist/tempo/tools.d.ts +21 -0
  51. package/dist/tempo/tools.d.ts.map +1 -1
  52. package/dist/tempo/tools.js +74 -134
  53. package/dist/tempo/tools.js.map +1 -1
  54. package/dist/types.d.ts +1 -0
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js.map +1 -1
  57. package/dist/utils/buffer-tools.d.ts +128 -0
  58. package/dist/utils/buffer-tools.d.ts.map +1 -0
  59. package/dist/utils/buffer-tools.js +312 -0
  60. package/dist/utils/buffer-tools.js.map +1 -0
  61. package/dist/utils/content-buffer.d.ts +144 -0
  62. package/dist/utils/content-buffer.d.ts.map +1 -0
  63. package/dist/utils/content-buffer.js +330 -0
  64. package/dist/utils/content-buffer.js.map +1 -0
  65. package/dist/utils/response-formatter.d.ts +5 -1
  66. package/dist/utils/response-formatter.d.ts.map +1 -1
  67. package/dist/utils/response-formatter.js +52 -2
  68. package/dist/utils/response-formatter.js.map +1 -1
  69. package/dist/utils/workload-tools.d.ts +68 -0
  70. package/dist/utils/workload-tools.d.ts.map +1 -0
  71. package/dist/utils/workload-tools.js +134 -0
  72. package/dist/utils/workload-tools.js.map +1 -0
  73. package/package.json +1 -1
  74. package/CLAUDE.md +0 -722
  75. package/CONTRIBUTING.md +0 -371
  76. package/DEVELOPMENT.md +0 -400
  77. package/JIRA_API_ANALYSIS.md +0 -275
package/README.md CHANGED
@@ -17,45 +17,184 @@ npm install -g @crypto512/jicon-mcp
17
17
 
18
18
  ## What is Jicon?
19
19
 
20
- Jicon is an MCP server that enables AI assistants like Claude to interact with your Jira, Confluence, and Tempo instances. It provides 39 powerful tools for:
20
+ Jicon is an MCP server that enables AI assistants like Claude to interact with your Jira, Confluence, and Tempo instances. It provides 52 powerful tools for:
21
21
 
22
22
  - 🎫 **Jira**: Issue management, searching, project operations, Agile boards, sprints
23
23
  - 📄 **Confluence**: Page management, content search, spaces, attachments, comments
24
24
  - ⏱️ **Tempo**: Time tracking, worklog management, accounts, and teams
25
+ - 📦 **Buffer**: Content pagination for handling large responses
25
26
 
26
27
  ## Features at a Glance
27
28
 
28
- ### Jira (15 Tools)
29
+ ### Jira (19 Tools)
29
30
  - Search issues with JQL
30
31
  - Create, update, and transition issues
31
- - Manage comments and links
32
+ - Manage comments, links, and watchers
32
33
  - Access boards and sprints
33
- - View projects and metadata
34
+ - View projects, issue types, and metadata
35
+ - Track worklogs (individual and recursive totals)
34
36
 
35
- ### Confluence (13 Tools)
37
+ ### Confluence (14 Tools)
36
38
  - Search content with CQL
37
- - Create and update pages
39
+ - Create, update, and delete pages
38
40
  - Navigate page hierarchies
39
41
  - Manage attachments
40
42
  - Add and view comments
41
43
 
42
- ### Tempo (11 Tools)
44
+ ### Tempo (12 Tools)
43
45
  - Log and manage work time
44
46
  - View and update worklogs
45
47
  - Access accounts and teams
46
- - Retrieve team worklogs
48
+ - Retrieve team and epic worklogs
47
49
  - Get user time tracking info
48
50
 
51
+ ### Buffer (5 Tools)
52
+ - Retrieve content chunks from buffered responses
53
+ - List active buffers and their metadata
54
+ - Clear buffers to free memory
55
+ - **Search buffered content with grep-like patterns**
56
+ - **Edit buffered content with find/replace**
57
+
58
+ ### Workload (2 Tools)
59
+ - Convert time between units (seconds, hours, days)
60
+ - Sum multiple workload values with mixed units
61
+
62
+ ## Content Buffering
63
+
64
+ Tools that return large content (Confluence pages, Jira issues, Tempo worklogs) use an in-memory buffering system for efficient content pagination.
65
+
66
+ ### How It Works
67
+
68
+ 1. **Initial Call**: When you call a tool like `confluence_get_page`, it fetches the full content and stores it in a buffer
69
+ 2. **Chunked Response**: The response includes a `bufferId`, the first chunk of content (default 5000 chars), and pagination info
70
+ 3. **Retrieve More**: Use `buffer_get_chunk` with the `bufferId` to get subsequent chunks
71
+
72
+ ### Response Format
73
+
74
+ Buffered tools return:
75
+ - `bufferId`: Unique identifier for retrieving more content
76
+ - `content`: The current chunk of content
77
+ - `offset`: Starting position of this chunk
78
+ - `limit`: Maximum characters returned
79
+ - `totalSize`: Total size of buffered content
80
+ - `hasMore`: Whether more content is available
81
+
82
+ ### Example Usage
83
+
84
+ ```typescript
85
+ // 1. Get a Confluence page (returns first 5000 chars)
86
+ {
87
+ "pageId": "123456"
88
+ }
89
+ // Response: { bufferId: "buf_xxx", content: "...", hasMore: true, totalSize: 15000 }
90
+
91
+ // 2. Get next chunk
92
+ {
93
+ "bufferId": "buf_xxx",
94
+ "offset": 5000,
95
+ "limit": 5000
96
+ }
97
+ // Response: { content: "...", hasMore: true }
98
+
99
+ // 3. Continue until hasMore: false
100
+ ```
101
+
102
+ ### Buffered Tools
103
+
104
+ - `confluence_get_page` - Returns page content with buffering
105
+ - `confluence_get_page_by_title` - Returns page content with buffering
106
+ - `jira_get_issue` - Returns issue data with buffering
107
+ - `tempo_get_worklogs` - Returns worklog data with buffering
108
+ - `tempo_get_team_worklogs` - Returns team worklog data with buffering
109
+
110
+ ### Buffer Management
111
+
112
+ - **TTL**: Buffers expire after 10 minutes by default; edited buffers reset to 1 day TTL
113
+ - **List Buffers**: Use `buffer_list` to see active buffers
114
+ - **Clear Buffers**: Use `buffer_clear` to free memory
115
+
116
+ ### Searching Buffer Content
117
+
118
+ Use `buffer_grep` to search within buffered content with regex patterns:
119
+
120
+ ```typescript
121
+ // Search for "meeting" with 2 lines of context before and after
122
+ {
123
+ "bufferId": "buf_xxx",
124
+ "pattern": "meeting",
125
+ "-C": 2
126
+ }
127
+
128
+ // Case-insensitive search with 3 lines after each match
129
+ {
130
+ "bufferId": "buf_xxx",
131
+ "pattern": "API",
132
+ "-i": true,
133
+ "-A": 3
134
+ }
135
+
136
+ // Count occurrences only
137
+ {
138
+ "bufferId": "buf_xxx",
139
+ "pattern": "TODO",
140
+ "output_mode": "count"
141
+ }
142
+ ```
143
+
144
+ **Parameters:**
145
+ - `pattern`: Regex pattern to search for
146
+ - `-A`: Lines to show after each match
147
+ - `-B`: Lines to show before each match
148
+ - `-C`: Lines to show before AND after (overrides -A/-B)
149
+ - `-i`: Case insensitive search
150
+ - `-n`: Show line numbers (default: true)
151
+ - `output_mode`: "content" (default) or "count"
152
+ - `multiline`: Enable multiline mode where `.` matches newlines
153
+ - `head_limit`: Limit to first N matches
154
+ - `offset`: Skip first N matches
155
+
156
+ ### Editing Buffer Content
157
+
158
+ Use `buffer_edit` to perform find/replace on buffered content:
159
+
160
+ ```typescript
161
+ // Replace single occurrence
162
+ {
163
+ "bufferId": "buf_xxx",
164
+ "old_string": "Meeting at 2pm",
165
+ "new_string": "Meeting at 3pm"
166
+ }
167
+
168
+ // Replace all occurrences
169
+ {
170
+ "bufferId": "buf_xxx",
171
+ "old_string": "TODO",
172
+ "new_string": "DONE",
173
+ "replace_all": true
174
+ }
175
+ ```
176
+
177
+ **Important:** `buffer_edit` modifies content in memory only. To persist changes:
178
+ - For Confluence: call `confluence_update_page` with the modified content
179
+ - For Jira: call `jira_update_issue` with the modified fields
180
+
181
+ **Workflow Example:**
182
+ 1. `confluence_get_page` → get bufferId
183
+ 2. `buffer_grep` → find text to replace
184
+ 3. `buffer_edit` → replace text in memory
185
+ 4. `buffer_get_chunk` → get full modified content
186
+ 5. `confluence_update_page` → persist changes
187
+
49
188
  ## Configuration
50
189
 
51
- ### Configuration with `.jicon.json` (Recommended)
190
+ ### Configuration with `.jicon.json`
52
191
 
53
192
  Jicon supports a flexible configuration hierarchy with permission control:
54
193
 
55
194
  **Configuration Priority:**
56
195
  1. `.jicon.json` (project root) - **Highest priority**
57
196
  2. `$HOME/.config/jicon/jicon.json` (user config) - Medium priority
58
- 3. Environment variables - Lowest priority (legacy)
197
+ 3. Environment variables - Lowest priority
59
198
 
60
199
  **Create `.jicon.json` in your project root:**
61
200
 
@@ -70,52 +209,51 @@ Jicon supports a flexible configuration hierarchy with permission control:
70
209
  "url": "https://confluence.example.com",
71
210
  "username": "your-email@example.com",
72
211
  "token": "your-api-token"
73
- }
74
- }
75
- ```
76
-
77
- **Note:** This configuration uses the default `readonly` mode. To enable write operations, add:
78
- ```json
79
- {
212
+ },
80
213
  "permissions": {
81
214
  "mode": "full"
82
215
  }
83
216
  }
84
217
  ```
85
218
 
219
+ **Note:** Tempo uses the same Jira URL and credentials - no separate configuration needed.
220
+
86
221
  **⚠️ Important:** Add `.jicon.json` to your `.gitignore` to avoid committing credentials!
87
222
 
88
223
  ### Permission Modes
89
224
 
90
- Control which tools are allowed to execute. **As of v0.3.0, the default mode is `"readonly"`** to implement the principle of least privilege.
225
+ Control which tools are allowed to execute:
91
226
 
92
- #### 1. **Read-Only Mode** (default)
227
+ #### 1. **Full Access** (default)
93
228
  ```json
94
- { "permissions": { "mode": "readonly" } }
229
+ { "permissions": { "mode": "full" } }
95
230
  ```
96
- Only read operations (26 tools: 10 Jira + 8 Confluence + 8 Tempo).
97
- This is the **recommended default** for security - users must explicitly opt-in to write access.
231
+ All 52 tools are available.
98
232
 
99
- #### 2. **Full Access**
233
+ #### 2. **Read-Only Mode**
100
234
  ```json
101
- { "permissions": { "mode": "full" } }
235
+ { "permissions": { "mode": "readonly" } }
102
236
  ```
103
- All 39 tools are available (read + write operations).
237
+ Only read operations (36 read tools + auto-included dependencies: 14 Jira + 9 Confluence + 9 Tempo + 4 Buffer read tools, plus workload utilities).
104
238
 
105
239
  #### 3. **Custom Mode** with Virtual Actions
106
240
 
107
241
  Simplify configuration with **virtual actions** that group related tools:
108
242
 
109
- **Virtual Actions Available:**
110
- - `jira_read` - All 10 Jira read tools
243
+ **Virtual Actions Available (9 total):**
244
+ - `jira_read` - All 14 Jira read tools
111
245
  - `jira_write` - All 5 Jira write tools
112
- - `jira_all` - All 15 Jira tools
113
- - `confluence_read` - All 8 Confluence read tools
246
+ - `jira_all` - All 19 Jira tools
247
+ - `confluence_read` - All 9 Confluence read tools
114
248
  - `confluence_write` - All 5 Confluence write tools
115
- - `confluence_all` - All 13 Confluence tools
116
- - `tempo_read` - All 8 Tempo read tools
249
+ - `confluence_all` - All 14 Confluence tools
250
+ - `tempo_read` - All 9 Tempo read tools
117
251
  - `tempo_write` - All 3 Tempo write tools
118
- - `tempo_all` - All 11 Tempo tools
252
+ - `tempo_all` - All 12 Tempo tools
253
+
254
+ **Auto-included Dependencies:**
255
+ - Buffer tools (buffer_get_chunk, buffer_grep, etc.) are automatically included with any read/write action
256
+ - Workload tools (workload_convert, workload_sum) are automatically included with any Jira/Confluence/Tempo tool
119
257
 
120
258
  **Example: Read-only access to all services**
121
259
  ```json
@@ -166,11 +304,24 @@ Simplify configuration with **virtual actions** that group related tools:
166
304
 
167
305
  See [`.jicon.json.example`](.jicon.json.example), [`.jicon.json.readonly`](.jicon.json.readonly), and [`.jicon.json.custom`](.jicon.json.custom) for more examples.
168
306
 
169
- ### Environment Variables (Legacy)
307
+ ### Environment Variables
170
308
 
171
- For Claude Desktop, add to config file:
309
+ All configuration options can be set via environment variables:
172
310
 
173
- **MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
311
+ | Variable | Description |
312
+ |----------|-------------|
313
+ | `JIRA_URL` | Jira instance URL |
314
+ | `JIRA_USERNAME` | Username/email (omit for Bearer auth) |
315
+ | `JIRA_API_TOKEN` | API token or PAT |
316
+ | `JIRA_AUTH_TYPE` | `basic` (default) or `bearer` |
317
+ | `CONFLUENCE_URL` | Confluence instance URL |
318
+ | `CONFLUENCE_USERNAME` | Username/email (omit for Bearer auth) |
319
+ | `CONFLUENCE_API_TOKEN` | API token or PAT |
320
+ | `CONFLUENCE_AUTH_TYPE` | `basic` (default) or `bearer` |
321
+
322
+ ### Claude Desktop
323
+
324
+ Add to `claude_desktop_config.json`:
174
325
 
175
326
  ```json
176
327
  {
@@ -191,6 +342,50 @@ For Claude Desktop, add to config file:
191
342
  }
192
343
  ```
193
344
 
345
+ ### Claude Code
346
+
347
+ Add to `~/.claude/settings.json` or project `.mcp.json`:
348
+
349
+ ```json
350
+ {
351
+ "mcpServers": {
352
+ "jicon": {
353
+ "command": "npx",
354
+ "args": ["-y", "@crypto512/jicon-mcp"],
355
+ "env": {
356
+ "JIRA_URL": "https://jira.example.com",
357
+ "JIRA_USERNAME": "your-email@example.com",
358
+ "JIRA_API_TOKEN": "your-api-token"
359
+ }
360
+ }
361
+ }
362
+ }
363
+ ```
364
+
365
+ ### OpenCode
366
+
367
+ For [OpenCode](https://opencode.ai) 1.0+, add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jsonc`:
368
+
369
+ ```jsonc
370
+ {
371
+ "$schema": "https://opencode.ai/config.json",
372
+ "mcp": {
373
+ "jicon": {
374
+ "type": "local",
375
+ "command": ["npx", "-y", "@crypto512/jicon-mcp"],
376
+ "environment": {
377
+ "JIRA_URL": "https://jira.example.com",
378
+ "JIRA_USERNAME": "your-email@example.com",
379
+ "JIRA_API_TOKEN": "your-api-token",
380
+ "CONFLUENCE_URL": "https://confluence.example.com",
381
+ "CONFLUENCE_USERNAME": "your-email@example.com",
382
+ "CONFLUENCE_API_TOKEN": "your-api-token"
383
+ }
384
+ }
385
+ }
386
+ }
387
+ ```
388
+
194
389
  ## Example Usage
195
390
 
196
391
  Once configured, you can ask Claude to:
@@ -209,16 +404,19 @@ Once configured, you can ask Claude to:
209
404
  ### Jira Tools
210
405
  | Category | Tools |
211
406
  |----------|-------|
407
+ | **Help** | `jira_jql_help` |
212
408
  | **Search & Retrieval** | `jira_search_issues`, `jira_get_issue`, `jira_get_issue_comments` |
213
409
  | **Issue Management** | `jira_create_issue`, `jira_update_issue`, `jira_transition_issue` |
214
410
  | **Collaboration** | `jira_add_comment`, `jira_link_issues`, `jira_get_issue_watchers` |
215
- | **Projects** | `jira_list_projects`, `jira_get_project` |
411
+ | **Projects** | `jira_list_projects`, `jira_get_project`, `jira_get_issue_types` |
216
412
  | **Agile** | `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues` |
217
413
  | **Workflow** | `jira_get_transitions` |
414
+ | **Time Tracking** | `jira_get_issue_worklogs`, `jira_get_total_worklogs` |
218
415
 
219
416
  ### Confluence Tools
220
417
  | Category | Tools |
221
418
  |----------|-------|
419
+ | **Help** | `confluence_cql_help` |
222
420
  | **Search & Retrieval** | `confluence_search_content`, `confluence_get_page`, `confluence_get_page_by_title` |
223
421
  | **Page Management** | `confluence_create_page`, `confluence_update_page`, `confluence_delete_page` |
224
422
  | **Spaces** | `confluence_list_spaces`, `confluence_get_space` |
@@ -231,9 +429,22 @@ Once configured, you can ask Claude to:
231
429
  |----------|-------|
232
430
  | **Worklog Management** | `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_log_work`, `tempo_update_worklog`, `tempo_delete_worklog` |
233
431
  | **Team Tracking** | `tempo_get_team_worklogs`, `tempo_get_teams`, `tempo_get_team` |
432
+ | **Epic Tracking** | `tempo_get_epic_worklogs` |
234
433
  | **Accounts** | `tempo_get_accounts`, `tempo_get_account` |
235
434
  | **User Info** | `tempo_get_user_info` |
236
435
 
436
+ ### Buffer Tools
437
+ | Category | Tools |
438
+ |----------|-------|
439
+ | **Content Pagination** | `buffer_get_chunk`, `buffer_list`, `buffer_clear` |
440
+ | **Content Search** | `buffer_grep` |
441
+ | **Content Edit** | `buffer_edit` |
442
+
443
+ ### Workload Tools
444
+ | Category | Tools |
445
+ |----------|-------|
446
+ | **Time Conversion** | `workload_convert`, `workload_sum` |
447
+
237
448
  ## Requirements
238
449
 
239
450
  - Node.js 18 or higher
@@ -244,26 +455,37 @@ Once configured, you can ask Claude to:
244
455
 
245
456
  ## Authentication
246
457
 
247
- ### Jira/Confluence Cloud
458
+ ### Jira/Confluence Cloud (Basic Auth)
248
459
  Generate an API token from your Atlassian account:
249
460
  1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
250
461
  2. Create a new API token
251
- 3. Use your email as username and the token as password
462
+ 3. Use your email as `username` and the token as `token`
252
463
 
253
- ### Jira/Confluence Data Center
254
- Generate a Personal Access Token (PAT):
464
+ ### Jira/Confluence Data Center (Bearer Auth)
465
+ For Data Center 8.14+, use Personal Access Tokens (PAT):
255
466
  1. Go to your profile settings
256
467
  2. Navigate to "Personal Access Tokens"
257
468
  3. Create a new token with required permissions
469
+ 4. Omit `username` or set `authType: "bearer"` to use Bearer authentication
470
+
471
+ **Data Center `.jicon.json` example:**
472
+ ```json
473
+ {
474
+ "jira": {
475
+ "url": "https://jira.example.com",
476
+ "token": "your-personal-access-token",
477
+ "authType": "bearer"
478
+ }
479
+ }
480
+ ```
258
481
 
259
482
  ## Security Best Practices
260
483
 
261
- - ✅ **Default Read-Only Mode**: Jicon defaults to `readonly` mode - write access must be explicitly enabled
262
- - ✅ Store credentials in `.jicon.json` and add it to `.gitignore`
484
+ - ✅ Store credentials in environment variables
263
485
  - ✅ Use API tokens with minimal required permissions
264
486
  - ✅ Regularly rotate API tokens
265
487
  - ✅ Never commit credentials to version control
266
- - ✅ Start with `readonly` mode and only enable write operations when needed
488
+ - ✅ Use read-only tokens for search/read operations
267
489
 
268
490
  ## License
269
491
 
package/TOOL_LIST.md CHANGED
@@ -5,12 +5,13 @@ This document provides a comprehensive reference of all available tools in the J
5
5
 
6
6
  ## Summary
7
7
 
8
- **Total Tools**: 39
8
+ **Total Tools**: 42
9
9
  - **Jira Tools**: 15
10
10
  - **Confluence Tools**: 13
11
11
  - **Tempo Tools**: 11
12
+ - **Buffer Tools**: 3
12
13
 
13
- **Note**: Detailed documentation for Tempo tools is available in the source code at `src/tempo/tools.ts`. Tempo provides time tracking, worklog management, team tracking, and account management capabilities.
14
+ **Note**: Tools that return large content use in-memory buffering with pagination support. See the Buffer Tools section for content retrieval.
14
15
 
15
16
  ---
16
17
 
@@ -29,7 +30,7 @@ This document provides a comprehensive reference of all available tools in the J
29
30
  ---
30
31
 
31
32
  ### 2. jira_get_issue
32
- **Description**: Get detailed information about a specific issue
33
+ **Description**: Get detailed information about a specific issue with buffered content pagination
33
34
  **Use Cases**: View issue details, check status, read description and comments
34
35
 
35
36
  | Parameter | Type | Required | Description |
@@ -37,6 +38,10 @@ This document provides a comprehensive reference of all available tools in the J
37
38
  | issueKey | string | ✓ | Issue key (e.g., "PROJ-123") |
38
39
  | fields | string[] | ✗ | Specific fields to return |
39
40
  | expand | string[] | ✗ | Additional data (e.g., "changelog") |
41
+ | offset | number | ✗ | Character offset to start from (default: 0) |
42
+ | limit | number | ✗ | Maximum characters to return (default: 5000) |
43
+
44
+ **Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`
40
45
 
41
46
  ---
42
47
 
@@ -209,18 +214,22 @@ This document provides a comprehensive reference of all available tools in the J
209
214
  ---
210
215
 
211
216
  ### 2. confluence_get_page
212
- **Description**: Get a Confluence page by ID
217
+ **Description**: Get a Confluence page by ID with buffered content pagination
213
218
  **Use Cases**: Read page content, check version
214
219
 
215
220
  | Parameter | Type | Required | Description |
216
221
  |-----------|------|----------|-------------|
217
222
  | pageId | string | ✓ | Page ID |
218
223
  | expand | string[] | ✗ | Additional data (e.g., "body.storage") |
224
+ | offset | number | ✗ | Character offset to start from (default: 0) |
225
+ | limit | number | ✗ | Maximum characters to return (default: 5000) |
226
+
227
+ **Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, page metadata
219
228
 
220
229
  ---
221
230
 
222
231
  ### 3. confluence_get_page_by_title
223
- **Description**: Get a page by title and space
232
+ **Description**: Get a page by title and space with buffered content pagination
224
233
  **Use Cases**: Find page by name, access documentation
225
234
 
226
235
  | Parameter | Type | Required | Description |
@@ -228,6 +237,10 @@ This document provides a comprehensive reference of all available tools in the J
228
237
  | spaceKey | string | ✓ | Space key |
229
238
  | title | string | ✓ | Page title |
230
239
  | expand | string[] | ✗ | Additional data to expand |
240
+ | offset | number | ✗ | Character offset to start from (default: 0) |
241
+ | limit | number | ✗ | Maximum characters to return (default: 5000) |
242
+
243
+ **Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, page metadata
231
244
 
232
245
  ---
233
246
 
@@ -436,3 +449,186 @@ AND lastModified >= now("-30d")
436
449
  - **Meeting notes**: Recording decisions, action items
437
450
  - **Collaboration**: Comments, feedback on pages
438
451
  - **Content organization**: Space and page hierarchy management
452
+
453
+ ---
454
+
455
+ ## Tempo Tools (11)
456
+
457
+ ### 1. tempo_get_worklogs
458
+ **Description**: Get time tracking worklogs with buffered content pagination
459
+ **Use Cases**: View time entries, generate reports, review team work
460
+
461
+ | Parameter | Type | Required | Description |
462
+ |-----------|------|----------|-------------|
463
+ | dateFrom | string | ✗ | Start date (YYYY-MM-DD) |
464
+ | dateTo | string | ✗ | End date (YYYY-MM-DD) |
465
+ | projectKey | string | ✗ | Filter by project key |
466
+ | issueKey | string | ✗ | Filter by issue key |
467
+ | workerKey | string | ✗ | Filter by worker username |
468
+ | offset | number | ✗ | Character offset to start from (default: 0) |
469
+ | limit | number | ✗ | Maximum characters to return (default: 5000) |
470
+
471
+ **Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, worklog metadata
472
+
473
+ ---
474
+
475
+ ### 2. tempo_get_worklog
476
+ **Description**: Get detailed information about a specific worklog entry
477
+ **Use Cases**: View worklog details, check time logged
478
+
479
+ | Parameter | Type | Required | Description |
480
+ |-----------|------|----------|-------------|
481
+ | worklogId | number | ✓ | Tempo worklog ID |
482
+
483
+ ---
484
+
485
+ ### 3. tempo_log_work
486
+ **Description**: Log time to a Jira issue
487
+ **Use Cases**: Record work time, track daily activities
488
+
489
+ | Parameter | Type | Required | Description |
490
+ |-----------|------|----------|-------------|
491
+ | issueKey | string | ✓ | Jira issue key (e.g., PROJ-123) |
492
+ | hours | number | ✓ | Hours to log (decimal, e.g., 2.5 = 2h 30m) |
493
+ | date | string | ✓ | Date to log work (YYYY-MM-DD) |
494
+ | description | string | ✗ | Work description |
495
+ | startTime | string | ✗ | Start time (HH:MM:SS) |
496
+ | remainingEstimateHours | number | ✗ | Remaining estimate in hours |
497
+
498
+ ---
499
+
500
+ ### 4. tempo_update_worklog
501
+ **Description**: Update an existing worklog entry
502
+ **Use Cases**: Correct time logged, update descriptions
503
+
504
+ | Parameter | Type | Required | Description |
505
+ |-----------|------|----------|-------------|
506
+ | worklogId | number | ✓ | Tempo worklog ID to update |
507
+ | hours | number | ✗ | New hours (decimal) |
508
+ | description | string | ✗ | New description |
509
+ | date | string | ✗ | New date (YYYY-MM-DD) |
510
+
511
+ ---
512
+
513
+ ### 5. tempo_delete_worklog
514
+ **Description**: Delete a worklog entry
515
+ **Use Cases**: Remove incorrect entries
516
+
517
+ | Parameter | Type | Required | Description |
518
+ |-----------|------|----------|-------------|
519
+ | worklogId | number | ✓ | Tempo worklog ID to delete |
520
+
521
+ ---
522
+
523
+ ### 6. tempo_get_accounts
524
+ **Description**: Get all Tempo accounts
525
+ **Use Cases**: List accounts for time tracking, find account keys
526
+
527
+ | Parameter | Type | Required | Description |
528
+ |-----------|------|----------|-------------|
529
+ | (none) | | | |
530
+
531
+ ---
532
+
533
+ ### 7. tempo_get_account
534
+ **Description**: Get detailed information about a Tempo account
535
+ **Use Cases**: View account details, check status
536
+
537
+ | Parameter | Type | Required | Description |
538
+ |-----------|------|----------|-------------|
539
+ | accountKey | string | ✓ | Account key |
540
+
541
+ ---
542
+
543
+ ### 8. tempo_get_teams
544
+ **Description**: Get all Tempo teams
545
+ **Use Cases**: List teams, find team IDs
546
+
547
+ | Parameter | Type | Required | Description |
548
+ |-----------|------|----------|-------------|
549
+ | (none) | | | |
550
+
551
+ ---
552
+
553
+ ### 9. tempo_get_team
554
+ **Description**: Get detailed information about a Tempo team
555
+ **Use Cases**: View team details, check membership
556
+
557
+ | Parameter | Type | Required | Description |
558
+ |-----------|------|----------|-------------|
559
+ | teamId | number | ✓ | Team ID |
560
+
561
+ ---
562
+
563
+ ### 10. tempo_get_team_worklogs
564
+ **Description**: Get all worklogs for a team with buffered content pagination
565
+ **Use Cases**: Team capacity reports, sprint reviews
566
+
567
+ | Parameter | Type | Required | Description |
568
+ |-----------|------|----------|-------------|
569
+ | teamId | number | ✓ | Team ID |
570
+ | dateFrom | string | ✓ | Start date (YYYY-MM-DD) |
571
+ | dateTo | string | ✓ | End date (YYYY-MM-DD) |
572
+ | offset | number | ✗ | Character offset to start from (default: 0) |
573
+ | limit | number | ✗ | Maximum characters to return (default: 5000) |
574
+
575
+ **Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, worklog metadata
576
+
577
+ ---
578
+
579
+ ### 11. tempo_get_user_info
580
+ **Description**: Get current user information (workerKey, accountId, displayName)
581
+ **Use Cases**: Get workerKey for filtering worklogs, verify authentication
582
+
583
+ | Parameter | Type | Required | Description |
584
+ |-----------|------|----------|-------------|
585
+ | (none) | | | |
586
+
587
+ ---
588
+
589
+ ## Buffer Tools (3)
590
+
591
+ Buffer tools are used to retrieve content from buffered responses. When tools like `confluence_get_page` or `jira_get_issue` return large content, they store the full data in an in-memory buffer and return a `bufferId` for pagination.
592
+
593
+ ### 1. buffer_get_chunk
594
+ **Description**: Retrieve a chunk of buffered content by buffer ID
595
+ **Use Cases**: Get remaining content from large responses
596
+
597
+ | Parameter | Type | Required | Description |
598
+ |-----------|------|----------|-------------|
599
+ | bufferId | string | ✓ | Buffer ID from previous tool response |
600
+ | offset | number | ✗ | Character position to start from (default: 0) |
601
+ | limit | number | ✗ | Maximum characters to return (default: 5000) |
602
+
603
+ **Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, `metadata`
604
+
605
+ **Example workflow**:
606
+ ```typescript
607
+ // 1. Call confluence_get_page -> returns bufferId, first chunk, hasMore: true
608
+ // 2. Call buffer_get_chunk(bufferId, offset: 5000) -> returns next chunk
609
+ // 3. Repeat until hasMore: false
610
+ ```
611
+
612
+ ---
613
+
614
+ ### 2. buffer_list
615
+ **Description**: List all active buffers with their metadata
616
+ **Use Cases**: View active buffers, check expiration times
617
+
618
+ | Parameter | Type | Required | Description |
619
+ |-----------|------|----------|-------------|
620
+ | (none) | | | |
621
+
622
+ **Response includes**: `count`, list of buffers with `bufferId`, `totalSize`, `createdAt`, `expiresAt`, `metadata`
623
+
624
+ ---
625
+
626
+ ### 3. buffer_clear
627
+ **Description**: Clear a specific buffer or all buffers
628
+ **Use Cases**: Free up memory, clean up after processing
629
+
630
+ | Parameter | Type | Required | Description |
631
+ |-----------|------|----------|-------------|
632
+ | bufferId | string | ✗ | Buffer ID to clear, or omit to clear all buffers |
633
+
634
+ **Response includes**: `message`, `cleared` (count of buffers cleared)