configureApi
Set up HTTP API endpoints for Spline 3D scenes to fetch data and map responses to scene variables for dynamic content integration.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sceneId | Yes | Scene ID | |
| name | Yes | API name | |
| method | Yes | HTTP method | |
| url | Yes | API endpoint URL | |
| headers | No | HTTP headers | |
| body | No | Request body (for POST, PUT, PATCH) | |
| queryParams | No | URL query parameters | |
| requestOnStart | No | Whether to call API when scene loads | |
| variableMappings | No | Mappings from API response to Spline variables |
Implementation Reference
- src/tools/api-webhook-tools.js:30-75 (handler)Main execution handler for the 'configureApi' tool. Parses inputs, constructs API configuration object, calls the apiClient helper, and formats MCP response.async ({ sceneId, name, method, url, headers, body, queryParams, requestOnStart, variableMappings }) => { try { const apiConfig = { name, method, url, ...(headers && { headers }), ...(body && { body }), ...(queryParams && { queryParams }), requestOnStart: requestOnStart || false, ...(variableMappings && { variableMappings }), }; const result = await apiClient.configureApi(sceneId, apiConfig); return { content: [ { type: 'text', text: `API connection configured successfully with ID: ${result.id}` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error configuring API: ${error.message}` } ], isError: true }; } } );
- src/tools/api-webhook-tools.js:13-29 (schema)Zod input schema validating parameters for the configureApi tool including sceneId, name, method, url, optional headers/body/queryParams/requestOnStart/variableMappings.{ sceneId: z.string().min(1).describe('Scene ID'), name: z.string().min(1).describe('API name'), method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'PATCH']) .describe('HTTP method'), url: z.string().url().describe('API endpoint URL'), headers: z.record(z.string()).optional().describe('HTTP headers'), body: z.record(z.any()).optional().describe('Request body (for POST, PUT, PATCH)'), queryParams: z.record(z.string()).optional().describe('URL query parameters'), requestOnStart: z.boolean().optional().default(false) .describe('Whether to call API when scene loads'), variableMappings: z.array(z.object({ responseField: z.string().describe('Field from API response'), variableName: z.string().describe('Spline variable name'), variableType: z.enum(['string', 'number', 'boolean']).describe('Variable type'), })).optional().describe('Mappings from API response to Spline variables'), },
- src/tools/api-webhook-tools.js:11-75 (registration)MCP tool registration via server.tool('configureApi', schema, handler) within registerApiWebhookTools function.server.tool( 'configureApi', { sceneId: z.string().min(1).describe('Scene ID'), name: z.string().min(1).describe('API name'), method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'PATCH']) .describe('HTTP method'), url: z.string().url().describe('API endpoint URL'), headers: z.record(z.string()).optional().describe('HTTP headers'), body: z.record(z.any()).optional().describe('Request body (for POST, PUT, PATCH)'), queryParams: z.record(z.string()).optional().describe('URL query parameters'), requestOnStart: z.boolean().optional().default(false) .describe('Whether to call API when scene loads'), variableMappings: z.array(z.object({ responseField: z.string().describe('Field from API response'), variableName: z.string().describe('Spline variable name'), variableType: z.enum(['string', 'number', 'boolean']).describe('Variable type'), })).optional().describe('Mappings from API response to Spline variables'), }, async ({ sceneId, name, method, url, headers, body, queryParams, requestOnStart, variableMappings }) => { try { const apiConfig = { name, method, url, ...(headers && { headers }), ...(body && { body }), ...(queryParams && { queryParams }), requestOnStart: requestOnStart || false, ...(variableMappings && { variableMappings }), }; const result = await apiClient.configureApi(sceneId, apiConfig); return { content: [ { type: 'text', text: `API connection configured successfully with ID: ${result.id}` } ] }; } catch (error) { return { content: [ { type: 'text', text: `Error configuring API: ${error.message}` } ], isError: true }; } } );
- src/utils/api-client.js:243-245 (helper)Supporting method in SplineApiClient that sends POST request to Spline API endpoint /scenes/{sceneId}/apis to configure the API connection.async configureApi(sceneId, apiConfig) { return this.request('POST', `/scenes/${sceneId}/apis`, apiConfig); }
- src/index.js:91-91 (registration)Top-level call in main server setup that invokes registerApiWebhookTools(server), thereby registering the configureApi tool.registerApiWebhookTools(server);