{"openapi":"3.1.0","info":{"title":"Productboard (BYOK) API","version":"0.1.0","description":"Productboard (BYOK) lets an AI assistant read your own Productboard data through the Productboard API with a key you supply (Productboard API access token (Pro plan or higher)). Read-only: 7 tools (list_notes, list_entities, list_members, list_teams, list_note_configurations, list_entity_configurations, list_member_activities). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-productboard.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-productboard/docs"},"termsOfService":"https://connectorbay.com/byok-productboard/terms"},"servers":[{"url":"https://byok-productboard.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-productboard/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_notes":{"post":{"operationId":"list_notes","summary":"List customer feedback notes, newest first, with type, custom field values (name, content, owner, tags), dates and link.","description":"List customer feedback notes, newest first, with type, custom field values (name, content, owner, tags), dates and link. Filter by archived, processed, creation and update time. Use for \"What feedback notes were added to Productboard this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"note_type":{"anyOf":[{"enum":["textNote","conversationNote","opportunityNote"],"type":"string"},{"type":"null"}],"default":null,"description":"Only notes of this type: textNote, conversationNote or opportunityNote.","title":"Note Type"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for archived notes only, false for non-archived only.","title":"Archived"},"processed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for processed notes only, false for unprocessed only.","title":"Processed"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only notes created at or after this ISO 8601 time, for example 2026-10-01T00:00:00Z.","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only notes created at or before this ISO 8601 time.","title":"Created To"},"updated_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only notes updated at or after this ISO 8601 time.","title":"Updated From"},"updated_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only notes updated at or before this ISO 8601 time.","title":"Updated To"},"page_cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the pageCursor value found inside links.next of the previous answer.","title":"Page Cursor"}},"title":"list_notesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_entities":{"post":{"operationId":"list_entities","summary":"List product entities (features, subfeatures, products, components, initiatives, objectives, releases and more) with typ","description":"List product entities (features, subfeatures, products, components, initiatives, objectives, releases and more) with type, field values (name, status, owner), dates and link. Use for \"Which features are in Productboard\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"entity_type":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only entities of this type, for example feature, subfeature, product, component, initiative, objective, keyResult, release, releaseGroup, task, user or company.","title":"Entity Type"},"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Only entities with this name.","title":"Name"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for archived entities only, false for non-archived only.","title":"Archived"},"page_cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the pageCursor value found inside links.next of the previous answer.","title":"Page Cursor"}},"title":"list_entitiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_members":{"post":{"operationId":"list_members","summary":"List workspace members with name, email, role, disabled and invitation flags and teams. Name and email show [redacted] u","description":"List workspace members with name, email, role, disabled and invitation flags and teams. Name and email show [redacted] unless the token has the members PII scope. Use for \"Who are the members of our Productboard workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive partial match on name or email (1 to 255 characters).","title":"Query"},"include_disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include disabled members.","title":"Include Disabled"},"include_invitation_pending":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include members whose invitation is still pending.","title":"Include Invitation Pending"},"page_cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the pageCursor value found inside links.next of the previous answer.","title":"Page Cursor"}},"title":"list_membersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_teams":{"post":{"operationId":"list_teams","summary":"List teams with name, handle, description and dates. Use for \"What teams exist in Productboard\".","description":"List teams with name, handle, description and dates. Use for \"What teams exist in Productboard\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Only the team with this name (case-insensitive, exact).","title":"Name"},"handle":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Only the team with this handle (case-insensitive, exact).","title":"Handle"},"query":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Case-insensitive partial match on name and handle.","title":"Query"},"page_cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the pageCursor value found inside links.next of the previous answer.","title":"Page Cursor"}},"title":"list_teamsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_note_configurations":{"post":{"operationId":"list_note_configurations","summary":"Describe which fields and relationships notes have in this workspace, per note type, so you know what list_notes returns","description":"Describe which fields and relationships notes have in this workspace, per note type, so you know what list_notes returns. Use for \"Which fields do Productboard notes have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"note_type":{"anyOf":[{"enum":["textNote","conversationNote","opportunityNote"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this note type: textNote, conversationNote or opportunityNote.","title":"Note Type"}},"title":"list_note_configurationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_entity_configurations":{"post":{"operationId":"list_entity_configurations","summary":"Describe which fields, relationships and filters each entity type (feature, product, release and so on) has in this work","description":"Describe which fields, relationships and filters each entity type (feature, product, release and so on) has in this workspace. Use for \"Which fields and filters do Productboard features support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"entity_type":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only this entity type, for example feature.","title":"Entity Type"}},"title":"list_entity_configurationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_member_activities":{"post":{"operationId":"list_member_activities","summary":"List daily member activity counts (boards opened or created, features, notes and insights created) with date, member id ","description":"List daily member activity counts (boards opened or created, features, notes and insights created) with date, member id and role. Use for \"How active were Productboard members in October\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First date to include (YYYY-MM-DD).","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last date to include (YYYY-MM-DD).","title":"Date To"},"page_cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the pageCursor value found inside links.next of the previous answer.","title":"Page Cursor"}},"title":"list_member_activitiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}