# Canny — how to use (mcp.ai)

Connect your Canny account and use 25 tools for product management straight from your AI agent. Connect with your own API key. Canny is a customer feedback management platform that helps teams collect, analyze, and prioritize user feedback to build better products.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_canny?ms=1787293440000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `canny_add_post_tag`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/canny`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/canny/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/canny/add/post/tag` — Tool to add a tag to a specific post. Use when you need to categorize or group content by applying an existing tag.
  - body: { tagID: string, postID: string }
- `POST https://api.mcp.ai/api/canny/change/post/status` — Tool to change a post's status. Use when you need to update a post's workflow stage and optionally notify voters.
  - body: { postID: string, status: string, changerID: string, commentValue?: string, commentImageURLs?: string[], shouldNotifyVoters?: boolean }
- `POST https://api.mcp.ai/api/canny/create/changelog/entry` — Tool to create and optionally publish a new changelog entry. Use when you need to add a product update record, control publish timing, and notify users. Example: "Create changelog entry titled 'Versio
  - body: { type?: string, title: string, notify?: boolean, details: string, postIDs?: string[], labelIDs?: string[], published?: boolean, publishedOn?: string, scheduledFor?: string }
- `POST https://api.mcp.ai/api/canny/create/comment` — Tool to create a new comment on a post. Use when you have the authorID and postID and want to submit feedback or replies.
  - body: { value?: string, postID: string, authorID: string, internal?: boolean, parentID?: string, createdAt?: string, imageURLs?: string[], shouldNotifyVoters?: boolean }
- `POST https://api.mcp.ai/api/canny/create/or/update/user` — Creates a new user or updates an existing user in Canny. If a user with the given identifier (email, userID, or id) already exists, their profile is updated; otherwise, a new user is created. IMPORTAN
  - body: { id?: string, name: string, alias?: string, email?: string, userID?: string, created?: string, avatarURL?: string, companies?: object[], customFields?: object }
- `POST https://api.mcp.ai/api/canny/create/post` — Tool to create a new post (feature request or feedback) on a Canny board. Use this action when you need to submit new feedback or feature requests to a board. Requires a valid boardID (from list_board
  - body: { eta?: string, byID?: string, title: string, boardID: string, details: string, ownerID?: string, authorID: string, createdAt?: string, etaPublic?: boolean, imageURLs?: string[], categoryID?: string, customFields?: object }
- `POST https://api.mcp.ai/api/canny/create/tag` — Tool to create a new tag. Use when you have the boardID and tag name and need to categorize posts.
  - body: { name: string, boardID: string }
- `POST https://api.mcp.ai/api/canny/create/vote` — Tool to create a vote for a post. Use when you need to record or migrate a user's vote on a post, optionally setting priority or original creation time. Example: Create a vote for postID abc123 with v
  - body: { byID?: string, postID: string, voterID: string, createdAt?: string, votePriority?: integer }
- `POST https://api.mcp.ai/api/canny/delete/comment` — Tool to delete a comment. Use when moderation is required to remove a specific comment by its id. Example: "Delete the comment with ID 553c3ef8b8cdcd1501ba1238."
  - body: { commentID: string }
- `POST https://api.mcp.ai/api/canny/delete/post` — Tool to delete a post. Use when you need to permanently remove a post by its id. Example: "Delete the post with ID 553c3ef8b8cdcd1501ba1238."
  - body: { postID: string }
- `POST https://api.mcp.ai/api/canny/delete/user` — Tool to delete a user and their comments and votes. Use when you need to fully remove a user’s account and all associated data (e.g., GDPR compliance).
  - body: { id: string }
- `POST https://api.mcp.ai/api/canny/delete/vote` — Tool to delete a vote. Use when you need to remove a user's vote from a specific post by its id. Example: "Delete the vote from postID abc123 for voterID user_456."
  - body: { postID: string, voterID: string }
- `POST https://api.mcp.ai/api/canny/list/boards` — Tool to list all boards. Use when you need to retrieve every board for your company after authentication.
- `POST https://api.mcp.ai/api/canny/list/categories` — Tool to list categories. Use when fetching categories for a specific board by its ID.
  - body: { skip?: integer, limit?: integer, boardID?: string }
- `POST https://api.mcp.ai/api/canny/list/comments` — Retrieves a paginated list of comments from Canny. Comments can be filtered by board, post, author, or company. Use this action to: - Get all comments across your Canny instance - Find comments on a s
  - body: { skip?: integer, limit?: integer, postID?: string, boardID?: string, authorID?: string, companyID?: string }
- `POST https://api.mcp.ai/api/canny/list/companies` — Tool to list companies associated with your Canny account. Use after authentication to retrieve companies with pagination support.
  - body: { limit?: integer, cursor?: string, search?: string, segment?: string }
- `POST https://api.mcp.ai/api/canny/list/opportunities` — Tool to list opportunities linked to posts. Use when you need to fetch customer opportunities synced from CRM.
  - body: { skip?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/canny/list/posts` — Tool to list posts with various filters. Use after selecting a board or to search/filter posts.
  - body: { skip?: integer, sort?: string, limit?: integer, search?: string, status?: string, tagIDs?: string[], boardID?: string, authorID?: string, companyID?: string }
- `POST https://api.mcp.ai/api/canny/list/tags` — Tool to list tags. Use when fetching tags optionally filtered by board ID and handling pagination.
  - body: { skip?: integer, limit?: integer, boardID?: string }
- `POST https://api.mcp.ai/api/canny/list/users` — List all end-users in your Canny workspace with pagination support. Use this tool to: - Fetch users from your Canny workspace - Paginate through large user lists using cursor-based pagination - Get us
  - body: { limit?: integer, cursor?: string }
- `POST https://api.mcp.ai/api/canny/list/votes` — Retrieve votes from Canny with optional filtering by board, post, or voter. Use this action to: - Get all votes on a specific post (filter by postID) - Get all votes by a specific user (filter by vote
  - body: { skip?: integer, limit?: integer, postID?: string, boardID?: string, voterID?: string }
- `POST https://api.mcp.ai/api/canny/retrieve/board` — Tool to retrieve details of a board by its ID. Use when you need metadata for a specific board.
  - body: { id: string }
- `POST https://api.mcp.ai/api/canny/retrieve/tag` — Tool to retrieve details of a tag by its ID. Use after obtaining a valid tag ID.
  - body: { id: string }
- `POST https://api.mcp.ai/api/canny/retrieve/user` — Tool to retrieve user details by Canny user ID, app user ID, or email. Use when you have exactly one identifier and need full user information. Example: "Retrieve user with email user@example.com"
  - body: { id?: string, email?: string, userID?: string }
- `POST https://api.mcp.ai/api/canny/update/post` — Tool to update post details. Use when you need to change a post's title, details, ETA, images, or custom fields.
  - body: { eta?: string, title?: string, postID: string, details?: string, etaPublic?: boolean, imageURLs?: string[], customFields?: object }

## Example prompts
- "What can I do in Canny?"
- "Show me a summary of my Canny account"

## More
- Page: https://mcp.ai/canny
- Agent spec (llms.txt): https://mcp.ai/canny/llms.txt
- Postman collection: https://mcp.ai/canny/postman.json
