update_cue
Modify properties of a theatrical lighting cue, including name, scene ID, fade timings, and notes, ensuring precise adjustments for LacyLights MCP Server's lighting design.
Instructions
Update properties of an existing cue
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cueId | Yes | ID of the cue to update | |
| cueNumber | No | New cue number | |
| fadeInTime | No | New fade in time in seconds | |
| fadeOutTime | No | New fade out time in seconds | |
| followTime | No | New follow time (null to remove auto-follow) | |
| name | No | New name for the cue | |
| notes | No | New notes or description | |
| sceneId | No | New scene ID |
Input Schema (JSON Schema)
{
"properties": {
"cueId": {
"description": "ID of the cue to update",
"type": "string"
},
"cueNumber": {
"description": "New cue number",
"type": "number"
},
"fadeInTime": {
"description": "New fade in time in seconds",
"type": "number"
},
"fadeOutTime": {
"description": "New fade out time in seconds",
"type": "number"
},
"followTime": {
"description": "New follow time (null to remove auto-follow)",
"type": "number"
},
"name": {
"description": "New name for the cue",
"type": "string"
},
"notes": {
"description": "New notes or description",
"type": "string"
},
"sceneId": {
"description": "New scene ID",
"type": "string"
}
},
"required": [
"cueId"
],
"type": "object"
}
Implementation Reference
- src/tools/cue-tools.ts:939-973 (handler)The main execution handler for the 'update_cue' tool. Parses arguments, calls the GraphQL client to update the cue, formats the response with success indicator and cue details.async updateCue(args: { cueId: string; name?: string; cueNumber?: number; sceneId?: string; fadeInTime?: number; fadeOutTime?: number; followTime?: number | null; notes?: string; }) { const { cueId, ...updateFields } = args; try { const updatedCue = await this.graphqlClient.updateCue( cueId, updateFields, ); return { cueId: updatedCue.id, cue: { name: updatedCue.name, cueNumber: updatedCue.cueNumber, sceneName: updatedCue.scene.name, fadeInTime: updatedCue.fadeInTime, fadeOutTime: updatedCue.fadeOutTime, followTime: updatedCue.followTime, notes: updatedCue.notes, }, success: true, }; } catch (error) { throw new Error(`Failed to update cue: ${error}`); } }
- src/index.ts:1402-1442 (registration)MCP tool registration including name 'update_cue', description, and input schema definition in the list_tools response.name: "update_cue", description: "Update properties of an existing cue", inputSchema: { type: "object", properties: { cueId: { type: "string", description: "ID of the cue to update", }, name: { type: "string", description: "New name for the cue", }, cueNumber: { type: "number", description: "New cue number", }, sceneId: { type: "string", description: "New scene ID", }, fadeInTime: { type: "number", description: "New fade in time in seconds", }, fadeOutTime: { type: "number", description: "New fade out time in seconds", }, followTime: { type: "number", description: "New follow time (null to remove auto-follow)", }, notes: { type: "string", description: "New notes or description", }, }, required: ["cueId"], }, },
- src/index.ts:2353-2365 (registration)Handler dispatch in the CallToolRequestSchema that routes 'update_cue' calls to cueTools.updateCue method.case "update_cue": return { content: [ { type: "text", text: JSON.stringify( await this.cueTools.updateCue(args as any), null, 2, ), }, ], };
- GraphQL client helper method that performs the actual cue update mutation via GraphQL.async updateCue(id: string, input: { name?: string; cueNumber?: number; sceneId?: string; fadeInTime?: number; fadeOutTime?: number; followTime?: number | null; notes?: string; }): Promise<Cue> { const mutation = ` mutation UpdateCue($id: ID!, $input: CreateCueInput!) { updateCue(id: $id, input: $input) { id name cueNumber fadeInTime fadeOutTime followTime notes scene { id name } } } `; // Get current cue to maintain required fields const cueQuery = ` query GetCue($id: ID!) { cue(id: $id) { id name cueNumber cueList { id } scene { id } fadeInTime fadeOutTime followTime notes } } `; const cueData = await this.query(cueQuery, { id }); const currentCue = cueData.cue; const updateInput = { name: input.name ?? currentCue.name, cueNumber: input.cueNumber ?? currentCue.cueNumber, cueListId: currentCue.cueList.id, sceneId: input.sceneId ?? currentCue.scene.id, fadeInTime: input.fadeInTime ?? currentCue.fadeInTime, fadeOutTime: input.fadeOutTime ?? currentCue.fadeOutTime, followTime: input.followTime !== undefined ? input.followTime : currentCue.followTime, notes: input.notes !== undefined ? input.notes : currentCue.notes }; const data = await this.query(mutation, { id, input: updateInput }); return data.updateCue;