From f1bb175584c933934051cb615fd03f16311eb00b Mon Sep 17 00:00:00 2001 From: dotta Date: Mon, 6 Apr 2026 21:25:58 -0500 Subject: [PATCH] feat(mcp): add approval creation tool Co-Authored-By: Paperclip --- packages/mcp-server/src/tools.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/mcp-server/src/tools.ts b/packages/mcp-server/src/tools.ts index cfed2f66..0945541c 100644 --- a/packages/mcp-server/src/tools.ts +++ b/packages/mcp-server/src/tools.ts @@ -2,6 +2,7 @@ import { z } from "zod"; import { addIssueCommentSchema, checkoutIssueSchema, + createApprovalSchema, createIssueSchema, updateIssueSchema, upsertIssueDocumentSchema, @@ -113,6 +114,10 @@ const approvalDecisionSchema = z.object({ payloadJson: z.string().optional(), }); +const createApprovalToolSchema = z.object({ + companyId: companyIdOptional, +}).merge(createApprovalSchema); + const apiRequestSchema = z.object({ method: z.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]), path: z.string().min(1), @@ -263,6 +268,15 @@ export function createToolDefinitions(client: PaperclipApiClient): ToolDefinitio return client.requestJson("GET", `/companies/${client.resolveCompanyId(companyId)}/approvals${qs}`); }, ), + makeTool( + "paperclipCreateApproval", + "Create a board approval request, optionally linked to one or more issues", + createApprovalToolSchema, + async ({ companyId, ...body }) => + client.requestJson("POST", `/companies/${client.resolveCompanyId(companyId)}/approvals`, { + body, + }), + ), makeTool( "paperclipGetApproval", "Get an approval by id",