@crypto512/jicon-mcp 0.6.0 → 0.7.0

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 (74) hide show
  1. package/CLAUDE.md +252 -27
  2. package/README.md +229 -18
  3. package/TOOL_LIST.md +201 -5
  4. package/dist/config/types.d.ts +6 -6
  5. package/dist/config/types.d.ts.map +1 -1
  6. package/dist/config/types.js +3 -2
  7. package/dist/config/types.js.map +1 -1
  8. package/dist/confluence/client.d.ts +8 -16
  9. package/dist/confluence/client.d.ts.map +1 -1
  10. package/dist/confluence/client.js +75 -43
  11. package/dist/confluence/client.js.map +1 -1
  12. package/dist/confluence/formatters.d.ts +4 -0
  13. package/dist/confluence/formatters.d.ts.map +1 -1
  14. package/dist/confluence/formatters.js +19 -0
  15. package/dist/confluence/formatters.js.map +1 -1
  16. package/dist/confluence/tools.d.ts +9 -36
  17. package/dist/confluence/tools.d.ts.map +1 -1
  18. package/dist/confluence/tools.js +90 -158
  19. package/dist/confluence/tools.js.map +1 -1
  20. package/dist/index.js +9 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/jira/client.d.ts +9 -9
  23. package/dist/jira/client.d.ts.map +1 -1
  24. package/dist/jira/client.js +252 -30
  25. package/dist/jira/client.js.map +1 -1
  26. package/dist/jira/formatters.d.ts +4 -0
  27. package/dist/jira/formatters.d.ts.map +1 -1
  28. package/dist/jira/formatters.js +24 -0
  29. package/dist/jira/formatters.js.map +1 -1
  30. package/dist/jira/tools.d.ts +36 -36
  31. package/dist/jira/tools.d.ts.map +1 -1
  32. package/dist/jira/tools.js +161 -139
  33. package/dist/jira/tools.js.map +1 -1
  34. package/dist/jira/types.d.ts +50 -0
  35. package/dist/jira/types.d.ts.map +1 -1
  36. package/dist/permissions/filter.d.ts.map +1 -1
  37. package/dist/permissions/filter.js +42 -13
  38. package/dist/permissions/filter.js.map +1 -1
  39. package/dist/permissions/tool-registry.d.ts +33 -14
  40. package/dist/permissions/tool-registry.d.ts.map +1 -1
  41. package/dist/permissions/tool-registry.js +80 -5
  42. package/dist/permissions/tool-registry.js.map +1 -1
  43. package/dist/tempo/client.d.ts +1 -0
  44. package/dist/tempo/client.d.ts.map +1 -1
  45. package/dist/tempo/client.js +43 -0
  46. package/dist/tempo/client.js.map +1 -1
  47. package/dist/tempo/formatters.d.ts +4 -0
  48. package/dist/tempo/formatters.d.ts.map +1 -1
  49. package/dist/tempo/formatters.js +24 -0
  50. package/dist/tempo/formatters.js.map +1 -1
  51. package/dist/tempo/tools.d.ts +21 -0
  52. package/dist/tempo/tools.d.ts.map +1 -1
  53. package/dist/tempo/tools.js +74 -134
  54. package/dist/tempo/tools.js.map +1 -1
  55. package/dist/types.d.ts +1 -0
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/dist/utils/buffer-tools.d.ts +128 -0
  59. package/dist/utils/buffer-tools.d.ts.map +1 -0
  60. package/dist/utils/buffer-tools.js +312 -0
  61. package/dist/utils/buffer-tools.js.map +1 -0
  62. package/dist/utils/content-buffer.d.ts +132 -0
  63. package/dist/utils/content-buffer.d.ts.map +1 -0
  64. package/dist/utils/content-buffer.js +313 -0
  65. package/dist/utils/content-buffer.js.map +1 -0
  66. package/dist/utils/response-formatter.d.ts +5 -1
  67. package/dist/utils/response-formatter.d.ts.map +1 -1
  68. package/dist/utils/response-formatter.js +52 -2
  69. package/dist/utils/response-formatter.js.map +1 -1
  70. package/dist/utils/workload-tools.d.ts +68 -0
  71. package/dist/utils/workload-tools.d.ts.map +1 -0
  72. package/dist/utils/workload-tools.js +134 -0
  73. package/dist/utils/workload-tools.js.map +1 -0
  74. package/package.json +1 -1
