{
  "info": {
    "name": "Canny — mcp.ai",
    "description": "REST API for the Canny MCP. Set {{apiKey}} to a workspace key (sk_live_…) created at https://mcp.ai/settings/api-keys.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.mcp.ai/api/canny",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "sk_live_...",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "canny_add_post_tag",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/add/post/tag",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "add",
            "post",
            "tag"
          ]
        },
        "description": "Tool to add a tag to a specific post. Use when you need to categorize or group content by applying an existing tag.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"tagID\": \"\",\n  \"postID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_change_post_status",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/change/post/status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "change",
            "post",
            "status"
          ]
        },
        "description": "Tool to change a post's status. Use when you need to update a post's workflow stage and optionally notify voters.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"postID\": \"\",\n  \"status\": \"\",\n  \"changerID\": \"\",\n  \"commentValue\": \"\",\n  \"commentImageURLs\": \"\",\n  \"shouldNotifyVoters\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_create_changelog_entry",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/changelog/entry",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "changelog",
            "entry"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"type\": \"\",\n  \"title\": \"\",\n  \"notify\": false,\n  \"details\": \"\",\n  \"postIDs\": \"\",\n  \"labelIDs\": \"\",\n  \"published\": false,\n  \"publishedOn\": \"\",\n  \"scheduledFor\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_create_comment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/comment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "comment"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"value\": \"\",\n  \"postID\": \"\",\n  \"authorID\": \"\",\n  \"internal\": false,\n  \"parentID\": \"\",\n  \"createdAt\": \"\",\n  \"imageURLs\": \"\",\n  \"shouldNotifyVoters\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_create_or_update_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/or/update/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "or",
            "update",
            "user"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"id\": \"\",\n  \"name\": \"\",\n  \"alias\": \"\",\n  \"email\": \"\",\n  \"userID\": \"\",\n  \"created\": \"\",\n  \"avatarURL\": \"\",\n  \"companies\": \"\",\n  \"customFields\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_create_post",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/post",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "post"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"eta\": \"\",\n  \"byID\": \"\",\n  \"title\": \"\",\n  \"boardID\": \"\",\n  \"details\": \"\",\n  \"ownerID\": \"\",\n  \"authorID\": \"\",\n  \"createdAt\": \"\",\n  \"etaPublic\": false,\n  \"imageURLs\": \"\",\n  \"categoryID\": \"\",\n  \"customFields\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_create_tag",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/tag",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "tag"
          ]
        },
        "description": "Tool to create a new tag. Use when you have the boardID and tag name and need to categorize posts.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"\",\n  \"boardID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_create_vote",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/create/vote",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "create",
            "vote"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"byID\": \"\",\n  \"postID\": \"\",\n  \"voterID\": \"\",\n  \"createdAt\": \"\",\n  \"votePriority\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_delete_comment",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/comment",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "comment"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"commentID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_delete_post",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/post",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "post"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"postID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_delete_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "user"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_delete_vote",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/delete/vote",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "delete",
            "vote"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"postID\": \"\",\n  \"voterID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_boards",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/boards",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "boards"
          ]
        },
        "description": "Tool to list all boards. Use when you need to retrieve every board for your company after authentication.",
        "body": {
          "mode": "raw",
          "raw": "{}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_categories",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/categories",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "categories"
          ]
        },
        "description": "Tool to list categories. Use when fetching categories for a specific board by its ID.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"skip\": 0,\n  \"limit\": 0,\n  \"boardID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_comments",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/comments",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "comments"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"skip\": 0,\n  \"limit\": 0,\n  \"postID\": \"\",\n  \"boardID\": \"\",\n  \"authorID\": \"\",\n  \"companyID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_companies",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/companies",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "companies"
          ]
        },
        "description": "Tool to list companies associated with your Canny account. Use after authentication to retrieve companies with pagination support.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"limit\": 0,\n  \"cursor\": \"\",\n  \"search\": \"\",\n  \"segment\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_opportunities",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/opportunities",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "opportunities"
          ]
        },
        "description": "Tool to list opportunities linked to posts. Use when you need to fetch customer opportunities synced from CRM.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"skip\": 0,\n  \"limit\": 0\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_posts",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/posts",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "posts"
          ]
        },
        "description": "Tool to list posts with various filters. Use after selecting a board or to search/filter posts.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"skip\": 0,\n  \"sort\": \"\",\n  \"limit\": 0,\n  \"search\": \"\",\n  \"status\": \"\",\n  \"tagIDs\": \"\",\n  \"boardID\": \"\",\n  \"authorID\": \"\",\n  \"companyID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_tags",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/tags",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "tags"
          ]
        },
        "description": "Tool to list tags. Use when fetching tags optionally filtered by board ID and handling pagination.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"skip\": 0,\n  \"limit\": 0,\n  \"boardID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_users",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/users",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "users"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"limit\": 0,\n  \"cursor\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_list_votes",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/list/votes",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "list",
            "votes"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"skip\": 0,\n  \"limit\": 0,\n  \"postID\": \"\",\n  \"boardID\": \"\",\n  \"voterID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_retrieve_board",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/retrieve/board",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "retrieve",
            "board"
          ]
        },
        "description": "Tool to retrieve details of a board by its ID. Use when you need metadata for a specific board.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_retrieve_tag",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/retrieve/tag",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "retrieve",
            "tag"
          ]
        },
        "description": "Tool to retrieve details of a tag by its ID. Use after obtaining a valid tag ID.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"id\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_retrieve_user",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/retrieve/user",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "retrieve",
            "user"
          ]
        },
        "description": "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": {
          "mode": "raw",
          "raw": "{\n  \"id\": \"\",\n  \"email\": \"\",\n  \"userID\": \"\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "canny_update_post",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/update/post",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "update",
            "post"
          ]
        },
        "description": "Tool to update post details. Use when you need to change a post's title, details, ETA, images, or custom fields.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"eta\": \"\",\n  \"title\": \"\",\n  \"postID\": \"\",\n  \"details\": \"\",\n  \"etaPublic\": false,\n  \"imageURLs\": \"\",\n  \"customFields\": {}\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}