add_user_to_company
ChatGPTAdds an association between the given user and company.
create_changelog_entry
ChatGPTCreates a new changelog entry, optionally publishing it immediately or scheduling it for later. Entries are created as drafts unless published or scheduledFor is provided.
create_company
ChatGPTCreates a new company. Recurring revenue is optional, but spend and spendType (mrr for monthly recurring revenue, arr for annual recurring revenue) are all-or-nothing: provide both or neither. When asking a user for revenue, use the SaaS terms — e.g. "What's this company's ARR?". If the user gives a figure without saying whether it's MRR or ARR, ask before creating the company.
create_group
ChatGPTCreates a new group used to organize ideas.
create_idea
ChatGPTCreates a new idea in Canny. Use this tool to collect feedback from the user. By default, user-related identifiers in the returned idea are omitted. Pass include: ["users"] to include user-related identifiers.
create_insight
ChatGPTCreates a new insight on an idea, capturing feedback from a customer (an end user, a company, or both). At least one of companyID or userIDs must be provided. When both are provided and the user is not already associated with the company, an association will be created. By default, user-related identifiers in the returned insight are omitted. Pass include: ["users"] to include them.
create_user
ChatGPTCreates a new end-user in the company and returns its ID and admin URL. Providing an email is strongly recommended: it helps deduplicate against existing users (if one already has that email, it is returned instead of creating a duplicate).
create_view
ChatGPTCreates a new View.
delete_changelog_entry
ChatGPTDeletes a changelog entry.
delete_group
ChatGPTDeletes a group, its sub-groups, and views scoped to those groups. Ideas in those groups are kept and ungrouped by default; pass moveIdeasToGroupID to move them to another group instead. Set preserveIdeas to false to delete the contained ideas too. Use list_groups to find valid group IDs.
delete_idea
ChatGPTDeletes an idea. The idea, along with all of its descendants, insights, and related data will be deleted. Use the list_ideas tool to discover valid idea IDs.
delete_insight
ChatGPTDeletes an insight.
delete_view
ChatGPTDeletes a view. Default views and the last remaining view in a group cannot be deleted.
link_opportunity
ChatGPTLinks a Salesforce opportunity or HubSpot deal to an idea. Provide exactly one of salesforceOpportunityID or hubspotDealID. To also capture customer feedback, call the create_insight tool separately.
list_admins
ChatGPTRead-only: Returns all admin teammates for this Canny company, including each admin name so callers can identify users. By default, admin IDs are omitted. To include IDs for use with other tools (for example, author or owner filters in list_ideas), pass include: ["ids"]. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_board_categories
ChatGPTRead-only: Returns categories that belong to the provided board. Categories may be nested via parentID.
list_board_tags
ChatGPTRead-only: Returns tags that belong to the provided board sorted by newest first.
list_boards
ChatGPTRead-only: Returns all boards. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_changelog_entries
ChatGPTRead-only: Returns changelog entries, filtered and sorted by the given parameters.
list_changelog_labels
ChatGPTRead-only: Returns all changelog labels. Labels are used to categorize changelog entries.
list_companies
ChatGPTRead-only: Returns a list of all companies associated with your company, ordered by created date, optionally filtered by search query or a segment URL identifier.
list_groups
ChatGPTRead-only: Returns all Canny groups used to organize ideas. Groups are organizational units that group ideas together. Each idea belongs to one or no group. Groups can be nested to create a hierarchy of groups. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_idea_fields
ChatGPTRead-only: Returns all fields that can be used when filtering ideas, including default fields and company-specific custom, score, and formula fields. Each field includes its ID, type, label, whether it has predefined options, and whether it is a default or custom field. For default fields with predefined options, use list_groups for the group field, list_idea_statuses for the status field, and list_idea_themes for the themes field to discover valid option IDs. Use this together with list_idea_filtering_operations when constructing the filtering parameter for list_ideas. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_idea_filtering_operations
ChatGPTRead-only: Returns all the filtering options that can be used in idea filters, including the input type they expect and which idea field types they apply to. Use this together with list_idea_fields to construct valid filtering.filters entries for the list_ideas tool. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_idea_opportunities
ChatGPTRead-only: Returns a paginated list of opportunities linked to an idea. An opportunity represents a potential customer, synced in from Salesforce or Hubspot. Opportunities linked to descendant ideas are included and deduplicated. To link or unlink opportunities, use the link_opportunity and unlink_opportunity tools respectively.
list_idea_statuses
ChatGPTRead-only: Returns all idea statuses configured for this company. Use this to filter ideas by status when calling the list_ideas tool. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_idea_themes
ChatGPTRead-only: Returns all idea themes configured for this company. Themes are used to categorize ideas into more general topics. Each idea can be assigned to one or no theme. Use these to filter ideas by theme when calling the list_ideas tool. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_ideas
ChatGPTReturns a list of ideas, filtered and sorted by the given parameters. Use the list_idea_fields and list_idea_filtering_operations tools to discover which fields you can filter and sort by using this tool. By default, user-related identifiers are omitted, and user-typed fields (default and custom) are excluded from fields. Pass include: ["users"] to include user-related identifiers and user-typed fields. Note this tool lists Canny Ideas, not to be confused with Canny Posts. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_insights
ChatGPTRead-only: Returns insights linked to a specific Canny idea, including priority, source, and linked comment/vote IDs. By default, user-related identifiers are omitted. Pass include: ["users"] to include them.
list_portal_statuses
ChatGPTRead-only: Returns all portal statuses (the public-facing statuses shown on the portal/roadmap). Use this to discover valid values for the portalStatusID or portalStatusName parameters of update_portal_status.
list_portal_voters
ChatGPTRead-only: Returns the end-users who voted on a specific idea, each with the vote's priority, the voter's company, and when they voted. By default, user identifiers and emails are omitted — pass include: ["emails"] for each voter's email and include: ["ids"] for their user ID.
list_segment_fields
ChatGPTRead-only: Returns all fields that can be used to define user segments, including both standard and custom fields. Each field includes its ID, source (standard or custom), fieldType (boolean, number, date, or string), objectType (company or user), and human-readable name. Use this before creating or updating segments to understand available attributes. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_segment_operations
ChatGPTRead-only: Returns all operations that can be applied to segment attributes, with a short human-readable description of each. Use this to understand how to define attribute filters when creating or editing segments. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_segments
ChatGPTRead-only: Returns all user segments defined in Canny, including their names, URL identifiers, and raw attribute definitions. Use this to understand how users are segmented. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
list_users
ChatGPTRead-only: Returns end-users in this workspace, optionally filtered by name or email. Pass userIDs to retrieve a specific set of users (max 50) instead of browsing; only IDs that resolve to a user in this workspace are returned.
list_views
ChatGPTRead-only: Returns saved idea views in Canny, including their filters, grouping, and sort configuration. Use this to discover view IDs and settings you can reference when calling the list_ideas tool (for example via the viewID parameter) or when constructing custom filters. This tool is not idempotent: underlying data can change between calls, so avoid relying on cached results during longer conversations.
merge_ideas
ChatGPTMerges two ideas together. The source idea (fromIdeaID) will be merged into the target idea (intoIdeaID). All descendants, insights, and related data from the source idea will be moved to the target idea, and the source idea will be marked as deleted. Use the list_ideas tool to discover valid idea IDs.
move_idea
ChatGPTMoves an idea to a different group and/or reparents it under another idea. At least one of groupID or parentID must be provided. A sub-idea must belong to the same group as its parent.
move_insight
ChatGPTMoves an insight to a different idea. Insights linked to a vote or comment cannot be moved.
remove_user_from_company
ChatGPTRemoves a user's membership from the given company.
retrieve_company
ChatGPTRead-only: Returns a single company looked up by its ID.
retrieve_group
ChatGPTRead-only: Returns a single group looked up by its ID or its urlName. Groups are organizational units that group ideas together. Exactly one of id or urlName must be provided. Discover valid IDs via the list_groups tool.
retrieve_idea
ChatGPTRead-only: Returns a single idea looked up by its ID, by its urlName, or by a portal URL. Exactly one of id, urlName, or portalURL must be provided.
retrieve_user
ChatGPTRead-only: Returns a single end-user looked up by id or email.
send_to_autopilot
ChatGPTSends a piece of unstructured feedback (e.g. a transcript, support ticket, or note) through Canny's Autopilot, which uses AI to extract feature requests, create ideas for new ones, and link duplicates to existing ideas. At least one of userID or companyID must be provided to attribute the feedback. Returns the ideas that were created or matched, along with any reasons extraction was skipped.
unlink_opportunity
ChatGPTUnlinks a Salesforce opportunity or HubSpot deal from an idea. Provide exactly one of salesforceOpportunityID or hubspotDealID.
update_changelog_entry
ChatGPTUpdates the content of an existing changelog entry. Only the fields you provide are changed; omitted fields stay the same. Use update_changelog_entry_status to change the entry status.
update_changelog_entry_status
ChatGPTTransitions a changelog entry between draft, scheduled, and published states. Use update_changelog_entry to edit the content of an entry.
update_company
ChatGPTUpdates an existing company, looked up by its ID. Only the fields you supply are changed; omit a field to leave it untouched. Recurring revenue is updated via spend and spendType (mrr for monthly recurring revenue, arr for annual recurring revenue), which are all-or-nothing: provide both or neither. When asking a user for revenue, use the SaaS terms — e.g. "What's this company's ARR?". If the user gives a figure without saying whether it's MRR or ARR, ask before updating the company. If you have company syncing integrations in place (e.g. Hubspot, Salesforce, SSO Tokens, Canny Identify), fields updated here may later be overwritten.
update_group
ChatGPTUpdates a group's name and/or description. Omit fields to leave them untouched.
update_idea
ChatGPTUpdates an existing idea. Omit fields to leave them untouched.
update_insight
ChatGPTUpdates an existing insight. Omit fields to leave them untouched. At least one of companyID or userIDs must remain set on the insight after the update. By default, user-related identifiers in the returned insight are omitted. Pass include: ["users"] to include them.
update_portal_category
ChatGPTUpdates the category of the provided idea. The idea must be published to the portal, and the category must belong to the idea's board.
update_portal_status
ChatGPTUpdates the portal status (the public-facing status shown on the portal/roadmap) of the provided idea. The idea must be published to the portal.
update_view
ChatGPTUpdates an existing view. Only the fields you provide are changed; omit a field to leave it untouched.