@delorenj/mcp-server-trello 1.0.0 → 1.2.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.
- package/README.md +188 -4
- package/build/evals/evals.d.ts +1 -1
- package/build/evals/evals.js +37 -15
- package/build/evals/evals.js.map +1 -1
- package/build/get-card-implementation.d.ts +122 -0
- package/build/get-card-implementation.js +225 -0
- package/build/get-card-implementation.js.map +1 -0
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/trello-client.d.ts +14 -1
- package/build/trello-client.js +304 -0
- package/build/trello-client.js.map +1 -1
- package/build/types.d.ts +125 -0
- package/build/validators.d.ts +10 -0
- package/build/validators.js +32 -0
- package/build/validators.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -6,8 +6,59 @@
|
|
|
6
6
|
|
|
7
7
|
A Model Context Protocol (MCP) server that provides tools for interacting with Trello boards. This server enables seamless integration with Trello's API while handling rate limiting, type safety, and error handling automatically.
|
|
8
8
|
|
|
9
|
+
## 🎉 New in v1.2.0: Complete Checklist Management Suite!
|
|
10
|
+
|
|
11
|
+
**Comprehensive Checklist Tools are here!** 🚀 Now you can fully manage Trello checklists with 5 powerful new tools! Search, create, and track checklist items across your boards. Perfect for managing acceptance criteria, development tasks, and project milestones!
|
|
12
|
+
|
|
13
|
+
### ✨ New Checklist Tools:
|
|
14
|
+
- 📋 **`get_checklist_items`** - Retrieve all items from any checklist by name
|
|
15
|
+
- ➕ **`add_checklist_item`** - Add new items to existing checklists
|
|
16
|
+
- 🔍 **`find_checklist_items_by_description`** - Search checklist items by text content
|
|
17
|
+
- ✅ **`get_acceptance_criteria`** - Quick access to "Acceptance Criteria" checklists
|
|
18
|
+
- 📊 **`get_checklist_by_name`** - Get complete checklist with completion percentage
|
|
19
|
+
|
|
20
|
+
**Plus:** Modern MCP SDK architecture, enhanced type safety, and comprehensive documentation!
|
|
21
|
+
|
|
9
22
|
## Changelog
|
|
10
23
|
|
|
24
|
+
### 1.2.0
|
|
25
|
+
|
|
26
|
+
**🎊 Major Feature Release: Complete Checklist Management Suite**
|
|
27
|
+
|
|
28
|
+
- **5 New Checklist Tools** for comprehensive checklist management:
|
|
29
|
+
- `get_checklist_items(name)` - Retrieve all items from a checklist by name
|
|
30
|
+
- `add_checklist_item(text, checkListName)` - Add new items to existing checklists
|
|
31
|
+
- `find_checklist_items_by_description(description)` - Search checklist items by text content
|
|
32
|
+
- `get_acceptance_criteria()` - Convenience method for "Acceptance Criteria" checklists
|
|
33
|
+
- `get_checklist_by_name(name)` - Get complete checklist with completion percentage
|
|
34
|
+
- **Modern MCP SDK Architecture:** Refactored to use latest MCP TypeScript SDK patterns with `registerTool()` and Zod validation
|
|
35
|
+
- **Enhanced Type Safety:** Full TypeScript support with proper type conversions between Trello API and MCP types
|
|
36
|
+
- **New Data Types:** `CheckList` and `CheckListItem` interfaces for structured checklist data
|
|
37
|
+
- **Comprehensive Documentation:** Added `CHECKLIST_TOOLS.md` with examples and best practices
|
|
38
|
+
- **Improved Error Handling:** Consistent error responses with descriptive messages
|
|
39
|
+
- **Runtime Validation:** Zod schemas for all tool inputs with automatic validation
|
|
40
|
+
|
|
41
|
+
### 1.1.0
|
|
42
|
+
|
|
43
|
+
**🎊 Major Feature Release: Complete Card Data Extraction**
|
|
44
|
+
|
|
45
|
+
- Added powerful `get_card` tool for comprehensive single card data retrieval
|
|
46
|
+
- **Enhanced Data Extraction:**
|
|
47
|
+
- ✅ **Checklists** - Full checklist support with items, completion states, member assignments, and due dates
|
|
48
|
+
- 📎 **Attachments** - Complete attachment data including images, previews, file metadata, and inline image detection
|
|
49
|
+
- 🏷️ **Labels** - Full label details (names and colors, not just IDs)
|
|
50
|
+
- 👥 **Members** - Card member assignments with full profile information
|
|
51
|
+
- 💬 **Comments** - Card activity and comment history
|
|
52
|
+
- 📊 **Badges** - Statistics including checklist progress, comment counts, and attachment counts
|
|
53
|
+
- 🎨 **Cover Images** - Card cover image support
|
|
54
|
+
- 📍 **Context** - Board and list information for complete context
|
|
55
|
+
- 🔧 **Custom Fields** - Support for board-specific custom fields
|
|
56
|
+
- **Markdown Formatting:** New `includeMarkdown` parameter returns beautifully formatted, human-readable card data
|
|
57
|
+
- **Inline Image Parsing:** Automatically detects and extracts images embedded in card descriptions
|
|
58
|
+
- **Comprehensive API Integration:** Single API call fetches all card data efficiently using optimized query parameters
|
|
59
|
+
- **Type Safety:** Added new TypeScript interfaces for all enhanced data structures
|
|
60
|
+
- **Human Parity:** Achieves complete parity with Trello UI - see everything a human sees
|
|
61
|
+
|
|
11
62
|
### 1.0.0
|
|
12
63
|
|
|
13
64
|
- Fixed MCP protocol compatibility by removing all console output that interfered with JSON-RPC communication
|
|
@@ -57,11 +108,13 @@ A Model Context Protocol (MCP) server that provides tools for interacting with T
|
|
|
57
108
|
## Features
|
|
58
109
|
|
|
59
110
|
- **Full Trello Board Integration**: Interact with cards, lists, and board activities
|
|
111
|
+
- **🆕 Complete Card Data Extraction**: Fetch all card details including checklists, attachments, labels, members, and comments
|
|
60
112
|
- **Built-in Rate Limiting**: Respects Trello's API limits (300 requests/10s per API key, 100 requests/10s per token)
|
|
61
113
|
- **Type-Safe Implementation**: Written in TypeScript with comprehensive type definitions
|
|
62
114
|
- **Input Validation**: Robust validation for all API inputs
|
|
63
115
|
- **Error Handling**: Graceful error handling with informative messages
|
|
64
116
|
- **Dynamic Board Selection**: Switch between boards and workspaces without restarting
|
|
117
|
+
- **Markdown Formatting**: Export card data in human-readable markdown format
|
|
65
118
|
|
|
66
119
|
## Installation
|
|
67
120
|
|
|
@@ -101,6 +154,23 @@ Or if you're using mise:
|
|
|
101
154
|
}
|
|
102
155
|
```
|
|
103
156
|
|
|
157
|
+
To connect a Trello workspace, you'll need to manually retrieve a `TRELLO_TOKEN` once per workspace. After setting up your Trello Power-Up, visit the following URL:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
https://trello.com/1/authorize?expiration=never&name=YOUR_APP_NAME&scope=read,write&response_type=token&key=YOUR_API_KEY
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Replace:
|
|
164
|
+
|
|
165
|
+
* `YOUR_APP_NAME` with a name for your application (e.g., "My Trello Integration"). This name is shown to the user on the Trello authorization screen.
|
|
166
|
+
* `YOUR_API_KEY` with the API key for your Trello Power-Up
|
|
167
|
+
|
|
168
|
+
This will generate the token required for integration.
|
|
169
|
+
|
|
170
|
+
> [!NOTE]
|
|
171
|
+
> The `expiration=never` parameter creates a token that does not expire. For enhanced security, consider using `expiration=30days` and renewing the token periodically if your setup allows for it.
|
|
172
|
+
|
|
173
|
+
|
|
104
174
|
#### Don't have pnpm?
|
|
105
175
|
|
|
106
176
|
The simplest way to get `pnpm` (and thus `pnpx`) is through [mise](https://mise.jdx.dev/):
|
|
@@ -246,8 +316,119 @@ This allows you to work with multiple boards and workspaces without restarting t
|
|
|
246
316
|
}
|
|
247
317
|
```
|
|
248
318
|
|
|
319
|
+
## Date Format Guidelines
|
|
320
|
+
|
|
321
|
+
When working with dates in the Trello MCP server, please note the different format requirements:
|
|
322
|
+
|
|
323
|
+
- **Due Date (`dueDate`)**: Accepts full ISO 8601 format with time (e.g., `2023-12-31T12:00:00Z`)
|
|
324
|
+
- **Start Date (`start`)**: Accepts date only in YYYY-MM-DD format (e.g., `2025-08-05`)
|
|
325
|
+
|
|
326
|
+
This distinction follows Trello's API conventions where start dates are day-based markers while due dates can include specific times.
|
|
327
|
+
|
|
249
328
|
## Available Tools
|
|
250
329
|
|
|
330
|
+
### Checklist Management Tools 🆕
|
|
331
|
+
|
|
332
|
+
#### get_checklist_items
|
|
333
|
+
|
|
334
|
+
Get all items from a checklist by name.
|
|
335
|
+
|
|
336
|
+
```typescript
|
|
337
|
+
{
|
|
338
|
+
name: 'get_checklist_items',
|
|
339
|
+
arguments: {
|
|
340
|
+
name: string, // Name of the checklist to retrieve items from
|
|
341
|
+
boardId?: string // Optional: ID of the board (uses default if not provided)
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
#### add_checklist_item
|
|
347
|
+
|
|
348
|
+
Add a new item to an existing checklist.
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
{
|
|
352
|
+
name: 'add_checklist_item',
|
|
353
|
+
arguments: {
|
|
354
|
+
text: string, // Text content of the checklist item
|
|
355
|
+
checkListName: string, // Name of the checklist to add the item to
|
|
356
|
+
boardId?: string // Optional: ID of the board (uses default if not provided)
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
#### find_checklist_items_by_description
|
|
362
|
+
|
|
363
|
+
Search for checklist items containing specific text.
|
|
364
|
+
|
|
365
|
+
```typescript
|
|
366
|
+
{
|
|
367
|
+
name: 'find_checklist_items_by_description',
|
|
368
|
+
arguments: {
|
|
369
|
+
description: string, // Text to search for in checklist item descriptions
|
|
370
|
+
boardId?: string // Optional: ID of the board (uses default if not provided)
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
#### get_acceptance_criteria
|
|
376
|
+
|
|
377
|
+
Get all items from the "Acceptance Criteria" checklist.
|
|
378
|
+
|
|
379
|
+
```typescript
|
|
380
|
+
{
|
|
381
|
+
name: 'get_acceptance_criteria',
|
|
382
|
+
arguments: {
|
|
383
|
+
boardId?: string // Optional: ID of the board (uses default if not provided)
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### get_checklist_by_name
|
|
389
|
+
|
|
390
|
+
Get a complete checklist with all items and completion percentage.
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
{
|
|
394
|
+
name: 'get_checklist_by_name',
|
|
395
|
+
arguments: {
|
|
396
|
+
name: string, // Name of the checklist to retrieve
|
|
397
|
+
boardId?: string // Optional: ID of the board (uses default if not provided)
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
**Returns:** `CheckList` object with:
|
|
403
|
+
- `id`: Checklist identifier
|
|
404
|
+
- `name`: Checklist name
|
|
405
|
+
- `items`: Array of `CheckListItem` objects
|
|
406
|
+
- `percentComplete`: Completion percentage (0-100)
|
|
407
|
+
|
|
408
|
+
### get_card 🆕
|
|
409
|
+
|
|
410
|
+
Get comprehensive details of a specific Trello card with human-level parity.
|
|
411
|
+
|
|
412
|
+
```typescript
|
|
413
|
+
{
|
|
414
|
+
name: 'get_card',
|
|
415
|
+
arguments: {
|
|
416
|
+
cardId: string, // ID of the Trello card (short ID like 'FdhbArbK' or full ID)
|
|
417
|
+
includeMarkdown?: boolean // Return formatted markdown instead of JSON (default: false)
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
**Returns:** Complete card data including:
|
|
423
|
+
- ✅ Checklists with item states and assignments
|
|
424
|
+
- 📎 Attachments with previews and metadata
|
|
425
|
+
- 🏷️ Labels with names and colors
|
|
426
|
+
- 👥 Assigned members
|
|
427
|
+
- 💬 Comments and activity
|
|
428
|
+
- 📊 Statistics (badges)
|
|
429
|
+
- 🎨 Cover images
|
|
430
|
+
- 📍 Board and list context
|
|
431
|
+
|
|
251
432
|
### get_cards_by_list_id
|
|
252
433
|
|
|
253
434
|
Fetch all cards from a specific list.
|
|
@@ -301,8 +482,9 @@ Add a new card to a specified list.
|
|
|
301
482
|
listId: string, // ID of the list to add the card to
|
|
302
483
|
name: string, // Name of the card
|
|
303
484
|
description?: string, // Optional: Description of the card
|
|
304
|
-
dueDate?: string,
|
|
305
|
-
|
|
485
|
+
dueDate?: string, // Optional: Due date (ISO 8601 format with time)
|
|
486
|
+
start?: string, // Optional: Start date (YYYY-MM-DD format, date only)
|
|
487
|
+
labels?: string[] // Optional: Array of label IDs
|
|
306
488
|
}
|
|
307
489
|
}
|
|
308
490
|
```
|
|
@@ -319,8 +501,10 @@ Update an existing card's details.
|
|
|
319
501
|
cardId: string, // ID of the card to update
|
|
320
502
|
name?: string, // Optional: New name for the card
|
|
321
503
|
description?: string, // Optional: New description
|
|
322
|
-
dueDate?: string,
|
|
323
|
-
|
|
504
|
+
dueDate?: string, // Optional: New due date (ISO 8601 format with time)
|
|
505
|
+
start?: string, // Optional: New start date (YYYY-MM-DD format, date only)
|
|
506
|
+
dueComplete?: boolean,// Optional: Mark the due date as complete (true) or incomplete (false)
|
|
507
|
+
labels?: string[] // Optional: New array of label IDs
|
|
324
508
|
}
|
|
325
509
|
}
|
|
326
510
|
```
|
package/build/evals/evals.d.ts
CHANGED
package/build/evals/evals.js
CHANGED
|
@@ -1,50 +1,72 @@
|
|
|
1
1
|
//evals.ts
|
|
2
|
-
import { openai } from
|
|
3
|
-
import { grade } from
|
|
2
|
+
import { openai } from '@ai-sdk/openai';
|
|
3
|
+
import { grade } from 'mcp-evals';
|
|
4
4
|
const get_cards_by_list_idEval = {
|
|
5
5
|
name: 'get_cards_by_list_id Tool Evaluation',
|
|
6
6
|
description: 'Evaluates the get_cards_by_list_id tool functionality',
|
|
7
7
|
run: async () => {
|
|
8
|
-
const result = await grade(openai(
|
|
8
|
+
const result = await grade(openai('gpt-4'), 'Can you fetch all cards from the Trello list with ID abc123?');
|
|
9
9
|
return JSON.parse(result);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
};
|
|
12
12
|
const get_listsEval = {
|
|
13
13
|
name: 'get_lists Tool Evaluation',
|
|
14
14
|
description: 'Evaluates the get_lists tool by retrieving all lists from a specified board',
|
|
15
15
|
run: async () => {
|
|
16
|
-
const result = await grade(openai(
|
|
16
|
+
const result = await grade(openai('gpt-4'), 'Please retrieve all lists from the board with ID 12345 and provide their names.');
|
|
17
17
|
return JSON.parse(result);
|
|
18
|
-
}
|
|
18
|
+
},
|
|
19
19
|
};
|
|
20
20
|
const get_recent_activityEvalFunction = {
|
|
21
21
|
name: 'get_recent_activity Tool Evaluation',
|
|
22
22
|
description: 'Evaluates the ability to fetch recent activity on the Trello board',
|
|
23
23
|
run: async () => {
|
|
24
|
-
const result = await grade(openai(
|
|
24
|
+
const result = await grade(openai('gpt-4'), 'Fetch the recent activity on the Trello board, limit it to 5 items');
|
|
25
25
|
return JSON.parse(result);
|
|
26
|
-
}
|
|
26
|
+
},
|
|
27
27
|
};
|
|
28
28
|
const add_card_to_listEval = {
|
|
29
29
|
name: 'add_card_to_listEval',
|
|
30
30
|
description: 'Evaluates the add_card_to_list tool',
|
|
31
31
|
run: async () => {
|
|
32
|
-
const result = await grade(openai(
|
|
32
|
+
const result = await grade(openai('gpt-4'), "Please add a new card named 'Demo Card' to the list with ID 'abc123', with a description of 'This is a test card', due date '2023-12-31T12:00:00Z', start date '2025-08-05', and a label 'priority'.");
|
|
33
33
|
return JSON.parse(result);
|
|
34
|
-
}
|
|
34
|
+
},
|
|
35
35
|
};
|
|
36
36
|
const update_card_detailsEval = {
|
|
37
37
|
name: 'update_card_details Evaluation',
|
|
38
38
|
description: 'Evaluates the update_card_details tool functionality',
|
|
39
39
|
run: async () => {
|
|
40
|
-
const result = await grade(openai(
|
|
40
|
+
const result = await grade(openai('gpt-4'), "Please update the card with ID 'abc123' to have the name 'Updated Card Name', the description 'New description for the card', a due date of '2024-01-01T10:00:00Z', start date '2025-08-05', and labels ['priority','review'].");
|
|
41
41
|
return JSON.parse(result);
|
|
42
|
-
}
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const mark_card_completeEval = {
|
|
45
|
+
name: 'mark_card_complete Evaluation',
|
|
46
|
+
description: 'Evaluates the ability to mark a card as complete using dueComplete',
|
|
47
|
+
run: async () => {
|
|
48
|
+
const result = await grade(openai('gpt-4'), "Please mark the card with ID 'xyz789' as complete by setting dueComplete to true.");
|
|
49
|
+
return JSON.parse(result);
|
|
50
|
+
},
|
|
43
51
|
};
|
|
44
52
|
const config = {
|
|
45
|
-
model: openai(
|
|
46
|
-
evals: [
|
|
53
|
+
model: openai('gpt-4'),
|
|
54
|
+
evals: [
|
|
55
|
+
get_cards_by_list_idEval,
|
|
56
|
+
get_listsEval,
|
|
57
|
+
get_recent_activityEvalFunction,
|
|
58
|
+
add_card_to_listEval,
|
|
59
|
+
update_card_detailsEval,
|
|
60
|
+
mark_card_completeEval,
|
|
61
|
+
],
|
|
47
62
|
};
|
|
48
63
|
export default config;
|
|
49
|
-
export const evals = [
|
|
64
|
+
export const evals = [
|
|
65
|
+
get_cards_by_list_idEval,
|
|
66
|
+
get_listsEval,
|
|
67
|
+
get_recent_activityEvalFunction,
|
|
68
|
+
add_card_to_listEval,
|
|
69
|
+
update_card_detailsEval,
|
|
70
|
+
mark_card_completeEval,
|
|
71
|
+
];
|
|
50
72
|
//# sourceMappingURL=evals.js.map
|
package/build/evals/evals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evals.js","sourceRoot":"","sources":["../../src/evals/evals.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAgB,MAAM,WAAW,CAAC;AAEhD,MAAM,wBAAwB,GAAiB;
|
|
1
|
+
{"version":3,"file":"evals.js","sourceRoot":"","sources":["../../src/evals/evals.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAgB,MAAM,WAAW,CAAC;AAEhD,MAAM,wBAAwB,GAAiB;IAC7C,IAAI,EAAE,sCAAsC;IAC5C,WAAW,EAAE,uDAAuD;IACpE,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CACxB,MAAM,CAAC,OAAO,CAAC,EACf,8DAA8D,CAC/D,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAiB;IAClC,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,6EAA6E;IAC1F,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CACxB,MAAM,CAAC,OAAO,CAAC,EACf,iFAAiF,CAClF,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF,MAAM,+BAA+B,GAAiB;IACpD,IAAI,EAAE,qCAAqC;IAC3C,WAAW,EAAE,oEAAoE;IACjF,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CACxB,MAAM,CAAC,OAAO,CAAC,EACf,oEAAoE,CACrE,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF,MAAM,oBAAoB,GAAiB;IACzC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,qCAAqC;IAClD,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CACxB,MAAM,CAAC,OAAO,CAAC,EACf,sMAAsM,CACvM,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF,MAAM,uBAAuB,GAAiB;IAC5C,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE,sDAAsD;IACnE,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CACxB,MAAM,CAAC,OAAO,CAAC,EACf,gOAAgO,CACjO,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF,MAAM,sBAAsB,GAAiB;IAC3C,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,oEAAoE;IACjF,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,KAAK,CACxB,MAAM,CAAC,OAAO,CAAC,EACf,mFAAmF,CACpF,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,GAAe;IACzB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,KAAK,EAAE;QACL,wBAAwB;QACxB,aAAa;QACb,+BAA+B;QAC/B,oBAAoB;QACpB,uBAAuB;QACvB,sBAAsB;KACvB;CACF,CAAC;AAEF,eAAe,MAAM,CAAC;AAEtB,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,wBAAwB;IACxB,aAAa;IACb,+BAA+B;IAC/B,oBAAoB;IACpB,uBAAuB;IACvB,sBAAsB;CACvB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export interface TrelloCheckItem {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
state: 'complete' | 'incomplete';
|
|
5
|
+
pos: number;
|
|
6
|
+
due?: string | null;
|
|
7
|
+
dueReminder?: number | null;
|
|
8
|
+
idMember?: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface TrelloChecklist {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
idCard: string;
|
|
14
|
+
pos: number;
|
|
15
|
+
checkItems: TrelloCheckItem[];
|
|
16
|
+
}
|
|
17
|
+
export interface TrelloLabelDetails {
|
|
18
|
+
id: string;
|
|
19
|
+
idBoard: string;
|
|
20
|
+
name: string;
|
|
21
|
+
color: string;
|
|
22
|
+
}
|
|
23
|
+
export interface TrelloComment {
|
|
24
|
+
id: string;
|
|
25
|
+
date: string;
|
|
26
|
+
data: {
|
|
27
|
+
text: string;
|
|
28
|
+
card?: {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
memberCreator: {
|
|
34
|
+
id: string;
|
|
35
|
+
fullName: string;
|
|
36
|
+
username: string;
|
|
37
|
+
avatarUrl?: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface TrelloCustomField {
|
|
41
|
+
id: string;
|
|
42
|
+
name: string;
|
|
43
|
+
type: string;
|
|
44
|
+
value?: any;
|
|
45
|
+
}
|
|
46
|
+
export interface TrelloBadges {
|
|
47
|
+
attachmentsByType?: {
|
|
48
|
+
trello?: {
|
|
49
|
+
board: number;
|
|
50
|
+
card: number;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
location: boolean;
|
|
54
|
+
votes: number;
|
|
55
|
+
viewingMemberVoted: boolean;
|
|
56
|
+
subscribed: boolean;
|
|
57
|
+
fogbugz: string;
|
|
58
|
+
checkItems: number;
|
|
59
|
+
checkItemsChecked: number;
|
|
60
|
+
checkItemsEarliestDue?: string | null;
|
|
61
|
+
comments: number;
|
|
62
|
+
attachments: number;
|
|
63
|
+
description: boolean;
|
|
64
|
+
due?: string | null;
|
|
65
|
+
dueComplete: boolean;
|
|
66
|
+
start?: string | null;
|
|
67
|
+
}
|
|
68
|
+
export interface TrelloCover {
|
|
69
|
+
idAttachment?: string | null;
|
|
70
|
+
color?: string | null;
|
|
71
|
+
idUploadedBackground?: string | null;
|
|
72
|
+
size: 'normal' | 'full';
|
|
73
|
+
brightness: 'light' | 'dark';
|
|
74
|
+
isTemplate: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface EnhancedTrelloCard {
|
|
77
|
+
id: string;
|
|
78
|
+
name: string;
|
|
79
|
+
desc: string;
|
|
80
|
+
descData?: {
|
|
81
|
+
emoji?: Record<string, any>;
|
|
82
|
+
};
|
|
83
|
+
due: string | null;
|
|
84
|
+
dueComplete: boolean;
|
|
85
|
+
dueReminder: number | null;
|
|
86
|
+
start: string | null;
|
|
87
|
+
idList: string;
|
|
88
|
+
idBoard: string;
|
|
89
|
+
closed: boolean;
|
|
90
|
+
url: string;
|
|
91
|
+
shortUrl: string;
|
|
92
|
+
dateLastActivity: string;
|
|
93
|
+
pos: number;
|
|
94
|
+
labels: TrelloLabelDetails[];
|
|
95
|
+
idLabels: string[];
|
|
96
|
+
attachments: TrelloAttachment[];
|
|
97
|
+
checklists: TrelloChecklist[];
|
|
98
|
+
members: TrelloMember[];
|
|
99
|
+
idMembers: string[];
|
|
100
|
+
comments: TrelloComment[];
|
|
101
|
+
customFieldItems?: TrelloCustomField[];
|
|
102
|
+
badges: TrelloBadges;
|
|
103
|
+
cover: TrelloCover;
|
|
104
|
+
list?: {
|
|
105
|
+
id: string;
|
|
106
|
+
name: string;
|
|
107
|
+
};
|
|
108
|
+
board?: {
|
|
109
|
+
id: string;
|
|
110
|
+
name: string;
|
|
111
|
+
url: string;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export declare class EnhancedTrelloClient {
|
|
115
|
+
getCard(cardId: string, includeMarkdown?: boolean): Promise<EnhancedTrelloCard | string>;
|
|
116
|
+
private formatCardAsMarkdown;
|
|
117
|
+
private formatFileSize;
|
|
118
|
+
}
|
|
119
|
+
export declare function validateGetCardRequest(args: Record<string, unknown>): {
|
|
120
|
+
cardId: string;
|
|
121
|
+
includeMarkdown?: boolean;
|
|
122
|
+
};
|