@filcuk/planka-mcp 1.0.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +180 -0
  3. package/dist/client.d.ts +55 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +193 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/errors.d.ts +39 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +82 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +100 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/operations/boards.d.ts +39 -0
  16. package/dist/operations/boards.d.ts.map +1 -0
  17. package/dist/operations/boards.js +76 -0
  18. package/dist/operations/boards.js.map +1 -0
  19. package/dist/operations/cards.d.ts +35 -0
  20. package/dist/operations/cards.d.ts.map +1 -0
  21. package/dist/operations/cards.js +70 -0
  22. package/dist/operations/cards.js.map +1 -0
  23. package/dist/operations/comments.d.ts +20 -0
  24. package/dist/operations/comments.d.ts.map +1 -0
  25. package/dist/operations/comments.js +42 -0
  26. package/dist/operations/comments.js.map +1 -0
  27. package/dist/operations/labels.d.ts +32 -0
  28. package/dist/operations/labels.d.ts.map +1 -0
  29. package/dist/operations/labels.js +91 -0
  30. package/dist/operations/labels.js.map +1 -0
  31. package/dist/operations/lists.d.ts +15 -0
  32. package/dist/operations/lists.d.ts.map +1 -0
  33. package/dist/operations/lists.js +35 -0
  34. package/dist/operations/lists.js.map +1 -0
  35. package/dist/operations/projects.d.ts +23 -0
  36. package/dist/operations/projects.d.ts.map +1 -0
  37. package/dist/operations/projects.js +52 -0
  38. package/dist/operations/projects.js.map +1 -0
  39. package/dist/operations/tasks.d.ts +30 -0
  40. package/dist/operations/tasks.d.ts.map +1 -0
  41. package/dist/operations/tasks.js +102 -0
  42. package/dist/operations/tasks.js.map +1 -0
  43. package/dist/schemas/entities.d.ts +307 -0
  44. package/dist/schemas/entities.d.ts.map +1 -0
  45. package/dist/schemas/entities.js +168 -0
  46. package/dist/schemas/entities.js.map +1 -0
  47. package/dist/schemas/requests.d.ts +225 -0
  48. package/dist/schemas/requests.d.ts.map +1 -0
  49. package/dist/schemas/requests.js +87 -0
  50. package/dist/schemas/requests.js.map +1 -0
  51. package/dist/schemas/responses.d.ts +2161 -0
  52. package/dist/schemas/responses.d.ts.map +1 -0
  53. package/dist/schemas/responses.js +68 -0
  54. package/dist/schemas/responses.js.map +1 -0
  55. package/dist/tools/cards.d.ts +401 -0
  56. package/dist/tools/cards.d.ts.map +1 -0
  57. package/dist/tools/cards.js +367 -0
  58. package/dist/tools/cards.js.map +1 -0
  59. package/dist/tools/comments.d.ts +134 -0
  60. package/dist/tools/comments.d.ts.map +1 -0
  61. package/dist/tools/comments.js +109 -0
  62. package/dist/tools/comments.js.map +1 -0
  63. package/dist/tools/index.d.ts +790 -0
  64. package/dist/tools/index.d.ts.map +1 -0
  65. package/dist/tools/index.js +44 -0
  66. package/dist/tools/index.js.map +1 -0
  67. package/dist/tools/labels.d.ts +198 -0
  68. package/dist/tools/labels.d.ts.map +1 -0
  69. package/dist/tools/labels.js +265 -0
  70. package/dist/tools/labels.js.map +1 -0
  71. package/dist/tools/lists.d.ts +117 -0
  72. package/dist/tools/lists.d.ts.map +1 -0
  73. package/dist/tools/lists.js +178 -0
  74. package/dist/tools/lists.js.map +1 -0
  75. package/dist/tools/navigation.d.ts +106 -0
  76. package/dist/tools/navigation.d.ts.map +1 -0
  77. package/dist/tools/navigation.js +151 -0
  78. package/dist/tools/navigation.js.map +1 -0
  79. package/dist/tools/tasks.d.ts +223 -0
  80. package/dist/tools/tasks.d.ts.map +1 -0
  81. package/dist/tools/tasks.js +169 -0
  82. package/dist/tools/tasks.js.map +1 -0
  83. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;iBAoBC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA+BokB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAFnlB,CAAA;aAAoB,CAAC;eACvB,CAAC;gBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YACkoJ,CAAC;mBAA0B,CAAC;eAA6B,CAAC;mBAAiC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAorE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAA5mM,CAAC;mBAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAL51B,CAAA;eAAsB,CAAC;YACrB,CAAA;aAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAIkhL,CAAC;sBAA+B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAN3iL,CAAC;cAC9B,CAAA;YAAmB,CAAC;gBAClB,CAAC;YAAmB,CAAC;;;;;;;;;;;;;;IAxC/B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;QACpC,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAEtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMjC;AAGD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tool registry for PLANKA MCP server.