package/README.md CHANGED
@@ -17,35 +17,174 @@ 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
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
190
  ### Configuration with `.jicon.json` (Recommended)
@@ -87,28 +226,32 @@ Control which tools are allowed to execute:
87
226
  ```json
88
227
  { "permissions": { "mode": "full" } }
89
228
  ```
90
- All 39 tools are available.
229
+ All 52 tools are available.
91
230
 
92
231
  #### 2. **Read-Only Mode**
93
232
  ```json
94
233
  { "permissions": { "mode": "readonly" } }
95
234
  ```
96
- Only read operations (26 tools: 10 Jira + 8 Confluence + 8 Tempo).
235
+ Only read operations (36 read tools + auto-included dependencies: 14 Jira + 9 Confluence + 9 Tempo + 4 Buffer read tools, plus workload utilities).
97
236
 
98
237
  #### 3. **Custom Mode** with Virtual Actions
99
238
 
100
239
  Simplify configuration with **virtual actions** that group related tools:
101
240
 
102
- **Virtual Actions Available:**
103
- - `jira_read` - All 10 Jira read tools
241
+ **Virtual Actions Available (9 total):**
242
+ - `jira_read` - All 14 Jira read tools
104
243
  - `jira_write` - All 5 Jira write tools
105
- - `jira_all` - All 15 Jira tools
106
- - `confluence_read` - All 8 Confluence read tools
244
+ - `jira_all` - All 19 Jira tools
245
+ - `confluence_read` - All 9 Confluence read tools
107
246
  - `confluence_write` - All 5 Confluence write tools
108
- - `confluence_all` - All 13 Confluence tools
109
- - `tempo_read` - All 8 Tempo read tools
247
+ - `confluence_all` - All 14 Confluence tools
248
+ - `tempo_read` - All 9 Tempo read tools
110
249
  - `tempo_write` - All 3 Tempo write tools
111
- - `tempo_all` - All 11 Tempo tools
250
+ - `tempo_all` - All 12 Tempo tools
251
+
252
+ **Auto-included Dependencies:**
253
+ - Buffer tools (buffer_get_chunk, buffer_grep, etc.) are automatically included with any read/write action
254
+ - Workload tools (workload_convert, workload_sum) are automatically included with any Jira/Confluence/Tempo tool
112
255
 
113
256
  **Example: Read-only access to all services**
