v2.0.0 — Productboard API V2 migration
Migration release for Productboard's REST API v2. Productboard sunsets v1 on 2026-07-08; this release moves the MCP off v1 wherever v2 can serve the query, and clearly flags the few surfaces with no v2 equivalent.
Breaking
- Note response shape changed across all note tools. v1 returned rich top-level fields (
displayUrl,followers,features[].importance, embeddedcomments[],totalResults); v2 returns a leaner shape with fields nested underfields{...}, relationships underrelationships{...}, and the web UI URL atlinks.html(replacing top-leveldisplayUrl). Tools affected:list_notes,list_all_notes,get_note,get_note_v1,resolve_note, and the V2 path ofsearch_notes. list_notesandlist_all_notesnow hide archived notes by default. Passarchived: trueto include them.list_notes:sourceRecordIdfilter is now sent asmetadata[source][recordId](wassource[recordId]in v1). A newsourceSystemfilter exposes v2'smetadata[source][system]. Source metadata may be empty during the v1→v2 data transition.list_all_notes: response no longer carriestotalResults(v2 dropped it). Pagination still works vianextPageCursor.
Added
- Hybrid
search_notes. Routes to v2POST /notes/searchby default; falls back to v1 only whenterm(fulltext) is set,allTagshas 2+ values, or bothallTagsandanyTagare present (v2 tag filter is OR-only). Response carriesapiVersion("v1"or"v2") and an optional_warningsarray so callers know which path served the query and why. - Auto-translated
lastwindow.search_notes'slastrelative-window strings ("6m","10d","24h","1h") are now translated to v2updatedAt.fromautomatically, solastno longer forces v1. list_notes/list_all_notes:archivedfilter. New optional boolean exposing v2's archived-note filter. Defaultfalse.
Deprecated
get_note_v1is now a thin alias forget_note. Both hit v2GET /notes/{id}. Kept only for backwards compatibility during the transition. Will be removed in the next major (v2.0.0-cleanup).add_note_commenthas no v2 equivalent. The tool will stop working on 2026-07-08 and will be removed in the next major.
Removed (effectively — no v2 equivalent)
- Top-level
note.displayUrl— usenote.links.html. - Top-level
note.followers[]— no v2 alternative. - Top-level
note.features[]inline on note responses — callget_note_relationshipsper note if you need them.features[].importanceis permanently removed. - Embedded
note.comments[]— seeadd_note_commentdeprecation. totalResultsin list responses.
Migration notes for callers
- If you read
note.displayUrl, switch tonote.links.html. - If you read
note.followers/note.features[].importance, accept the loss or call relationship endpoints separately. - If you relied on
totalResultsfor "how many notes match?", iterate the pages and count, or change the UX to paginate-as-you-go. - If you were calling
search_notes(term="..."), that still works via v1 fallback until 2026-07-08; plan for an alternative (e.g. embeddings index on top oflist_all_notes) before then. - If you were calling
add_note_comment, plan to remove that integration point before 2026-07-08.
Full changelog: CHANGELOG.md
npm: https://www.npmjs.com/package/@drmaxbdc/productboard-mcp/v/2.0.0