@paperclipai/mcp-server 2026.824.1 → 2026.825.0-beta.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.
package/dist/tools.d.ts CHANGED
@@ -3,7 +3,7 @@ import { PaperclipApiClient } from "./client.js";
3
3
  export interface ToolDefinition {
4
4
  name: string;
5
5
  description: string;
6
- schema: z.AnyZodObject;
6
+ schema: z.ZodObject;
7
7
  execute: (input: Record<string, unknown>) => Promise<{
8
8
  content: Array<{
9
9
  type: "text";
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC,CAAC;CACJ;AAmND,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,EAAE,CA6YlF"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChD,CAAC,CAAC;CACJ;AAmND,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,EAAE,CA6YlF"}
package/dist/tools.js CHANGED
@@ -22,25 +22,25 @@ function parseOptionalJson(raw) {
22
22
  return undefined;
23
23
  return JSON.parse(raw);
24
24
  }
25
- const companyIdOptional = z.string().uuid().optional().nullable();
26
- const agentIdOptional = z.string().uuid().optional().nullable();
25
+ const companyIdOptional = z.string().guid().optional().nullable();
26
+ const agentIdOptional = z.string().guid().optional().nullable();
27
27
  const issueIdSchema = z.string().min(1);
28
28
  const projectIdSchema = z.string().min(1);
29
- const goalIdSchema = z.string().uuid();
30
- const approvalIdSchema = z.string().uuid();
29
+ const goalIdSchema = z.string().guid();
30
+ const approvalIdSchema = z.string().guid();
31
31
  const documentKeySchema = z.string().trim().min(1).max(64);
32
32
  const listIssuesSchema = z.object({
33
33
  companyId: companyIdOptional,
34
34
  status: z.string().optional(),
35
- projectId: z.string().uuid().optional(),
36
- assigneeAgentId: z.string().uuid().optional(),
37
- participantAgentId: z.string().uuid().optional(),
35
+ projectId: z.string().guid().optional(),
36
+ assigneeAgentId: z.string().guid().optional(),
37
+ participantAgentId: z.string().guid().optional(),
38
38
  assigneeUserId: z.string().optional(),
39
39
  touchedByUserId: z.string().optional(),
40
40
  inboxArchivedByUserId: z.string().optional(),
41
41
  unreadForUserId: z.string().optional(),
42
- labelId: z.string().uuid().optional(),
43
- executionWorkspaceId: z.string().uuid().optional(),
42
+ labelId: z.string().guid().optional(),
43
+ executionWorkspaceId: z.string().guid().optional(),
44
44
  originKind: z.string().optional(),
45
45
  originId: z.string().optional(),
46
46
  includeRoutineExecutions: z.boolean().optional(),
@@ -49,7 +49,7 @@ const listIssuesSchema = z.object({
49
49
  });
50
50
  const listCommentsSchema = z.object({
51
51
  issueId: issueIdSchema,
52
- after: z.string().uuid().optional(),
52
+ after: z.string().guid().optional(),
53
53
  order: z.enum(["asc", "desc"]).optional(),
54
54
  limit: z.number().int().positive().max(500).optional(),
55
55
  });
@@ -60,7 +60,7 @@ const upsertDocumentToolSchema = z.object({
60
60
  format: z.enum(["markdown"]).default("markdown"),
61
61
  body: z.string().max(524288),
62
62
  changeSummary: z.string().trim().max(500).nullable().optional(),
63
- baseRevisionId: z.string().uuid().nullable().optional(),
63
+ baseRevisionId: z.string().guid().nullable().optional(),
64
64
  });
65
65
  const createIssueToolSchema = z.object({
66
66
  companyId: companyIdOptional,
@@ -79,8 +79,8 @@ const addCommentToolSchema = z.object({
79
79
  const createSuggestTasksToolSchema = z.object({
80
80
  issueId: issueIdSchema,
81
81
  idempotencyKey: z.string().trim().max(255).nullable().optional(),
82
- sourceCommentId: z.string().uuid().nullable().optional(),
83
- sourceRunId: z.string().uuid().nullable().optional(),
82
+ sourceCommentId: z.string().guid().nullable().optional(),
83
+ sourceRunId: z.string().guid().nullable().optional(),
84
84
  title: z.string().trim().max(240).nullable().optional(),
85
85
  summary: z.string().trim().max(1000).nullable().optional(),
86
86
  continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("wake_assignee"),
@@ -89,8 +89,8 @@ const createSuggestTasksToolSchema = z.object({
89
89
  const createAskUserQuestionsToolSchema = z.object({
90
90
  issueId: issueIdSchema,
91
91
  idempotencyKey: z.string().trim().max(255).nullable().optional(),
92
- sourceCommentId: z.string().uuid().nullable().optional(),
93
- sourceRunId: z.string().uuid().nullable().optional(),
92
+ sourceCommentId: z.string().guid().nullable().optional(),
93
+ sourceRunId: z.string().guid().nullable().optional(),
94
94
  title: z.string().trim().max(240).nullable().optional(),
95
95
  summary: z.string().trim().max(1000).nullable().optional(),
96
96
  continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("wake_assignee"),
@@ -99,8 +99,8 @@ const createAskUserQuestionsToolSchema = z.object({
99
99
  const createRequestConfirmationToolSchema = z.object({
100
100
  issueId: issueIdSchema,
101
101
  idempotencyKey: z.string().trim().max(255).nullable().optional(),
102
- sourceCommentId: z.string().uuid().nullable().optional(),
103
- sourceRunId: z.string().uuid().nullable().optional(),
102
+ sourceCommentId: z.string().guid().nullable().optional(),
103
+ sourceRunId: z.string().guid().nullable().optional(),
104
104
  title: z.string().trim().max(240).nullable().optional(),
105
105
  summary: z.string().trim().max(1000).nullable().optional(),
106
106
  continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("none"),
@@ -109,8 +109,8 @@ const createRequestConfirmationToolSchema = z.object({
109
109
  const createRequestCheckboxConfirmationToolSchema = z.object({
110
110
  issueId: issueIdSchema,
111
111
  idempotencyKey: z.string().trim().max(255).nullable().optional(),
112
- sourceCommentId: z.string().uuid().nullable().optional(),
113
- sourceRunId: z.string().uuid().nullable().optional(),
112
+ sourceCommentId: z.string().guid().nullable().optional(),
113
+ sourceRunId: z.string().guid().nullable().optional(),
114
114
  title: z.string().trim().max(240).nullable().optional(),
115
115
  summary: z.string().trim().max(1000).nullable().optional(),
116
116
  continuationPolicy: issueThreadInteractionContinuationPolicySchema.optional().default("wake_assignee"),
@@ -132,7 +132,7 @@ const apiRequestSchema = z.object({
132
132
  });
133
133
  const workspaceRuntimeControlTargetSchema = z.object({
134
134
  workspaceCommandId: z.string().min(1).optional().nullable(),
135
- runtimeServiceId: z.string().uuid().optional().nullable(),
135
+ runtimeServiceId: z.string().guid().optional().nullable(),
136
136
  serviceIndex: z.number().int().nonnegative().optional().nullable(),
137
137
  });
138
138
  const issueWorkspaceRuntimeControlSchema = z.object({
@@ -141,7 +141,7 @@ const issueWorkspaceRuntimeControlSchema = z.object({
141
141
  }).merge(workspaceRuntimeControlTargetSchema);
142
142
  const waitForIssueWorkspaceServiceSchema = z.object({
143
143
  issueId: issueIdSchema,
144
- runtimeServiceId: z.string().uuid().optional().nullable(),
144
+ runtimeServiceId: z.string().guid().optional().nullable(),
145
145
  serviceName: z.string().min(1).optional().nullable(),
146
146
  timeoutSeconds: z.number().int().positive().max(300).optional(),
147
147
  });
@@ -201,7 +201,7 @@ export function createToolDefinitions(client) {
201
201
  return client.requestJson("GET", `/companies/${companyId}/issues${qs ? `?${qs}` : ""}`);
202
202
  }),
203
203
  makeTool("paperclipGetIssue", "Get a single issue by UUID or identifier", z.object({ issueId: issueIdSchema }), async ({ issueId }) => client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}`)),
204
- makeTool("paperclipGetHeartbeatContext", "Get compact heartbeat context for an issue", z.object({ issueId: issueIdSchema, wakeCommentId: z.string().uuid().optional() }), async ({ issueId, wakeCommentId }) => {
204
+ makeTool("paperclipGetHeartbeatContext", "Get compact heartbeat context for an issue", z.object({ issueId: issueIdSchema, wakeCommentId: z.string().guid().optional() }), async ({ issueId, wakeCommentId }) => {
205
205
  const qs = wakeCommentId ? `?wakeCommentId=${encodeURIComponent(wakeCommentId)}` : "";
206
206
  return client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/heartbeat-context${qs}`);
207
207
  }),
@@ -216,7 +216,7 @@ export function createToolDefinitions(client) {
216
216
  const qs = params.toString();
217
217
  return client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/comments${qs ? `?${qs}` : ""}`);
218
218
  }),
219
- makeTool("paperclipGetComment", "Get a specific issue comment by id", z.object({ issueId: issueIdSchema, commentId: z.string().uuid() }), async ({ issueId, commentId }) => client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/comments/${encodeURIComponent(commentId)}`)),
219
+ makeTool("paperclipGetComment", "Get a specific issue comment by id", z.object({ issueId: issueIdSchema, commentId: z.string().guid() }), async ({ issueId, commentId }) => client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/comments/${encodeURIComponent(commentId)}`)),
220
220
  makeTool("paperclipListIssueApprovals", "List approvals linked to an issue", z.object({ issueId: issueIdSchema }), async ({ issueId }) => client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/approvals`)),
221
221
  makeTool("paperclipListDocuments", "List issue documents", z.object({ issueId: issueIdSchema }), async ({ issueId }) => client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/documents`)),
222
222
  makeTool("paperclipGetDocument", "Get one issue document by key", z.object({ issueId: issueIdSchema, key: documentKeySchema }), async ({ issueId, key }) => client.requestJson("GET", `/issues/${encodeURIComponent(issueId)}/documents/${encodeURIComponent(key)}`)),
@@ -305,7 +305,7 @@ export function createToolDefinitions(client) {
305
305
  makeTool("paperclipRestoreIssueDocumentRevision", "Restore a prior revision of an issue document", z.object({
306
306
  issueId: issueIdSchema,
307
307
  key: documentKeySchema,
308
- revisionId: z.string().uuid(),
308
+ revisionId: z.string().guid(),
309
309
  }), async ({ issueId, key, revisionId }) => client.requestJson("POST", `/issues/${encodeURIComponent(issueId)}/documents/${encodeURIComponent(key)}/revisions/${encodeURIComponent(revisionId)}/restore`, { body: {} })),
310
310
  makeTool("paperclipLinkIssueApproval", "Link an approval to an issue", z.object({ issueId: issueIdSchema }).merge(linkIssueApprovalSchema), async ({ issueId, approvalId }) => client.requestJson("POST", `/issues/${encodeURIComponent(issueId)}/approvals`, {
311
311
  body: { approvalId },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paperclipai/mcp-server",
3
- "version": "2026.824.1",
3
+ "version": "2026.825.0-beta.1",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/paperclipai/paperclip",
6
6
  "bugs": {
@@ -30,14 +30,17 @@
30
30
  ],
31
31
  "dependencies": {
32
32
  "@modelcontextprotocol/sdk": "^1.30.0",
33
- "@paperclipai/shared": "2026.824.1",
34
- "zod": "^3.24.2"
33
+ "@paperclipai/shared": "2026.825.0-beta.1",
34
+ "zod": "^4.4.3"
35
35
  },
36
36
  "devDependencies": {
37
- "@types/node": "^22.20.1",
37
+ "@types/node": "^24.0.0",
38
38
  "typescript": "^5.7.3",
39
39
  "vitest": "^4.1.10"
40
40
  },
41
+ "engines": {
42
+ "node": ">=24.11.0"
43
+ },
41
44
  "scripts": {
42
45
  "build": "tsc",
43
46
  "clean": "rm -rf dist",