create-epic
Generate a new epic in Shortcut by specifying its name, owner, description, and team ID, simplifying project management and task organization.
Instructions
Create a new Shortcut epic.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | A description of the epic | |
| name | Yes | The name of the epic | |
| owner | No | The user ID of the owner of the epic | |
| teamId | No | The ID of a team to assign the epic to |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "A description of the epic",
"type": "string"
},
"name": {
"description": "The name of the epic",
"type": "string"
},
"owner": {
"description": "The user ID of the owner of the epic",
"type": "string"
},
"teamId": {
"description": "The ID of a team to assign the epic to",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
Implementation Reference
- src/tools/epics.ts:79-90 (registration)Registration of the "epics-create" MCP tool, including description, input schema, and handler reference.server.addToolWithWriteAccess( "epics-create", "Create a new Shortcut epic.", { name: z.string().describe("The name of the epic"), owner: z.string().optional().describe("The user ID of the owner of the epic"), description: z.string().optional().describe("A description of the epic"), teamId: z.string().optional().describe("The ID of a team to assign the epic to"), }, async (params) => await tools.createEpic(params), );
- src/tools/epics.ts:120-140 (handler)Handler function that executes the epic creation logic using the ShortcutClientWrapper.async createEpic({ name, owner, teamId: group_id, description, }: { name: string; owner?: string; teamId?: string; description?: string; }): Promise<CallToolResult> { const epic = await this.client.createEpic({ name, group_id, owner_ids: owner ? [owner] : undefined, description, }); return this.toResult(`Epic created with ID: ${epic.id}.`); } }
- src/tools/epics.ts:82-87 (schema)Input schema (Zod) for the create epic tool parameters.{ name: z.string().describe("The name of the epic"), owner: z.string().optional().describe("The user ID of the owner of the epic"), description: z.string().optional().describe("A description of the epic"), teamId: z.string().optional().describe("The ID of a team to assign the epic to"), },
- src/server.ts:49-49 (registration)Invocation of EpicTools.create which sets up and registers all epic tools including the create tool.EpicTools.create(client, server);
- src/client/shortcut.ts:412-419 (helper)ShortcutClientWrapper's createEpic helper method called by the tool handler.async createEpic(params: CreateEpic): Promise<Epic> { const response = await this.client.createEpic(params); const epic = response?.data ?? null; if (!epic) throw new Error(`Failed to create the epic: ${response.status}`); return epic; }