createEvent
Create interactive events in 3D scenes to trigger actions like animations, property changes, and function calls based on user interactions or scene conditions.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sceneId | Yes | Scene ID | |
| name | Yes | Event name | |
| type | Yes | Event type | |
| objectId | No | Object ID (if object-specific event) | |
| actions | Yes | Actions to perform when event is triggered |
Implementation Reference
- src/tools/state-event-tools.js:239-269 (handler)Executes the creation of a new event by preparing event data and making a POST request to the Spline API endpoint `/scenes/${sceneId}/events`. Returns formatted success or error response.async ({ sceneId, name, type, objectId, actions }) => { try { const eventData = { name, type, ...(objectId && { objectId }), actions, }; const result = await apiClient.request('POST', `/scenes/${sceneId}/events`, eventData); return { content: [ { type: 'text', text: `Event created successfully with ID: ${result.id}` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error creating event: ${error.message}` } ], isError: true }; } }
- Input schema using Zod for validating parameters: sceneId (required), name (required), type (enum of event types), objectId (optional), actions (array of action objects).{ sceneId: z.string().min(1).describe('Scene ID'), name: z.string().min(1).describe('Event name'), type: z.enum([ 'mouseDown', 'mouseUp', 'mouseOver', 'mouseOut', 'mouseMove', 'touchStart', 'touchEnd', 'touchMove', 'keyDown', 'keyUp', 'collision', 'sceneStart', 'custom' ]).describe('Event type'), objectId: z.string().optional().describe('Object ID (if object-specific event)'), actions: z.array(z.object({ type: z.enum([ 'triggerState', 'setProperty', 'playAnimation', 'callFunction', 'triggerEvent', 'setVariable' ]).describe('Action type'), target: z.string().optional().describe('Target ID (object, state, etc.)'), params: z.record(z.any()).optional().describe('Action parameters'), })).min(1).describe('Actions to perform when event is triggered'), },
- src/tools/state-event-tools.js:218-270 (registration)Registers the 'createEvent' tool on the MCP server within the registerStateEventTools function.server.tool( 'createEvent', { sceneId: z.string().min(1).describe('Scene ID'), name: z.string().min(1).describe('Event name'), type: z.enum([ 'mouseDown', 'mouseUp', 'mouseOver', 'mouseOut', 'mouseMove', 'touchStart', 'touchEnd', 'touchMove', 'keyDown', 'keyUp', 'collision', 'sceneStart', 'custom' ]).describe('Event type'), objectId: z.string().optional().describe('Object ID (if object-specific event)'), actions: z.array(z.object({ type: z.enum([ 'triggerState', 'setProperty', 'playAnimation', 'callFunction', 'triggerEvent', 'setVariable' ]).describe('Action type'), target: z.string().optional().describe('Target ID (object, state, etc.)'), params: z.record(z.any()).optional().describe('Action parameters'), })).min(1).describe('Actions to perform when event is triggered'), }, async ({ sceneId, name, type, objectId, actions }) => { try { const eventData = { name, type, ...(objectId && { objectId }), actions, }; const result = await apiClient.request('POST', `/scenes/${sceneId}/events`, eventData); return { content: [ { type: 'text', text: `Event created successfully with ID: ${result.id}` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error creating event: ${error.message}` } ], isError: true }; } } );
- src/index.js:90-90 (registration)Calls registerStateEventTools(server) to register all state and event tools, including createEvent.registerStateEventTools(server);