create_visualization
Creates a new visualization for a given query, enabling visual representation of query results with configurable types and options.
Instructions
Create a new visualization for a query
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query_id | Yes | ID of the query to create visualization for | |
| type | Yes | Type of visualization. Available types depend on your Redash instance. Use get_query to see existing visualization types in use. | |
| name | Yes | Name of the visualization | |
| description | No | Description of the visualization | |
| options | Yes | Visualization-specific configuration. The structure depends on your Redash instance and visualization type. Use get_visualization to examine existing visualizations of the same type as a reference. |
Implementation Reference
- src/index.ts:513-545 (handler)Handler function for create_visualization tool. Validates inputs via Zod schema, constructs a CreateVisualizationRequest, calls redashClient.createVisualization(), and returns the result.
async function createVisualization(params: z.infer<typeof createVisualizationSchema>) { try { const visualizationData: CreateVisualizationRequest = { query_id: params.query_id, type: params.type, name: params.name, description: params.description, options: params.options }; const result = await redashClient.createVisualization(visualizationData); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { console.error('Error creating visualization:', error); return { isError: true, content: [ { type: "text", text: `Error creating visualization: ${error instanceof Error ? error.message : String(error)}` } ] }; } } - src/index.ts:505-511 (schema)Zod schema defining input validation for create_visualization: requires query_id (number), type (string), name (string), options (any), optional description (string).
const createVisualizationSchema = z.object({ query_id: z.coerce.number(), type: z.string(), name: z.string(), description: z.string().optional(), options: z.any() }); - src/index.ts:1769-1782 (registration)Registration of the 'create_visualization' tool in the ListToolsRequestSchema handler, defining its name, description, and inputSchema.
name: "create_visualization", description: "Create a new visualization for a query", inputSchema: { type: "object", properties: { query_id: { type: "number", description: "ID of the query to create visualization for" }, type: { type: "string", description: "Type of visualization. Available types depend on your Redash instance. Use get_query to see existing visualization types in use." }, name: { type: "string", description: "Name of the visualization" }, description: { type: "string", description: "Description of the visualization" }, options: { type: "object", description: "Visualization-specific configuration. The structure depends on your Redash instance and visualization type. Use get_visualization to examine existing visualizations of the same type as a reference." } }, required: ["query_id", "type", "name", "options"] } }, - src/redashClient.ts:670-678 (helper)The redashClient.createVisualization() helper function that makes the actual POST request to '/api/visualizations' to create a new visualization.
async createVisualization(data: CreateVisualizationRequest): Promise<RedashVisualization> { try { const response = await this.client.post('/api/visualizations', data); return response.data; } catch (error) { console.error('Error creating visualization:', error); throw new Error('Failed to create visualization'); } } - src/redashClient.ts:57-63 (schema)TypeScript interface CreateVisualizationRequest defining the data structure accepted by the API client.
export interface CreateVisualizationRequest { query_id: number; type: string; name: string; description?: string; options: any; }