update_cue_list
Modify cue list names or descriptions in the LacyLights MCP Server by providing the cue list ID and optional new details to ensure accurate and updated lighting design instructions.
Instructions
Update cue list name or description
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cueListId | Yes | Cue list ID to update | |
| description | No | New description for the cue list | |
| name | No | New name for the cue list |
Input Schema (JSON Schema)
{
"properties": {
"cueListId": {
"description": "Cue list ID to update",
"type": "string"
},
"description": {
"description": "New description for the cue list",
"type": "string"
},
"name": {
"description": "New name for the cue list",
"type": "string"
}
},
"required": [
"cueListId"
],
"type": "object"
}
Implementation Reference
- src/tools/cue-tools.ts:802-836 (handler)The core handler function that executes the update_cue_list tool logic by calling the GraphQL client to update the cue list's name, description, or loop setting.async updateCueList(args: { cueListId: string; name?: string; description?: string; loop?: boolean; }) { const { cueListId, name, description, loop } = args; try { if (!name && !description && loop === undefined) { throw new Error( "At least one field (name, description, or loop) must be provided", ); } const updatedCueList = await this.graphqlClient.updateCueList(cueListId, { name, description, loop, }); return { cueListId: updatedCueList.id, cueList: { name: updatedCueList.name, description: updatedCueList.description, loop: updatedCueList.loop, totalCues: updatedCueList.cues.length, }, success: true, }; } catch (error) { throw new Error(`Failed to update cue list: ${error}`); } }
- src/index.ts:1309-1333 (registration)MCP tool registration defining the 'update_cue_list' tool name, description, and input schema.name: "update_cue_list", description: "Update cue list name or description", inputSchema: { type: "object", properties: { cueListId: { type: "string", description: "Cue list ID to update", }, name: { type: "string", description: "New name for the cue list", }, description: { type: "string", description: "New description for the cue list", }, loop: { type: "boolean", description: "Whether to loop the cue list (restart from first cue after last cue finishes)", }, }, required: ["cueListId"], }, },
- src/index.ts:2311-2323 (registration)Dispatch handler in the MCP server that routes 'update_cue_list' calls to the CueTools.updateCueList method.case "update_cue_list": return { content: [ { type: "text", text: JSON.stringify( await this.cueTools.updateCueList(args as any), null, 2, ), }, ], };
- GraphQL client method called by the handler, defining the backend mutation schema and execution.async updateCueList(id: string, input: { name?: string; description?: string; loop?: boolean; }): Promise<CueList> { const mutation = ` mutation UpdateCueList($id: ID!, $input: CreateCueListInput!) { updateCueList(id: $id, input: $input) { id name description loop createdAt updatedAt cues { id name cueNumber fadeInTime fadeOutTime followTime notes scene { id name } } } } `; // Since the backend expects CreateCueListInput which requires projectId, // we need to get the current cue list first to maintain the projectId const cueListQuery = ` query GetCueList($id: ID!) { cueList(id: $id) { id name loop project { id } } } `; const cueListData = await this.query(cueListQuery, { id }); const projectId = cueListData.cueList.project.id; const updateInput = { name: input.name || cueListData.cueList.name, description: input.description, loop: input.loop !== undefined ? input.loop : cueListData.cueList.loop, projectId }; const data = await this.query(mutation, { id, input: updateInput }); return data.updateCueList;