114
257
  ```json
@@ -197,21 +340,30 @@ Once configured, you can ask Claude to:
197
340
  - *"Show me my worklogs for this week"*
198
341
  - *"Get team worklogs for the development team"*
199
342
 
343
+ ## Documentation
344
+
345
+ - **[CLAUDE.md](CLAUDE.md)** - Complete functional specification
346
+ - **[TOOL_LIST.md](TOOL_LIST.md)** - Comprehensive tool reference with examples
347
+ - **[API Documentation](docs/api.md)** - Detailed API documentation (coming soon)
348
+
200
349
  ## Tool Categories
201
350
 
202
351
  ### Jira Tools
203
352
  | Category | Tools |
204
353
  |----------|-------|
354
+ | **Help** | `jira_jql_help` |
205
355
  | **Search & Retrieval** | `jira_search_issues`, `jira_get_issue`, `jira_get_issue_comments` |
206
356
  | **Issue Management** | `jira_create_issue`, `jira_update_issue`, `jira_transition_issue` |
207
357
  | **Collaboration** | `jira_add_comment`, `jira_link_issues`, `jira_get_issue_watchers` |
208
- | **Projects** | `jira_list_projects`, `jira_get_project` |
358
+ | **Projects** | `jira_list_projects`, `jira_get_project`, `jira_get_issue_types` |
209
359
  | **Agile** | `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues` |
210
360
  | **Workflow** | `jira_get_transitions` |
361
+ | **Time Tracking** | `jira_get_issue_worklogs`, `jira_get_total_worklogs` |
211
362
 
212
363
  ### Confluence Tools
213
364
  | Category | Tools |
214
365
  |----------|-------|
366
+ | **Help** | `confluence_cql_help` |
215
367
  | **Search & Retrieval** | `confluence_search_content`, `confluence_get_page`, `confluence_get_page_by_title` |
216
368
  | **Page Management** | `confluence_create_page`, `confluence_update_page`, `confluence_delete_page` |
217
369
  | **Spaces** | `confluence_list_spaces`, `confluence_get_space` |
@@ -224,9 +376,22 @@ Once configured, you can ask Claude to:
224
376
  |----------|-------|
225
377
  | **Worklog Management** | `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_log_work`, `tempo_update_worklog`, `tempo_delete_worklog` |
226
378
  | **Team Tracking** | `tempo_get_team_worklogs`, `tempo_get_teams`, `tempo_get_team` |
379
+ | **Epic Tracking** | `tempo_get_epic_worklogs` |
227
380
  | **Accounts** | `tempo_get_accounts`, `tempo_get_account` |
228
381
  | **User Info** | `tempo_get_user_info` |
229
382
 
383
+ ### Buffer Tools
384
+ | Category | Tools |
385
+ |----------|-------|
386
+ | **Content Pagination** | `buffer_get_chunk`, `buffer_list`, `buffer_clear` |
387
+ | **Content Search** | `buffer_grep` |
388
+ | **Content Edit** | `buffer_edit` |
389
+
390
+ ### Workload Tools
391
+ | Category | Tools |
392
+ |----------|-------|
393
+ | **Time Conversion** | `workload_convert`, `workload_sum` |
394
+
230
395
  ## Requirements
231
396
 
232
397
  - Node.js 18 or higher
@@ -257,6 +422,52 @@ Generate a Personal Access Token (PAT):
257
422
  - ✅ Never commit credentials to version control
258
423
  - ✅ Use read-only tokens for search/read operations
259
424
 
425
+ ## Development Status
426
+
427
+ - ✅ **Specification Complete** - Functional spec and tool list defined
428
+ - ✅ **Implementation Complete** - All 52 tools implemented
429
+ - ✅ **Testing** - 157 tests passing
430
+ - ✅ **Configuration System** - Flexible .jicon.json with permissions
431
+ - ✅ **Content Buffering** - In-memory pagination for large responses
432
+ - 📦 **Publishing** - Ready for npm publish
433
+
434
+ ## Roadmap
435
+
436
+ ### Phase 1: Core Implementation ✅ **COMPLETED**
437
+ - ✅ Project setup and structure
438
+ - ✅ Jira API client implementation (19 tools)
439
+ - ✅ Confluence API client implementation (14 tools)
440
+ - ✅ Tempo API client implementation (12 tools)
441
+ - ✅ Workload utility tools implementation (2 tools)
442
+ - ✅ Buffer tools implementation (5 tools)
443
+ - ✅ MCP server implementation
444
+ - ✅ Basic testing (157 tests, 100% pass rate)
445
+ - ✅ Configuration system (.jicon.json with hierarchy)
446
+ - ✅ Permission system (full, readonly, custom modes)
447
+ - ✅ Virtual actions (jira_read, jira_all, confluence_read, tempo_all, etc.)
448
+ - ✅ Content buffering with pagination support
449
+ - ✅ Development and contributing guides
450
+
451
+ ### Phase 2: Enhancement (In Progress)
452
+ - ✅ Advanced error handling (implemented)
453
+ - [ ] Rate limiting and caching
454
+ - [ ] Integration tests with mock servers
455
+ - ✅ Documentation examples (DEVELOPMENT.md added)
456
+ - [ ] CI/CD pipeline
457
+ - [ ] npm package publishing
458
+
459
+ ### Phase 3: Advanced Features (Planned)
460
+ - [ ] Bulk operations
461
+ - [ ] Custom field templates
462
+ - [ ] Webhook support
463
+ - [ ] Multi-instance support
464
+ - [ ] CLI tool for configuration testing
465
+ - [ ] Performance optimizations
466
+
467
+ ## Contributing
468
+
469
+ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.
470
+
260
471
  ## License
261
472
 
262
473
  MIT License - see [LICENSE](LICENSE) file for details.
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)
@@ -28,11 +28,11 @@ export declare const PermissionsConfigSchema: z.ZodObject<{
28
28
  whitelist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
29
29
  blacklist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
30
30
  }, "strip", z.ZodTypeAny, {
31
- mode: "full" | "readonly" | "custom";
31
+ mode: "custom" | "full" | "readonly";
32
32
  whitelist: string[];
33
33
  blacklist: string[];
34
34
  }, {
35
- mode?: "full" | "readonly" | "custom" | undefined;
35
+ mode?: "custom" | "full" | "readonly" | undefined;
36
36
  whitelist?: string[] | undefined;
37
37
  blacklist?: string[] | undefined;
38
38
  }>;
@@ -75,17 +75,17 @@ export declare const ConfigSchema: z.ZodObject<{
75
75
  whitelist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
76
76
  blacklist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
77
77
  }, "strip", z.ZodTypeAny, {
78
- mode: "full" | "readonly" | "custom";
78
+ mode: "custom" | "full" | "readonly";
79
79
  whitelist: string[];
80
80
  blacklist: string[];
81
81
  }, {
82
- mode?: "full" | "readonly" | "custom" | undefined;
82
+ mode?: "custom" | "full" | "readonly" | undefined;
83
83
  whitelist?: string[] | undefined;
84
84
  blacklist?: string[] | undefined;
85
85
  }>>;
86
86
  }, "strip", z.ZodTypeAny, {
87
87
  permissions: {
88
- mode: "full" | "readonly" | "custom";
88
+ mode: "custom" | "full" | "readonly";
89
89
  whitelist: string[];
90
90
  blacklist: string[];
91
91
  };
@@ -115,7 +115,7 @@ export declare const ConfigSchema: z.ZodObject<{
115
115
  authType?: "basic" | "bearer" | undefined;
116
116
  } | undefined;
117
117
  permissions?: {
118
- mode?: "full" | "readonly" | "custom" | undefined;
118
+ mode?: "custom" | "full" | "readonly" | undefined;
119
119
  whitelist?: string[] | undefined;
120
120
  blacklist?: string[] | undefined;
121
121
  } | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,gCAA8B,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,oBAAoB,2CAAyC,CAAC;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,gCAA8B,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,oBAAoB,2CAAyC,CAAC;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
@@ -20,12 +20,13 @@ export const PermissionsConfigSchema = z.object({
20
20
  blacklist: z.array(z.string()).default([]),
21
21
  });
22
22
  // Main configuration schema
23
+ // Default: custom mode with jira_read + confluence_read only (Tempo disabled by default)
23
24
  export const ConfigSchema = z.object({
24
25
  jira: ServiceConfigSchema.optional(),
25
26
  confluence: ServiceConfigSchema.optional(),
26
27
  permissions: PermissionsConfigSchema.default({
27
- mode: "readonly",
28
- whitelist: [],
28
+ mode: "custom",
29
+ whitelist: ["jira_read", "confluence_read"],
29
30
  blacklist: [],
30
31
  }),
31
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG1D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAIH,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3E,mCAAmC;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAIH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,uBAAuB,CAAC,OAAO,CAAC;QAC3C,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG1D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAIH,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3E,mCAAmC;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAIH,4BAA4B;AAC5B,yFAAyF;AACzF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,uBAAuB,CAAC,OAAO,CAAC;QAC3C,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;QAC3C,SAAS,EAAE,EAAE;KACd,CAAC;CACH,CAAC,CAAC"}