create_query_snippet
Create a reusable SQL snippet by defining a trigger keyword and content, enabling quick insertion of common query parts.
Instructions
Create a new reusable query snippet
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| trigger | Yes | Trigger keyword for the snippet | |
| description | No | Description of the snippet | |
| snippet | Yes | The SQL snippet content |
Implementation Reference
- src/index.ts:1430-1448 (handler)The main handler function for the create_query_snippet tool. It validates input using createQuerySnippetSchema, constructs a CreateQuerySnippetRequest, calls redashClient.createQuerySnippet(), and returns the result as JSON text content.
async function createQuerySnippet(params: z.infer<typeof createQuerySnippetSchema>) { try { const snippetData: CreateQuerySnippetRequest = { trigger: params.trigger, description: params.description, snippet: params.snippet }; const result = await redashClient.createQuerySnippet(snippetData); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { logger.error(`Error creating query snippet: ${error}`); return { isError: true, content: [{ type: "text", text: `Error creating query snippet: ${error instanceof Error ? error.message : String(error)}` }] }; } } - src/index.ts:1424-1428 (schema)Zod schema for create_query_snippet input validation. Defines required fields: trigger (string) and snippet (string), plus optional description (string).
const createQuerySnippetSchema = z.object({ trigger: z.string(), description: z.string().optional(), snippet: z.string() }); - src/index.ts:2242-2254 (registration)Registration of create_query_snippet in the ListToolsRequestSchema handler. Defines the tool name, description, and inputSchema for the MCP protocol.
{ name: "create_query_snippet", description: "Create a new reusable query snippet", inputSchema: { type: "object", properties: { trigger: { type: "string", description: "Trigger keyword for the snippet" }, description: { type: "string", description: "Description of the snippet" }, snippet: { type: "string", description: "The SQL snippet content" } }, required: ["trigger", "snippet"] } }, - src/redashClient.ts:1187-1195 (helper)The Redash API client method that makes the HTTP POST request to /api/query_snippets to create a query snippet. Accepts CreateQuerySnippetRequest data and returns a RedashQuerySnippet.
async createQuerySnippet(data: CreateQuerySnippetRequest): Promise<RedashQuerySnippet> { try { const response = await this.client.post('/api/query_snippets', data); return response.data; } catch (error) { logger.error(`Error creating query snippet: ${error}`); throw new Error(`Failed to create query snippet: ${error instanceof Error ? error.message : String(error)}`); } } - src/index.ts:2542-2544 (registration)Dispatch routing in CallToolRequestSchema handler for create_query_snippet. Routes the 'create_query_snippet' tool call to the createQuerySnippet handler function with schema validation.
case "create_query_snippet": logger.debug(`Handling create_query_snippet`); return await createQuerySnippet(createQuerySnippetSchema.parse(args));