The Productboard connector lets your AI agent act in each user's Productboard account. Each user signs in to Productboard once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 28 tools.
- Tools
- 28
- What they doRead · write · destructive
- 16 · 12 · 016 read12 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Productboard app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Productboard connection
In AgentKit > Connections, create a Productboard connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Productboard connections use your own OAuth app. Register one with Productboard and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Productboard connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'productboard'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Productboard:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'productboard_entities_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "productboard"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Productboard:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="productboard_entities_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolproductboard_entities_listList Productboard entities such as features, components, products, initiatives, objectives, key results, releases, companies and users, filtered by type, name, owner, status, team, parent, archived state or source record.Read-onlyList Entities
List Productboard entities such as features, components, products, initiatives, objectives, key results, releases, companies and users, filtered by type, name, owner, status, team, parent, archived state or source record. Returns a page of entities with id, type, fields and links, plus links.next whose pageCursor fetches the next page. Use productboard_entities_list to browse with simple filters. Use productboard_entities_search for many ids, date ranges or custom-field filters. Use productboard_entity_get for one entity.
Inputs
archivedboolean- Filter by archived state. Example: false
namestring- Only return entities with this name. Example: Dark mode
owner_emailstring- Only return entities owned by the member with this email. Needs the members_pii:read scope. Example: john@doe.com
owner_idstring- Only return entities owned by this member UUID. Example: 923e4567-e89b-12d3-a456-426614174008
page_cursorstring- Cursor for the next page of entities. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
parent_idstring- Only return entities whose parent is this entity UUID, e.g. features of a component. Example: 223e4567-e89b-12d3-a456-426614174001
return_fieldsarray- Limit which entity fields are returned. Pass field ids such as name, owner, tags or a custom field UUID; pass ["all"] to also include empty fields. Leave empty to return all non-empty fields. Do not combine "all" with specific fields. Example: ["name", "owner"]
source_record_idstring- Only return entities whose metadata.source.recordId matches. Example: A-1
source_systemstring- Only return entities whose metadata.source.system matches. Example: sfdc
status_idstring- Only return entities with this status UUID. Applies to types with a status, such as feature and initiative. Example: 447eb060-2a7e-4d1e-9d59-322a11e0fdb0
status_namestring- Only return entities with this status name, e.g. In Progress. Applies to types with a status. Example: In Progress
team_idstring- Only return entities assigned to this team UUID. Do not combine with team_name. Example: 95db5914-36b0-45e9-8f6d-7f11a950ac1d
team_namestring- Only return entities assigned to the team with this name. Do not combine with team_id. Example: Product Team
typesarray- Only return entities of these types: product, component, feature, subfeature, initiative, objective, keyResult, release, releaseGroup, company or user (the set depends on the workspace; productboard_entity_configurations_list lists it). Example: ["feature"]
productboard_entity_configuration_getGet the configuration of one Productboard entity type.Read-onlyGet Entity Configuration
Get the configuration of one Productboard entity type. Returns the type's fields (ids, value types, required flags, allowed values), supported patch operations, available list filters and relationship rules. Use productboard_entity_configuration_get before creating, updating or filtering entities of that type. Use productboard_entity_configurations_list to see all types.
Inputs
typestringrequired- Entity type to describe: product, component, feature, subfeature, initiative, objective, keyResult, release, releaseGroup, company or user (the set depends on the workspace; productboard_entity_configurations_list lists it). Example: feature
productboard_entity_configurations_listList the entity types available in the Productboard workspace and their configuration.Read-onlyList Entity Configurations
List the entity types available in the Productboard workspace and their configuration. Returns each type (for example feature, initiative, company) with its fields, required fields, allowed values, supported patch operations, filters and relationship rules. Use productboard_entity_configurations_list to discover which types exist. Use productboard_entity_configuration_get for one type.
Inputs
typesarray- Only return these entity types: product, component, feature, subfeature, initiative, objective, keyResult, release, releaseGroup, company or user (the set depends on the workspace; productboard_entity_configurations_list lists it). Leave empty for all. Example: ["feature", "initiative"]
productboard_entity_field_values_listList the allowed values of a select, tag or status field on Productboard entities.Read-onlyList Field Values
List the allowed values of a select, tag or status field on Productboard entities. Returns a page of options with id, name and color (statuses also carry their entity type), plus links.next; a query returns up to 20 best tag matches without paging. Use productboard_entity_field_values_list to find option ids or names before filtering or setting a select, tag or status field.
Inputs
field_idstringrequired- Field id: the API name of a default field such as status or tags, or a custom field UUID from productboard_entity_configuration_get. Example: status
assigned_entity_typesarray- Only return values used by these entity types; useful for status, where each type has its own set. Example: ["feature"]
page_cursorstring- Cursor for the next page of values. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
querystring- Search tag values by name (case- and accent-insensitive, typo tolerant). Returns up to 20 matches and ignores page_cursor. Example: launch
productboard_entity_getGet one Productboard entity (feature, component, product, initiative, objective, key result, release, company, user and so on) by its UUID.Read-onlyGet Entity
Get one Productboard entity (feature, component, product, initiative, objective, key result, release, company, user and so on) by its UUID. Returns the entity's id, type, fields (name, description, status, owner, timeframe, teams, tags and custom fields), relationships and links, including the app URL. Use productboard_entity_get when you have the entity id. Use productboard_entities_list or productboard_entities_search to find entities.
Inputs
entity_idstringrequired- UUID of the entity to retrieve. Get it from productboard_entities_list or productboard_entities_search. Example: 123e4567-e89b-12d3-a456-426614174000
return_fieldsarray- Limit which entity fields are returned. Pass field ids such as name, owner, tags or a custom field UUID; pass ["all"] to also include empty fields. Leave empty to return all non-empty fields. Do not combine "all" with specific fields. Example: ["name", "owner"]
productboard_entity_relationships_listList the relationships of one Productboard entity: its parent, children, linked entities and dependencies.Read-onlyList Entity Relationships
List the relationships of one Productboard entity: its parent, children, linked entities and dependencies. Returns a page of relationships, each with type and target (id, type, links), plus links.next for the next page. Use productboard_entity_relationships_list to walk the product hierarchy or dependencies. Use productboard_entity_relationship_create to add one.
Inputs
entity_idstringrequired- UUID of the entity to inspect. Get it from productboard_entities_list or productboard_entities_search. Example: 123e4567-e89b-12d3-a456-426614174000
page_cursorstring- Cursor for the next page of relationships. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
relationship_typestring- Only return relationships of this type: parent, child, link, isBlockedBy or isBlocking. Example: childone of
parentchildlinkisBlockedByisBlocking target_idstring- Only return the relationship with this target entity UUID. Example: 223e4567-e89b-12d3-a456-426614174001
target_typestring- Only return relationships whose target has this entity type, e.g. feature. Example: feature
productboard_member_getGet one Productboard workspace member by UUID.Read-onlyGet Member
Get one Productboard workspace member by UUID. Returns the member's id, name, username, email and role; name and email read [redacted] without the members_pii:read scope. Use productboard_member_get when you have the member id. Use productboard_members_list or productboard_members_search to find members.
Inputs
member_idstringrequired- UUID of the member. Get it from productboard_members_list or from an owner field. Example: 923e4567-e89b-12d3-a456-426614174008
productboard_members_listList members of the Productboard workspace (the people on your team who use Productboard), oldest first, optionally filtered by name or email text and role.Read-onlyList Members
List members of the Productboard workspace (the people on your team who use Productboard), oldest first, optionally filtered by name or email text and role. Returns a page of members with id, name, username, email and role, plus links.next; name and email read [redacted] without the members_pii:read scope. Use productboard_members_list to browse or find member ids. Use productboard_members_search to look up many members by id or email. Use productboard_member_get for one member.
Inputs
include_disabledboolean- Set true to include disabled members. Defaults to false. Example: true
include_invitation_pendingboolean- Set true to include members whose invitation is still pending. Defaults to false. Example: true
page_cursorstring- Cursor for the next page of members. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
querystring- Text matched against member name or email (partial, case-insensitive). Example: jane
rolesarray- Only return members with one of these roles: admin, maker, viewer, contributor. Example: ["admin", "maker"]
productboard_note_configuration_getGet the configuration of one Productboard note type.Read-onlyGet Note Configuration
Get the configuration of one Productboard note type. Returns the type's fields with their value types and constraints, supported patch operations and relationship rules. Use productboard_note_configuration_get before creating or updating a note of that type. Use productboard_note_configurations_list for all types.
Inputs
typestringrequired- Note type to describe. One of textNote, conversationNote, opportunityNote. Example: textNoteone of
textNoteconversationNoteopportunityNote
productboard_note_configurations_listList the note type configurations of the Productboard workspace.Read-onlyList Note Configurations
List the note type configurations of the Productboard workspace. Returns each note type (textNote, conversationNote, opportunityNote) with its fields, allowed values, supported patch operations and relationship rules. Use productboard_note_configurations_list to see every note type. Use productboard_note_configuration_get for one type.
Inputs
typesarray- Only return configurations for these note types. Allowed values: textNote, conversationNote, opportunityNote. Leave empty for all types. Example: ["textNote"]
productboard_note_getGet one Productboard note by its UUID.Read-onlyGet Note
Get one Productboard note by its UUID. Returns the note's id, type, fields (name, content, owner, creator, tags, archived, processed, source), relationships and links. Use productboard_note_get when you have the note id. Use productboard_notes_list or productboard_notes_search to find notes.
Inputs
note_idstringrequired- UUID of the note to retrieve. Get it from productboard_notes_list or productboard_notes_search. Example: 123e4567-e89b-12d3-a456-426614174000
return_fieldsarray- Limit which note fields are returned. Pass field ids such as name, owner, tags or a custom field UUID; pass ["all"] to also include empty fields. Leave empty to return all non-empty fields. Do not combine "all" with specific fields. Example: ["name", "owner"]
productboard_note_relationships_listList the relationships of one Productboard note: its customer (a user or company) and the features or other entities it is linked to.Read-onlyList Note Relationships
List the relationships of one Productboard note: its customer (a user or company) and the features or other entities it is linked to. Returns a page of relationships, each with type (customer or link), target id and target type, plus links.next for the next page. Use productboard_note_relationships_list to see what a note is attached to. Use productboard_note_relationship_create or productboard_note_customer_set to change it.
Inputs
note_idstringrequired- UUID of the note to inspect. Get it from productboard_notes_list or productboard_notes_search. Example: 123e4567-e89b-12d3-a456-426614174000
limitinteger- Maximum number of relationships per page (minimum 1). Example: 50
page_cursorstring- Cursor for the next page of relationships. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
relationship_typestring- Only return relationships of this type: customer (the user or company the feedback came from) or link (linked features and other entities). Example: linkone of
customerlink target_typestring- Only return relationships whose target is this entity type. One of user, company, feature, subfeature, product, component. Example: featureone of
usercompanyfeaturesubfeatureproductcomponent
productboard_notes_listList notes (customer feedback) in the Productboard workspace, newest first, optionally filtered by type, owner, creator, archived or processed state, source record, or created/updated date range.Read-onlyList Notes
List notes (customer feedback) in the Productboard workspace, newest first, optionally filtered by type, owner, creator, archived or processed state, source record, or created/updated date range. Returns a page of notes with id, type, fields (name, content, owner, tags, archived, processed) and links.next, whose pageCursor fetches the next page. Use productboard_notes_list to browse or filter by simple fields. Use productboard_notes_search for a full-text query or to filter by linked customer or feature. Use productboard_note_get for one note by id.
Inputs
archivedboolean- Filter by archived state. true returns only archived notes; false returns processed and unprocessed notes that are not archived. Leave empty to include all. Example: false
created_fromstring- Only return notes created on or after this ISO 8601 date-time (inclusive). Example: 2026-01-01T00:00:00Z
created_tostring- Only return notes created on or before this ISO 8601 date-time (inclusive). Must not be earlier than created_from. Example: 2026-03-31T23:59:59Z
creator_emailstring- Only return notes created by the workspace member with this email. Needs the members_pii:read scope. Example: jane.doe@example.com
creator_idstring- Only return notes created by the workspace member with this UUID (from productboard_members_list). Example: e23e4567-e89b-12d3-a456-426614174013
owner_emailstring- Only return notes owned by the workspace member with this email. Needs the members_pii:read scope. Example: john.doe@example.com
owner_idstring- Only return notes owned by the workspace member with this UUID (from productboard_members_list). Example: 923e4567-e89b-12d3-a456-426614174008
page_cursorstring- Cursor for the next page. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
processedboolean- Filter by processed state. true returns processed notes; false returns unprocessed and archived notes (archived notes always report processed=false). Leave empty to include all. Example: false
return_fieldsarray- Limit which note fields are returned. Pass field ids such as name, content, tags, owner; pass ["all"] to also include empty fields. Leave empty to return all non-empty fields. Do not combine "all" with specific fields. Example: ["name", "tags"]
source_record_idstring- Only return notes whose metadata.source.recordId matches this external record id. Combine with source_system. Example: ticket-12345
source_systemstring- Only return notes whose metadata.source.system matches this external system name. Example: intercom
typesarray- Only return notes of these types. Allowed values: textNote, conversationNote, opportunityNote. Example: ["textNote", "conversationNote"]
updated_fromstring- Only return notes updated on or after this ISO 8601 date-time (inclusive). Example: 2026-01-01T00:00:00Z
updated_tostring- Only return notes updated on or before this ISO 8601 date-time (inclusive). Must not be earlier than updated_from. Example: 2026-03-31T23:59:59Z
productboard_team_getGet one Productboard team by UUID.Read-onlyGet Team
Get one Productboard team by UUID. Returns the team's id, name, handle, description, avatar URL and timestamps. Use productboard_team_get when you have the team id. Use productboard_team_members_list for its members.
Inputs
team_idstringrequired- UUID of the team. Get it from productboard_teams_list. Example: 95db5914-36b0-45e9-8f6d-7f11a950ac1d
productboard_team_members_listList the members of one Productboard team, newest membership first.Read-onlyList Team Members
List the members of one Productboard team, newest membership first. Returns a page of members with id, name and email (name and email read [redacted] without the members_pii:read scope), plus links.next. Use productboard_team_members_list to see who is on a team. Use productboard_member_get for one member's details.
Inputs
team_idstringrequired- UUID of the team. Get it from productboard_teams_list. Example: 95db5914-36b0-45e9-8f6d-7f11a950ac1d
page_cursorstring- Cursor for the next page of team members. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
productboard_teams_listList teams in the Productboard workspace, newest first, optionally filtered by exact name or handle or by a partial text query.Read-onlyList Teams
List teams in the Productboard workspace, newest first, optionally filtered by exact name or handle or by a partial text query. Returns a page of teams with id, name, handle, description and links.next. Use productboard_teams_list to browse or find team ids. Use productboard_teams_search to look up many teams at once. Use productboard_team_get for one team.
Inputs
handlestring- Only return the team with this exact @mention handle (case-insensitive). Example: product
namestring- Only return the team with this exact name (case-insensitive). Example: Product Team
page_cursorstring- Cursor for the next page of teams. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
querystring- Text matched against team name and handle (partial, case-insensitive). Example: prod
productboard_entities_searchSearch Productboard entities with a structured filter: type, ids, created or updated date range, name, archived state, status, owner, team, parent, source record and custom field values.WriteSearch Entities
Search Productboard entities with a structured filter: type, ids, created or updated date range, name, archived state, status, owner, team, parent, source record and custom field values. Returns a page of matching entities with id, type, fields and links.next, whose pageCursor fetches the next page. Use productboard_entities_search for many ids, date ranges or custom-field filters. Use productboard_entities_list for simple filters. Use productboard_entity_get for one entity.
Inputs
archivedboolean- Filter by archived state. Example: false
created_fromstring- Only match entities created on or after this ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
created_tostring- Only match entities created on or before this ISO 8601 date-time. Example: 2026-03-31T23:59:59Z
custom_field_filtersobject- Filters on other fields, keyed by field id (a predefined id such as domain or a custom field UUID). A text field takes contains, a number or date field takes eq, a single-select field takes id or name, a multi-select field takes any or all with a list of options, and any field takes isSet on its own. Requires types. At most 25 entries. Example: {"domain": {"contains": "acme.com"}}
entity_idsarray- Only match entities with these UUIDs. Example: ["123e4567-e89b-12d3-a456-426614174000"]
namestring- Only match entities with this name. Example: Dark mode
owner_emailsarray- Only match entities owned by one of these member emails. Needs the members_pii:read scope. Example: ["john@doe.com"]
owner_idsarray- Only match entities owned by one of these member UUIDs. Example: ["923e4567-e89b-12d3-a456-426614174008"]
page_cursorstring- Cursor for the next page of results. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
parent_idsarray- Only match entities whose parent is one of these entity UUIDs. Example: ["223e4567-e89b-12d3-a456-426614174001"]
return_fieldsarray- Limit which fields each result returns, e.g. name, status, owner; pass ["all"] to include empty fields too. Example: ["name", "status"]
source_record_idstring- Only match entities with this source record id. Example: PROJ-456
source_systemstring- Only match entities whose source system matches. Example: Jira
status_namesarray- Only match entities in one of these statuses, by name. Example: ["In Progress", "At Risk"]
team_namesarray- Only match entities assigned to any of these teams, by name. Example: ["Product Team"]
typesarray- Entity types to search: product, component, feature, subfeature, initiative, objective, keyResult, release, releaseGroup, company or user (the set depends on the workspace; productboard_entity_configurations_list lists it). Searching one type at a time is the documented norm, and custom field filters require a type. Example: ["feature"]
updated_fromstring- Only match entities updated on or after this ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
updated_tostring- Only match entities updated on or before this ISO 8601 date-time. Example: 2026-03-31T23:59:59Z
productboard_entity_createCreate a Productboard entity of a given type, such as a feature, component, initiative, objective, release, company or user, with its name, description, owner, status, timeframe, teams, tags and parent.WriteCreate Entity
Create a Productboard entity of a given type, such as a feature, component, initiative, objective, release, company or user, with its name, description, owner, status, timeframe, teams, tags and parent. Returns the new entity's id and links. Use productboard_entity_create to add a new item. Use productboard_entity_update to change an existing one. Run productboard_entity_configuration_get first to learn which fields the type requires (for example, features need a parent).
Inputs
namestringrequired- Name of the entity, up to 255 characters. Example: Dark mode
typestringrequired- Entity type to create: product, component, feature, subfeature, initiative, objective, keyResult, release, releaseGroup, company or user (the set depends on the workspace; productboard_entity_configurations_list lists it). Example: feature
additional_fieldsobject- Other fields to set, keyed by field id as listed by productboard_entity_configuration_get: predefined ids such as domain for companies or a custom field UUID. Example: {"faa1d59a-d55f-4ad2-b1d3-5b888123873b": 120}
archivedboolean- Set true to archive the entity or false to keep or make it active. Example: false
descriptionstring- Rich-text description. Wrap text in supported HTML tags such as <p>, <b>, <ul>/<li>, <h1>/<h2>; plain text without a tag is rejected. Example: <p>Let users switch the app to a dark theme.</p>
owner_emailstring- Email of the member who owns the entity. Used only when owner_id is empty. Example: john@doe.com
owner_idstring- UUID of the member who owns the entity. Use owner_id or owner_email, not both. Example: 923e4567-e89b-12d3-a456-426614174008
parent_idstring- UUID of the parent entity, e.g. the component or product a feature belongs to, or the feature a subfeature belongs to. Required for types that must have a parent. Example: 223e4567-e89b-12d3-a456-426614174001
source_record_idstring- Id of the record in the external system, stored as metadata.source.recordId. Example: PROJ-456
source_systemstring- Name of the external system this entity is synced from, stored as metadata.source.system. Example: Jira
source_urlstring- URL of the record in the external system, stored as metadata.source.url. Example: https://jira.example.com/browse/PROJ-456
status_idstring- Status to set, by UUID. Used instead of status_name. Example: 447eb060-2a7e-4d1e-9d59-322a11e0fdb0
status_namestring- Status to set, by name, e.g. In Progress. Must match a status configured for this entity type. Use status_name or status_id. Example: In Progress
tagsarray- Tag names to set on the entity. Example: ["Q4", "Launch"]
team_namesarray- Teams to assign, by exact team name. Example: ["Product Team"]
timeframe_endstring- Timeframe end date (yyyy-MM-dd). Example: 2026-12-31
timeframe_granularitystring- How the timeframe is shown: year, quarter, month or day. Example: monthone of
yearquartermonthday timeframe_startstring- Timeframe start date (yyyy-MM-dd). Example: 2026-10-01
productboard_entity_parent_setMove a Productboard entity under a new parent, replacing its current parent (for example, move a feature to another component, or a subfeature to another feature).WriteSet Entity Parent
Move a Productboard entity under a new parent, replacing its current parent (for example, move a feature to another component, or a subfeature to another feature). Returns the new parent relationship. Use productboard_entity_parent_set to re-parent an entity. Use productboard_entity_relationship_create for links and dependencies.
- Idempotent
Inputs
entity_idstringrequired- UUID of the entity to move. Get it from productboard_entities_list or productboard_entities_search. Example: 123e4567-e89b-12d3-a456-426614174000
parent_idstringrequired- UUID of the new parent entity. Must be a valid parent type (e.g. a component or product for a feature, a feature for a subfeature). Example: 223e4567-e89b-12d3-a456-426614174001
productboard_entity_relationship_createCreate a relationship from one Productboard entity to another: parent, child, link, or an isBlockedBy/isBlocking dependency.WriteCreate Entity Relationship
Create a relationship from one Productboard entity to another: parent, child, link, or an isBlockedBy/isBlocking dependency. Returns the created relationship. Use productboard_entity_relationship_create to link entities or add dependencies. Use productboard_entity_parent_set to replace an existing parent.
Inputs
entity_idstringrequired- UUID of the entity to relate from. Get it from productboard_entities_list or productboard_entities_search. Example: 123e4567-e89b-12d3-a456-426614174000
target_idstringrequired- UUID of the other entity. Example: 223e4567-e89b-12d3-a456-426614174001
relationship_typestring- Relationship from the source entity to the target: parent (target is the parent), child (target is a child), link (plain link), isBlockedBy or isBlocking. Defaults to link. Only valid source and target type combinations are accepted. Example: linkone of
parentchildlinkisBlockedByisBlockingdefaultlink
productboard_entity_updateUpdate fields of an existing Productboard entity, such as its name, description, owner, status, timeframe, teams, tags, archived state or custom fields.WriteUpdate Entity
Update fields of an existing Productboard entity, such as its name, description, owner, status, timeframe, teams, tags, archived state or custom fields. Returns the entity's id and links. Use productboard_entity_update to edit an entity. Use productboard_entity_parent_set to move it under another parent. Values replace the current ones; use patch_operations to add or remove single list items.
Inputs
entity_idstringrequired- UUID of the entity to update. Get it from productboard_entities_list or productboard_entities_search. Example: 123e4567-e89b-12d3-a456-426614174000
additional_fieldsobject- Other fields to set, keyed by field id as listed by productboard_entity_configuration_get: predefined ids such as domain for companies or a custom field UUID. Example: {"faa1d59a-d55f-4ad2-b1d3-5b888123873b": 120}
archivedboolean- Set true to archive the entity or false to keep or make it active. Example: false
descriptionstring- Rich-text description. Wrap text in supported HTML tags such as <p>, <b>, <ul>/<li>, <h1>/<h2>; plain text without a tag is rejected. Example: <p>Let users switch the app to a dark theme.</p>
namestring- New name, up to 255 characters. Example: Dark mode (mobile)
owner_emailstring- Email of the member who owns the entity. Used only when owner_id is empty. Example: john@doe.com
owner_idstring- UUID of the member who owns the entity. Use owner_id or owner_email, not both. Example: 923e4567-e89b-12d3-a456-426614174008
patch_operationsarray- Granular changes sent instead of the field inputs: each operation has op (set, addItems, removeItems or clear), path (a field id such as tags, teams or a custom field UUID) and, except for clear, a value. Productboard rejects a request that mixes field values and patch operations, so when this is set the other field inputs are ignored. Example: [{"op": "addItems", "path": "tags", "value": [{"name": "Q1 2027"}]}]
source_record_idstring- Id of the record in the external system, stored as metadata.source.recordId. Example: PROJ-456
source_systemstring- Name of the external system this entity is synced from, stored as metadata.source.system. Example: Jira
source_urlstring- URL of the record in the external system, stored as metadata.source.url. Example: https://jira.example.com/browse/PROJ-456
status_idstring- Status to set, by UUID. Used instead of status_name. Example: 447eb060-2a7e-4d1e-9d59-322a11e0fdb0
status_namestring- Status to set, by name, e.g. In Progress. Must match a status configured for this entity type. Use status_name or status_id. Example: In Progress
tagsarray- Tag names to set on the entity. Example: ["Q4", "Launch"]
team_namesarray- Teams to assign, by exact team name. Example: ["Product Team"]
timeframe_endstring- Timeframe end date (yyyy-MM-dd). Example: 2026-12-31
timeframe_granularitystring- How the timeframe is shown: year, quarter, month or day. Example: monthone of
yearquartermonthday timeframe_startstring- Timeframe start date (yyyy-MM-dd). Example: 2026-10-01
productboard_members_searchSearch Productboard workspace members by ids, emails, roles, disabled or pending state, and a text query.WriteSearch Members
Search Productboard workspace members by ids, emails, roles, disabled or pending state, and a text query. Returns a page of matching members with id, name, username, email and role, plus links.next. Use productboard_members_search for batch lookups by id or email. Use productboard_members_list to browse. Use productboard_member_get for one member.
Inputs
disabled_onlyboolean- Set true to return only disabled members. Example: true
emailsarray- Only match members with these emails (up to 100, case-insensitive). Needs the members_pii:read scope. Example: ["john.doe@example.com"]
include_disabledboolean- Set true to return disabled members alongside active ones. Example: true
include_invitation_pendingboolean- Set true to return pending members alongside accepted ones. Example: true
invitation_pending_onlyboolean- Set true to return only members whose invitation is pending. Example: true
member_idsarray- Only match members with these UUIDs (up to 100). Example: ["923e4567-e89b-12d3-a456-426614174008"]
page_cursorstring- Cursor for the next page of results. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
querystring- Text matched against member name or email (partial, case-insensitive). Needs the members_pii:read scope. Example: john
rolesarray- Only match members with one of these roles: admin, maker, viewer, contributor. Example: ["admin"]
productboard_note_createCreate a note (a piece of customer feedback) in Productboard, optionally attributed to a customer, linked to features and tagged.WriteCreate Note
Create a note (a piece of customer feedback) in Productboard, optionally attributed to a customer, linked to features and tagged. Returns the new note's id and links. Use productboard_note_create to capture new feedback. Use productboard_note_update to change an existing note. Opportunity notes cannot be created through the API.
Inputs
namestringrequired- Title of the note, up to 255 characters. Example: Customer asks for dark mode
additional_fieldsobject- Other note fields to set, keyed by field id as listed by productboard_note_configuration_get, for example archived, processed or a custom field. Example: {"processed": false}
contentstring- Body of a textNote. HTML is accepted; the Notes API keeps semantic tags and strips styling. Example: <p>Customer reported slow loading on the mobile app.</p>
conversation_partsarray- Messages of a conversationNote, oldest first. Each message needs an externalId (its id in your system), authorType (customer or agent), content and an ISO 8601 timestamp; authorName is optional. Example: [{"externalId": "msg-1", "authorType": "customer", "authorName": "John Doe", "content": "Hello", "timestamp": "2026-10-01T11:00:00Z"}]
creator_emailstring- Email of the workspace member to record as the note's creator. Example: john.doe@example.com
customer_emailstring- Email of the customer user the feedback came from, used instead of customer_id. Productboard looks up the user by email. Example: john@acme.com
customer_idstring- UUID of the user or company entity the feedback came from. Set customer_type to match. Leave empty if you use customer_email or want no customer. Example: 223e4567-e89b-12d3-a456-426614174001
customer_typestring- Entity type of customer_id: user or company. Defaults to user. Ignored when customer_email is used. Example: companyone of
usercompanydefaultuser linked_entity_idsarray- UUIDs of features or other entities to link the note to. Example: ["223e4567-e89b-12d3-a456-426614174001"]
owner_emailstring- Email of the workspace member who owns the note. Used only when owner_id is empty. Example: jane.doe@example.com
owner_idstring- UUID of the workspace member who owns the note. Use owner_id or owner_email, not both. Example: 923e4567-e89b-12d3-a456-426614174008
source_record_idstring- Id of the feedback record in the external system, stored as metadata.source.recordId. Example: ticket-12345
source_systemstring- Name of the external system the feedback came from, stored as metadata.source.system. Example: support
source_urlstring- URL of the feedback record in the external system, stored as metadata.source.url. Example: https://support.example.com/ticket/12345
tagsarray- Tag names to put on the note. Tags that do not exist yet are created. Example: ["mobile", "performance"]
typestring- Note type. textNote for plain feedback; conversationNote for a chat or email thread passed in conversation_parts. Defaults to textNote. Example: textNoteone of
textNoteconversationNotedefaulttextNote
productboard_note_customer_setSet or replace the customer (user or company) a Productboard note is attributed to.WriteSet Note Customer
Set or replace the customer (user or company) a Productboard note is attributed to. Returns the updated customer relationship. Use productboard_note_customer_set to change who the feedback came from. Use productboard_note_relationship_create to link the note to features.
- Idempotent
Inputs
note_idstringrequired- UUID of the note to update. Get it from productboard_notes_list or productboard_notes_search. Example: 123e4567-e89b-12d3-a456-426614174000
customer_emailstring- Email of the customer user the feedback came from, used instead of customer_id. Productboard looks up the user by email. Example: john@acme.com
customer_idstring- UUID of the user or company entity the feedback came from. Set customer_type to match. Leave empty if you use customer_email or want no customer. Example: 223e4567-e89b-12d3-a456-426614174001
customer_typestring- Entity type of customer_id: user or company. Defaults to user. Ignored when customer_email is used. Example: companyone of
usercompanydefaultuser
productboard_note_relationship_createLink a Productboard note to a feature or other entity, or attach it to a customer (user or company).WriteLink Note
Link a Productboard note to a feature or other entity, or attach it to a customer (user or company). Returns the created relationship. Use productboard_note_relationship_create to add a link or a first customer. A note has one customer; use productboard_note_customer_set to replace an existing customer.
Inputs
note_idstringrequired- UUID of the note to link. Get it from productboard_notes_list or productboard_notes_search. Example: 123e4567-e89b-12d3-a456-426614174000
relationship_typestringrequired- link to connect the note to a feature or other entity (set target_id); customer to attach the user or company the feedback came from (set customer_id or customer_email). Example: linkone of
linkcustomer customer_emailstring- Email of the customer user the feedback came from, used instead of customer_id. Productboard looks up the user by email. Example: john@acme.com
customer_idstring- UUID of the user or company entity the feedback came from. Set customer_type to match. Leave empty if you use customer_email or want no customer. Example: 223e4567-e89b-12d3-a456-426614174001
customer_typestring- Entity type of customer_id: user or company. Defaults to user. Ignored when customer_email is used. Example: companyone of
usercompanydefaultuser target_idstring- UUID of the feature or other entity to link. Required when relationship_type is link. Example: 223e4567-e89b-12d3-a456-426614174001
productboard_note_updateUpdate fields of an existing Productboard note: name, content, owner, tags, archived or processed state.WriteUpdate Note
Update fields of an existing Productboard note: name, content, owner, tags, archived or processed state. Returns the note's id and links. Use productboard_note_update to edit a note. Use productboard_note_relationship_create or productboard_note_customer_set to change what it is linked to. Notes whose content is highlighted into features cannot have content changed.
Inputs
note_idstringrequired- UUID of the note to update. Get it from productboard_notes_list or productboard_notes_search. Example: 123e4567-e89b-12d3-a456-426614174000
add_tagsarray- Tag names to add, keeping existing tags. Example: ["urgent"]
archivedboolean- Set true to archive the note or false to unarchive it. Example: true
clear_ownerboolean- Set true to remove the owner. Do not combine with owner_id or owner_email. Example: true
contentstring- New body of a textNote; replaces the existing content. HTML is accepted. Example: <p>Updated feedback text.</p>
namestring- New title, up to 255 characters. Example: Customer asks for dark mode (mobile)
owner_emailstring- Email of the member to make the owner. Used only when owner_id is empty. Example: jane.doe@example.com
owner_idstring- UUID of the member to make the owner. Use owner_id or owner_email, not both. Example: 923e4567-e89b-12d3-a456-426614174008
patch_operationsarray- Extra patch operations applied after the ones built from the other inputs, for fields they do not cover. Each operation has op (set, clear, addItems or removeItems), path (the field id) and, except for clear, a value. Example: [{"op": "addItems", "path": "content", "value": [{"externalId": "msg-2", "authorType": "agent", "content": "Thanks!", "timestamp": "2026-10-02T09:00:00Z"}]}]
processedboolean- Set true to mark the note processed or false to mark it unprocessed. Example: true
remove_tagsarray- Tag names to remove, keeping the others. Example: ["triage"]
tagsarray- Replace all tags with exactly these tag names. Do not combine with add_tags or remove_tags. Example: ["mobile", "q3"]
productboard_notes_searchSearch Productboard notes with a full-text query and structured filters, including the linked customer (user or company) and linked features.WriteSearch Notes
Search Productboard notes with a full-text query and structured filters, including the linked customer (user or company) and linked features. Returns a page of matching notes with id, type, fields and links.next, whose pageCursor fetches the next page. Use productboard_notes_search for text queries or customer and feature filters. Use productboard_notes_list for simple field filters. Use productboard_note_get for one note by id.
Inputs
archivedboolean- Filter by archived state. Example: false
created_fromstring- Only match notes created on or after this ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
created_tostring- Only match notes created on or before this ISO 8601 date-time. Example: 2026-03-31T23:59:59Z
creator_emailsarray- Only match notes created by one of these member emails. Needs the members_pii:read scope. Example: ["jane.doe@example.com"]
creator_idsarray- Only match notes created by one of these member UUIDs. Example: ["923e4567-e89b-12d3-a456-426614174008"]
customer_idsarray- Only match notes whose customer is one of these user or company entity UUIDs. Example: ["223e4567-e89b-12d3-a456-426614174001"]
linked_entity_idsarray- Only match notes linked to one of these feature or other entity UUIDs. Example: ["223e4567-e89b-12d3-a456-426614174001"]
note_idsarray- Only match notes with these UUIDs (up to 100). Example: ["123e4567-e89b-12d3-a456-426614174000"]
owner_emailsarray- Only match notes owned by one of these member emails. Needs the members_pii:read scope. Example: ["john.doe@example.com"]
owner_idsarray- Only match notes owned by one of these member UUIDs. Example: ["923e4567-e89b-12d3-a456-426614174008"]
page_cursorstring- Cursor for the next page of results. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
processedboolean- Filter by processed state. Example: true
querystring- Full-text query matched against note content, up to 255 characters. Example: onboarding
return_fieldsarray- Limit which note fields each result returns, e.g. name, content, owner, tags. Leave empty for all non-empty fields. Example: ["name", "content"]
source_record_idstring- Only match notes with this source record id. Use together with source_system. Example: ticket-12345
source_systemstring- Only match notes whose source system matches, e.g. intercom or zendesk. Example: intercom
tagsarray- Only match notes with at least one of these tag names. Example: ["important"]
typesarray- Only match notes of these types. Allowed values: textNote, conversationNote, opportunityNote. Example: ["textNote"]
updated_fromstring- Only match notes updated on or after this ISO 8601 date-time. Example: 2026-01-01T00:00:00Z
updated_tostring- Only match notes updated on or before this ISO 8601 date-time. Example: 2026-03-31T23:59:59Z
productboard_teams_searchSearch Productboard teams by ids, names or handles and a partial text query.WriteSearch Teams
Search Productboard teams by ids, names or handles and a partial text query. Returns a page of matching teams with id, name, handle, description and links.next. Use productboard_teams_search for batch lookups. Use productboard_teams_list to browse. Use productboard_team_get for one team.
Inputs
handlesarray- Only match teams with one of these handles (case-insensitive). Example: ["product"]
namesarray- Only match teams with one of these names (case-insensitive). Example: ["Product Team", "Engineering Team"]
page_cursorstring- Cursor for the next page of results. Copy the pageCursor value from links.next of the previous response. Leave empty for the first page. Example: eyJvZmZzZXQiOjEwMH0
querystring- Text matched against team name and handle (partial, case-insensitive). Example: product
team_idsarray- Only match teams with these UUIDs (up to 100). Example: ["95db5914-36b0-45e9-8f6d-7f11a950ac1d"]
No tools match.