Skip to main content
Glama

get_post

Retrieve detailed information about a specific customer feedback post from Canny.io using the post ID to access comprehensive feedback data.

Instructions

Get detailed information about a specific Canny post

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
postIdYesID of the post to retrieve

Implementation Reference

  • Core implementation of the 'get_post' tool, including name, description, input schema, and handler function that validates input, calls the Canny API client, handles errors, and returns formatted post details.
    export const getPostTool = { name: 'get_post', description: 'Get detailed information about a specific Canny post', inputSchema: { type: 'object', properties: { postId: { type: 'string', description: 'ID of the post to retrieve' }, }, required: ['postId'], additionalProperties: false, }, handler: async (args: unknown, client: CannyClient) => { const { postId } = validateToolInput<GetPostInput>(args, GetPostSchema); const response = await client.getPost(postId); if (response.error) { throw new Error(`Failed to fetch post: ${response.error}`); } if (!response.data) { return `Post with ID ${postId} not found.`; } const post = response.data; return `**${post.title}**\n` + `ID: ${post.id}\n` + `Status: ${post.status}\n` + `Author: ${post.author.name} (${post.author.email || 'No email'})\n` + `Board: ${post.board.name}\n` + `Category: ${post.category?.name || 'None'}\n` + `Votes: ${post.votes} | Score: ${post.score}\n` + `Tags: ${post.tags.length > 0 ? post.tags.map(tag => tag.name).join(', ') : 'None'}\n` + `Created: ${new Date(post.createdAt).toLocaleString()}\n` + `Updated: ${new Date(post.updatedAt).toLocaleString()}\n` + `URL: ${post.url}\n\n` + `**Details:**\n${post.details || 'No description provided'}`; }, };
  • Zod validation schema for get_post tool input parameters.
    const GetPostSchema = z.object({ postId: z.string().min(1, 'Post ID is required'), });
  • Registration of all tools including getPostTool in the main tools export array used for MCP tool discovery.
    export const tools: Tool[] = [ // Board management getBoardsTool, // Post management getPostsTool, getPostTool, searchPostsTool, createPostTool, updatePostTool, // Extended functionality - temporarily disabled for debugging // getCategoresTool, // getCommentsTool, // getUsersTool, // getTagsTool, ];
  • CannyClient method invoked by the get_post handler to retrieve post data from the Canny API.
    async getPost(postId: string): Promise<CannyApiResponse<CannyPost>> { return this.makeRequest<CannyPost>({ method: 'GET', url: '/posts/retrieve', params: { id: postId }, }); }
  • src/tools/index.ts:3-9 (registration)
    Import statement that brings getPostTool into the index for registration.
    import { getPostsTool, getPostTool, searchPostsTool, createPostTool, updatePostTool } from './posts.js';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/itsocialist/canny-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server