3
+ */
4
+ import { navigationTools } from "./navigation.js";
5
+ import { cardTools } from "./cards.js";
6
+ import { taskTools } from "./tasks.js";
7
+ import { labelTools } from "./labels.js";
8
+ import { commentTools } from "./comments.js";
9
+ import { listTools } from "./lists.js";
10
+ /**
11
+ * All registered tools.
12
+ */
13
+ export const allTools = [
14
+ ...navigationTools,
15
+ ...cardTools,
16
+ ...taskTools,
17
+ ...labelTools,
18
+ ...commentTools,
19
+ ...listTools,
20
+ ];
21
+ /**
22
+ * Get a tool by name.
23
+ */
24
+ export function getTool(name) {
25
+ return allTools.find((tool) => tool.name === name);
26
+ }
27
+ /**
28
+ * Get all tool definitions (for MCP listTools).
29
+ */
30
+ export function getToolDefinitions() {
31
+ return allTools.map((tool) => ({
32
+ name: tool.name,
33
+ description: tool.description,
34
+ inputSchema: tool.inputSchema,
35
+ }));
36
+ }
37
+ // Re-export individual tool groups
38
+ export { navigationTools } from "./navigation.js";
39
+ export { cardTools } from "./cards.js";
40
+ export { taskTools } from "./tasks.js";
41
+ export { labelTools } from "./labels.js";
42
+ export { commentTools } from "./comments.js";
43
+ export { listTools } from "./lists.js";
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,GAAG,eAAe;IAClB,GAAG,SAAS;IACZ,GAAG,SAAS;IACZ,GAAG,UAAU;IACb,GAAG,YAAY;IACf,GAAG,SAAS;CACb,CAAC;AAmBF;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAqB,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,mCAAmC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Tool: planka_manage_labels
3
+ * Create, update, or delete labels on a board.
4
+ */
5
+ export declare const manageLabelsTool: {
6
+ name: string;
7
+ description: string;
8
+ inputSchema: {
9
+ type: "object";
10
+ properties: {
11
+ action: {
12
+ type: string;
13
+ enum: string[];
14
+ description: string;
15
+ };
16
+ boardId: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ labelId: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ name: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ color: {
29
+ type: string;
30
+ description: string;
31
+ };
32
+ };
33
+ required: string[];
34
+ };
35
+ handler: (params: {
36
+ action: "create" | "update" | "delete";
37
+ boardId?: string;
38
+ labelId?: string;
39
+ name?: string;
40
+ color?: string;
41
+ }) => Promise<{
42
+ content: {
43
+ type: "text";
44
+ text: string;
45
+ }[];
46
+ isError: boolean;
47
+ } | {
48
+ content: {
49
+ type: "text";
50
+ text: string;
51
+ }[];
52
+ isError?: undefined;
53
+ }>;
54
+ };
55
+ /**
56
+ * Tool: planka_set_card_labels
57
+ * Add or remove labels from a card.
58
+ */
59
+ export declare const setCardLabelsTool: {
60
+ name: string;
61
+ description: string;
62
+ inputSchema: {
63
+ type: "object";
64
+ properties: {
65
+ cardId: {
66
+ type: string;
67
+ description: string;
68
+ };
69
+ addLabelIds: {
70
+ type: string;
71
+ items: {
72
+ type: string;
73
+ };
74
+ description: string;
75
+ };
76
+ removeLabelIds: {
77
+ type: string;
78
+ items: {
79
+ type: string;
80
+ };
81
+ description: string;
82
+ };
83
+ };
84
+ required: string[];
85
+ };
86
+ handler: (params: {
87
+ cardId: string;
88
+ addLabelIds?: string[];
89
+ removeLabelIds?: string[];
90
+ }) => Promise<{
91
+ content: {
92
+ type: "text";
93
+ text: string;
94
+ }[];
95
+ isError?: undefined;
96
+ } | {
97
+ content: {
98
+ type: "text";
99
+ text: string;
100
+ }[];
101
+ isError: boolean;
102
+ }>;
103
+ };
104
+ export declare const labelTools: ({
105
+ name: string;
106
+ description: string;
107
+ inputSchema: {
108
+ type: "object";
109
+ properties: {
110
+ action: {
111
+ type: string;
112
+ enum: string[];
113
+ description: string;
114
+ };
115
+ boardId: {
116
+ type: string;
117
+ description: string;
118
+ };
119
+ labelId: {
120
+ type: string;
121
+ description: string;
122
+ };
123
+ name: {
124
+ type: string;
125
+ description: string;
126
+ };
127
+ color: {
128
+ type: string;
129
+ description: string;
130
+ };
131
+ };
132
+ required: string[];
133
+ };
134
+ handler: (params: {
135
+ action: "create" | "update" | "delete";
136
+ boardId?: string;
137
+ labelId?: string;
138
+ name?: string;
139
+ color?: string;
140
+ }) => Promise<{
141
+ content: {
142
+ type: "text";
143
+ text: string;
144
+ }[];
145
+ isError: boolean;
146
+ } | {
147
+ content: {
148
+ type: "text";
149
+ text: string;
150
+ }[];
151
+ isError?: undefined;
152
+ }>;
153
+ } | {
154
+ name: string;
155
+ description: string;
156
+ inputSchema: {
157
+ type: "object";
158
+ properties: {
159
+ cardId: {
160
+ type: string;
161
+ description: string;
162
+ };
163
+ addLabelIds: {
164
+ type: string;
165
+ items: {
166
+ type: string;
167
+ };
168
+ description: string;
169
+ };
170
+ removeLabelIds: {
171
+ type: string;
172
+ items: {
173
+ type: string;
174
+ };
175
+ description: string;
176
+ };
177
+ };
178
+ required: string[];
179
+ };
180
+ handler: (params: {
181
+ cardId: string;
182
+ addLabelIds?: string[];
183
+ removeLabelIds?: string[];
184
+ }) => Promise<{
185
+ content: {
186
+ type: "text";
187
+ text: string;
188
+ }[];
189
+ isError?: undefined;
190
+ } | {
191
+ content: {
192
+ type: "text";
193
+ text: string;
194
+ }[];
195
+ isError: boolean;
196
+ }>;
197
+ })[];
198
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/tools/labels.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA8BH;QACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;;;;;;;;;;;CA0LF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAuBJ;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B;;;;;;;;;;;;;CAmCF,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAtQG;QACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAuNuB;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B;;;;;;;;;;;;;IAqC4D,CAAC"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Label tools for PLANKA MCP server.
3
+ */
4
+ import { createLabel, updateLabel, deleteLabel, setCardLabels, } from "../operations/labels.js";
5
+ import { LabelColorSchema } from "../schemas/entities.js";
6
+ import { PlankaError } from "../errors.js";
7
+ // Valid colors for the schema description
8
+ const validColors = LabelColorSchema.options.join(", ");
9
+ /**
10
+ * Tool: planka_manage_labels
11
+ * Create, update, or delete labels on a board.
12
+ */
13
+ export const manageLabelsTool = {
14
+ name: "planka_manage_labels",
15
+ description: "Create, update, or delete labels on a board.",
16
+ inputSchema: {
17
+ type: "object",
18
+ properties: {
19
+ action: {
20
+ type: "string",
21
+ enum: ["create", "update", "delete"],
22
+ description: "Action to perform",
23
+ },
24
+ boardId: {
25
+ type: "string",
26
+ description: "Board ID (required for create)",
27
+ },
28
+ labelId: {
29
+ type: "string",
30
+ description: "Label ID (required for update/delete)",
31
+ },
32
+ name: {
33
+ type: "string",
34
+ description: "Label name",
35
+ },
36
+ color: {
37
+ type: "string",
38
+ description: `Label color. Valid colors: ${validColors}`,
39
+ },
40
+ },
41
+ required: ["action"],
42
+ },
43
+ handler: async (params) => {
44
+ try {
45
+ switch (params.action) {
46
+ case "create": {
47
+ if (!params.boardId) {
48
+ return {
49
+ content: [
50
+ {
51
+ type: "text",
52
+ text: "Error: boardId is required for create action",
53
+ },
54
+ ],
55
+ isError: true,
56
+ };
57
+ }
58
+ if (!params.name) {
59
+ return {
60
+ content: [
61
+ {
62
+ type: "text",
63
+ text: "Error: name is required for create action",
64
+ },
65
+ ],
66
+ isError: true,
67
+ };
68
+ }
69
+ if (!params.color) {
70
+ return {
71
+ content: [
72
+ {
73
+ type: "text",
74
+ text: "Error: color is required for create action",
75
+ },
76
+ ],
77
+ isError: true,
78
+ };
79
+ }
80
+ // Validate color
81
+ const colorParse = LabelColorSchema.safeParse(params.color);
82
+ if (!colorParse.success) {
83
+ return {
84
+ content: [
85
+ {
86
+ type: "text",
87
+ text: `Error: Invalid color '${params.color}'. Valid colors: ${validColors}`,
88
+ },
89
+ ],
90
+ isError: true,
91
+ };
92
+ }
93
+ const label = await createLabel({
94
+ boardId: params.boardId,
95
+ name: params.name,
96
+ color: colorParse.data,
97
+ });
98
+ return {
99
+ content: [
100
+ {
101
+ type: "text",
102
+ text: JSON.stringify({
103
+ success: true,
104
+ label: {
105
+ id: label.id,
106
+ name: label.name,
107
+ color: label.color,
108
+ },
109
+ }, null, 2),
110
+ },
111
+ ],
112
+ };
113
+ }
114
+ case "update": {
115
+ if (!params.labelId) {
116
+ return {
117
+ content: [
118
+ {
119
+ type: "text",
120
+ text: "Error: labelId is required for update action",
121
+ },
122
+ ],
123
+ isError: true,
124
+ };
125
+ }
126
+ const updates = {};
127
+ if (params.name !== undefined)
128
+ updates.name = params.name;
129
+ if (params.color !== undefined) {
130
+ const colorParse = LabelColorSchema.safeParse(params.color);
131
+ if (!colorParse.success) {
132
+ return {
133
+ content: [
134
+ {
135
+ type: "text",
136
+ text: `Error: Invalid color '${params.color}'. Valid colors: ${validColors}`,
137
+ },
138
+ ],
139
+ isError: true,
140
+ };
141
+ }
142
+ updates.color = colorParse.data;
143
+ }
144
+ const label = await updateLabel(params.labelId, updates);
145
+ return {
146
+ content: [
147
+ {
148
+ type: "text",
149
+ text: JSON.stringify({
150
+ success: true,
151
+ label: {
152
+ id: label.id,
153
+ name: label.name,
154
+ color: label.color,
155
+ },
156
+ }, null, 2),
157
+ },
158
+ ],
159
+ };
160
+ }
161
+ case "delete": {
162
+ if (!params.labelId) {
163
+ return {
164
+ content: [
165
+ {
166
+ type: "text",
167
+ text: "Error: labelId is required for delete action",
168
+ },
169
+ ],
170
+ isError: true,
171
+ };
172
+ }
173
+ await deleteLabel(params.labelId);
174
+ return {
175
+ content: [
176
+ {
177
+ type: "text",
178
+ text: JSON.stringify({
179
+ success: true,
180
+ message: `Label ${params.labelId} deleted`,
181
+ }, null, 2),
182
+ },
183
+ ],
184
+ };
185
+ }
186
+ default:
187
+ return {
188
+ content: [
189
+ {
190
+ type: "text",
191
+ text: `Error: Unknown action '${params.action}'`,
192
+ },
193
+ ],
194
+ isError: true,
195
+ };
196
+ }
197
+ }
198
+ catch (error) {
199
+ if (error instanceof PlankaError) {
200
+ return {
201
+ content: [{ type: "text", text: `Error: ${error.message}` }],
202
+ isError: true,
203
+ };
204
+ }
205
+ throw error;
206
+ }
207
+ },
208
+ };
209
+ /**
210
+ * Tool: planka_set_card_labels
211
+ * Add or remove labels from a card.
212
+ */
213
+ export const setCardLabelsTool = {
214
+ name: "planka_set_card_labels",
215
+ description: "Add or remove labels from a card.",
216
+ inputSchema: {
217
+ type: "object",
218
+ properties: {
219
+ cardId: {
220
+ type: "string",
221
+ description: "The card ID",
222
+ },
223
+ addLabelIds: {
224
+ type: "array",
225
+ items: { type: "string" },
226
+ description: "Label IDs to add",
227
+ },
228
+ removeLabelIds: {
229
+ type: "array",
230
+ items: { type: "string" },
231
+ description: "Label IDs to remove",
232
+ },
233
+ },
234
+ required: ["cardId"],
235
+ },
236
+ handler: async (params) => {
237
+ try {
238
+ await setCardLabels(params.cardId, params.addLabelIds, params.removeLabelIds);
239
+ return {
240
+ content: [
241
+ {
242
+ type: "text",
243
+ text: JSON.stringify({
244
+ success: true,
245
+ cardId: params.cardId,
246
+ labelsAdded: params.addLabelIds?.length || 0,
247
+ labelsRemoved: params.removeLabelIds?.length || 0,
248
+ }, null, 2),
249
+ },
250
+ ],
251
+ };
252
+ }
253
+ catch (error) {
254
+ if (error instanceof PlankaError) {
255
+ return {
256
+ content: [{ type: "text", text: `Error: ${error.message}` }],
257
+ isError: true,
258
+ };
259
+ }
260
+ throw error;
261
+ }
262
+ },
263
+ };
264
+ export const labelTools = [manageLabelsTool, setCardLabelsTool];
265
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/tools/labels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Tool: planka_manage_lists
3
+ * Create, update, or delete lists on a board.
4
+ */
5
+ export declare const manageListsTool: {
6
+ name: string;
7
+ description: string;
8
+ inputSchema: {
9
+ type: "object";
10
+ properties: {
11
+ action: {
12
+ type: string;
13
+ enum: string[];
14
+ description: string;
15
+ };
16
+ boardId: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ listId: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ name: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ position: {
29
+ type: string;
30
+ description: string;
31
+ };
32
+ type: {
33
+ type: string;
34
+ enum: string[];
35
+ description: string;
36
+ };
37
+ };
38
+ required: string[];
39
+ };
40
+ handler: (params: {
41
+ action: "create" | "update" | "delete";
42
+ boardId?: string;
43
+ listId?: string;
44
+ name?: string;
45
+ position?: number;
46
+ type?: "active" | "closed" | "archive" | "trash";
47
+ }) => Promise<{
48
+ content: {
49
+ type: "text";
50
+ text: string;
51
+ }[];
52
+ isError: boolean;
53
+ } | {
54
+ content: {
55
+ type: "text";
56
+ text: string;
57
+ }[];
58
+ isError?: undefined;
59
+ }>;
60
+ };
61
+ export declare const listTools: {
62
+ name: string;
63
+ description: string;
64
+ inputSchema: {
65
+ type: "object";
66
+ properties: {
67
+ action: {
68
+ type: string;
69
+ enum: string[];
70
+ description: string;
71
+ };
72
+ boardId: {
73
+ type: string;
74
+ description: string;
75
+ };
76
+ listId: {
77
+ type: string;
78
+ description: string;
79
+ };
80
+ name: {
81
+ type: string;
82
+ description: string;
83
+ };
84
+ position: {
85
+ type: string;
86
+ description: string;
87
+ };
88
+ type: {
89
+ type: string;
90
+ enum: string[];
91
+ description: string;
92
+ };
93
+ };
94
+ required: string[];
95
+ };
96
+ handler: (params: {
97
+ action: "create" | "update" | "delete";
98
+ boardId?: string;
99
+ listId?: string;
100
+ name?: string;
101
+ position?: number;
102
+ type?: "active" | "closed" | "archive" | "trash";
103
+ }) => Promise<{
104
+ content: {
105
+ type: "text";
106
+ text: string;
107
+ }[];
108
+ isError: boolean;
109
+ } | {
110
+ content: {
111
+ type: "text";
112
+ text: string;
113
+ }[];
114
+ isError?: undefined;
115
+ }>;
116
+ }[];
117
+ //# sourceMappingURL=lists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../src/tools/lists.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAoCF;QACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;KAClD;;;;;;;;;;;;;CAsJF,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA/JI;QACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACvC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;KAClD;;;;;;;;;;;;;GAwJuC,CAAC"}