Submit Feedback
vitrine_feedbackSubmit bug reports or feature requests for Vitrine. Automatically creates a GitHub issue from your feedback.
Instructions
Submit a bug report or feature request. Creates a GitHub issue automatically.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Feedback type | |
| message | Yes | Description of the bug or feature request | |
| page | No | Which page/area this relates to |
Implementation Reference
- src/tools/feedback.ts:17-22 (handler)The tool handler that calls client.submitFeedback() and returns success/error text content.
async ({ type, message, page }) => { const res = await client.submitFeedback(type, message, page); if (!res.ok) return { content: [{ type: "text", text: `Error: ${res.data?.message ?? res.status}` }], isError: true }; return { content: [{ type: "text", text: "Feedback submitted. A GitHub issue has been created." }] }; }, ); - src/tools/feedback.ts:8-15 (schema)Input schema definition for vitrine_feedback: type (enum: bug/feature/other), message (string), page (optional string).
{ title: "Submit Feedback", description: "Submit a bug report or feature request. Creates a GitHub issue automatically.", inputSchema: z.object({ type: z.enum(["bug", "feature", "other"]).describe("Feedback type"), message: z.string().describe("Description of the bug or feature request"), page: z.string().optional().describe("Which page/area this relates to"), }), - src/tools/feedback.ts:5-23 (registration)The registerFeedbackTools function that calls server.registerTool() with the name 'vitrine_feedback'.
export function registerFeedbackTools(server: McpServer, client: VitrineClient) { server.registerTool( "vitrine_feedback", { title: "Submit Feedback", description: "Submit a bug report or feature request. Creates a GitHub issue automatically.", inputSchema: z.object({ type: z.enum(["bug", "feature", "other"]).describe("Feedback type"), message: z.string().describe("Description of the bug or feature request"), page: z.string().optional().describe("Which page/area this relates to"), }), }, async ({ type, message, page }) => { const res = await client.submitFeedback(type, message, page); if (!res.ok) return { content: [{ type: "text", text: `Error: ${res.data?.message ?? res.status}` }], isError: true }; return { content: [{ type: "text", text: "Feedback submitted. A GitHub issue has been created." }] }; }, ); } - src/index.ts:43-43 (registration)Where registerFeedbackTools is called to wire up the tool on the MCP server.
registerFeedbackTools(server, client); - src/client.ts:125-127 (helper)VitrineClient.submitFeedback() helper method that POSTs to /v1/feedback with type, message, page, and optional meta.
submitFeedback(type: string, message: string, page?: string, meta?: Record<string, unknown>) { return this.request("POST", "/v1/feedback", { type, message, page, meta }); }