Skip to main content
Glama
productplan-mcp-server

productplan-mcp-server

by olgasafonova

ProductPlan MCP 서버

CI Go Report Card

AI를 사용하여 로드맵과 대화하세요. Claude, Cursor 또는 기타 AI 어시스턴트와 자연스러운 대화를 통해 질문하고, 아이디어를 생성하고, OKR 진행 상황을 확인하며, 출시 일정을 관리할 수 있습니다.

무엇을 할 수 있나요?

ProductPlan 인터페이스를 클릭하며 돌아다니는 대신, 다음과 같이 물어보세요:

"Q1 로드맵에는 무엇이 있나요?"

"일정이 지연된 모든 목표를 보여줘"

"모바일 앱 개선을 위한 새로운 아이디어를 생성해줘"

"이번 달에 예정된 출시 항목은 무엇인가요?"

"'customer-request' 태그가 지정된 모든 아이디어를 나열해줘"

AI가 실제 ProductPlan 데이터를 가져와 몇 초 만에 응답합니다.

Related MCP server: plane-mcp-server

누구를 위한 것인가요?

  • 제품 관리자(PM): 로드맵 데이터에 더 빠르게 접근하고 싶은 분

  • 팀 리드: 컨텍스트 전환 없이 빠른 상태 업데이트가 필요한 분

  • AI 어시스턴트(Claude, Cursor 등) 사용자: ProductPlan을 워크플로우에 통합하고 싶은 분

코딩은 필요 없습니다. 파일을 복사하고 몇 가지 설정을 붙여넣기만 하면 됩니다.


빠른 시작 (5분)

1단계: ProductPlan API 토큰 받기

  1. ProductPlan에 로그인합니다.

  2. Settings → API로 이동합니다 (또는 이 링크를 직접 방문하세요).

  3. API 토큰을 복사합니다.

2단계: 앱 다운로드

Releases 페이지로 이동하여 컴퓨터에 맞는 파일을 다운로드하세요:

컴퓨터

다운로드 항목

Mac (M1, M2, M3, M4)

productplan-darwin-arm64

Mac (Intel)

productplan-darwin-amd64

Windows

productplan-windows-amd64.exe

Linux

productplan-linux-amd64

Mac/Linux의 경우, 터미널을 열고 다음 두 명령어를 실행하세요 (파일 이름을 다운로드한 것으로 바꾸세요):

chmod +x ~/Downloads/productplan-darwin-arm64
sudo mv ~/Downloads/productplan-darwin-arm64 /usr/local/bin/productplan

비밀번호를 묻는 메시지가 나타납니다. 이는 정상입니다.

Windows의 경우:

  1. 바이너리를 위한 폴더를 생성합니다 (없는 경우):

    mkdir C:\Tools
  2. 다운로드한 .exe 파일을 해당 폴더로 이동하고 이름을 변경합니다:

    move %USERPROFILE%\Downloads\productplan-windows-amd64.exe C:\Tools\productplan.exe
  3. AI 어시스턴트 설정(3단계 참조)에서 전체 경로 C:\Tools\productplan.exe를 사용하세요.

참고: PATH에 추가하는 과정은 건너뛰어도 됩니다. 설정에서 전체 파일 경로를 사용하기만 하면 됩니다.

3단계: AI 어시스턴트에 연결

사용 중인 도구를 선택하세요:

  1. 설정 파일을 찾습니다:

    • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. 텍스트 편집기로 열고 다음을 추가합니다 (your-token을 실제 API 토큰으로 바꾸세요):

Mac/Linux:

{
  "mcpServers": {
    "productplan": {
      "command": "/usr/local/bin/productplan",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  }
}

Windows:

{
  "mcpServers": {
    "productplan": {
      "command": "C:\\Tools\\productplan.exe",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  }
}
  1. Claude Desktop을 재시작합니다.

설정 파일에 추가하세요:

  • Mac/Linux: ~/.claude.json

  • Windows: %USERPROFILE%\.claude.json

Mac/Linux:

{
  "mcpServers": {
    "productplan": {
      "command": "/usr/local/bin/productplan",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  }
}

Windows:

{
  "mcpServers": {
    "productplan": {
      "command": "C:\\Tools\\productplan.exe",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  }
}
  1. Cursor를 엽니다.

  2. Settings → MCP Servers로 이동합니다.

  3. 다음 설정을 추가합니다:

Mac/Linux:

{
  "productplan": {
    "command": "/usr/local/bin/productplan",
    "env": {
      "PRODUCTPLAN_API_TOKEN": "your-token"
    }
  }
}

Windows:

{
  "productplan": {
    "command": "C:\\Tools\\productplan.exe",
    "env": {
      "PRODUCTPLAN_API_TOKEN": "your-token"
    }
  }
}

Windows 사용자: 경로에 이중 백슬래시(\\)를 사용하세요. 백슬래시는 JSON에서 이스케이프 문자이므로 필수입니다.

  1. Cline 확장 프로그램을 설치합니다.

  2. VS Code 설정(JSON)을 열고 다음을 추가합니다:

Mac/Linux:

{
  "cline.mcpServers": {
    "productplan": {
      "command": "/usr/local/bin/productplan",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  }
}

Windows:

{
  "cline.mcpServers": {
    "productplan": {
      "command": "C:\\Tools\\productplan.exe",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  }
}
  1. Continue 확장 프로그램을 설치합니다.

  2. 설정 파일에 추가합니다:

    • Mac/Linux: ~/.continue/config.json

    • Windows: %USERPROFILE%\.continue\config.json

Mac/Linux:

{
  "mcpServers": [
    {
      "name": "productplan",
      "command": "/usr/local/bin/productplan",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  ]
}

Windows:

{
  "mcpServers": [
    {
      "name": "productplan",
      "command": "C:\\Tools\\productplan.exe",
      "env": {
        "PRODUCTPLAN_API_TOKEN": "your-token"
      }
    }
  ]
}
  1. n8n 인스턴스에 환경 변수를 설정합니다:

    N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
  2. 워크플로우에 MCP Client 노드를 추가합니다.

  3. 구성:

    • Command:

      • Mac/Linux: /usr/local/bin/productplan

      • Windows: C:\Tools\productplan.exe

    • Environment Variables: PRODUCTPLAN_API_TOKEN=your-token

  4. AI Agent 노드에 연결합니다.

워크플로우 예시: Slack Trigger → AI Agent (with MCP Client) → Slack Response

4단계: 질문 시작하기

AI 어시스턴트를 열고 다음을 시도해보세요:

  • "내 ProductPlan 로드맵 나열해줘"

  • "로드맵 [이름]에는 어떤 바(bar)들이 있나요?"

  • "우리 OKR을 보여줘"

  • "발굴(Discovery) 단계에 있는 아이디어는 무엇인가요?"


실제 활용 사례

아침 스탠드업 준비

"지난주 우리 제품 로드맵에서 변경된 사항을 요약해줘"

이해관계자 업데이트

"모든 Q1 목표와 진행 상황을 나열해줘"

아이디어 분류

"우선순위가 설정되지 않은 'enterprise' 태그가 붙은 모든 아이디어를 보여줘"

출시 조정

"1월 출시를 위해 아직 완료되지 않은 작업은 무엇인가요?"

빠른 조회

"'Mobile App v2' 바는 언제 시작될 예정인가요?"


어떤 ProductPlan 데이터에 접근할 수 있나요?

기능

보기

생성

수정

삭제

로드맵

예

-

-

-

로드맵 댓글

예

-

-

-

바 (로드맵 항목)

예

예

예

예

바 댓글

예

-

-

-

바 연결

예

예

-

예

바 링크

예

예

-

예

레인 (카테고리)

예

예

예

예

범례 (바 색상)

예

-

-

-

마일스톤

예

예

예

예

아이디어 (발굴)

예

예

예

-

아이디어 고객

예

-

-

-

아이디어 태그

예

-

-

-

기회

예

예

예

-

아이디어 양식

예

-

-

-

목표 (OKR)

예

예

예

예

핵심 결과

예

예

예

예

출시

예

예

예

예

출시 섹션

예

예

예

예

출시 작업

예

예

예

예

사용자

예

-

-

-

팀

예

-

-

-


작동 원리

┌─────────────────┐      spawns       ┌─────────────────┐      API calls     ┌─────────────────┐
│   AI Assistant  │ ───────────────── │   MCP Server    │ ─────────────────▶ │   ProductPlan   │
│ (Claude, Cursor)│ ◀───────────────▶ │   (this binary) │ ◀───────────────── │      API        │
└─────────────────┘   stdin/stdout    └─────────────────┘     JSON data      └─────────────────┘
      your computer                        your computer                         cloud

왜 컴퓨터에서 실행되어야 하나요?

MCP(Model Context Protocol)는 하위 프로세스 모델을 통해 작동합니다. AI 어시스턴트는 원격 서버에 연결하는 것이 아니라, 바이너리를 로컬 프로세스로 생성하고 표준 입출력(stdin/stdout)을 통해 통신합니다. 이 아키텍처의 의미는 다음과 같습니다:

  1. 바이너리가 로컬에 존재해야 합니다. AI 어시스턴트가 이를 자식 프로세스로 실행하기 때문입니다.

  2. API 토큰은 컴퓨터에 머무릅니다. 타사 서버를 거치지 않습니다.

  3. 실시간 동기식 통신. AI와 MCP 서버 간의 네트워크 지연이 없습니다.

  4. 오프라인 작동. 캐시된 데이터에 대해 작동합니다 (단, ProductPlan API 호출은 인터넷이 필요합니다).

"Q1 로드맵에는 무엇이 있나요?"라고 물으면 다음과 같은 일이 일어납니다:

  1. AI 어시스턴트가 ProductPlan 데이터가 필요함을 인식합니다.

  2. MCP 서버 프로세스에 구조화된 요청을 보냅니다.

  3. 바이너리가 이를 ProductPlan API 호출로 변환합니다.

  4. ProductPlan이 JSON 데이터를 반환합니다.

  5. 바이너리가 결과를 형식화하여 AI에게 반환합니다.

  6. AI가 자연어로 답변을 제시합니다.


에이전트 스킬

AI 어시스턴트가 ProductPlan 도구를 효과적으로 사용하는 방법을 가르치는 사전 구축된 워크플로우 가이드입니다. 각 스킬은 특정 페르소나에 맞춘 워크플로우를 제공합니다.

스킬

대상

초점

productplan-workflows

일반

핵심 패턴 및 도구 참조

productplan-pm

제품 관리자

전체 툴킷: 로드맵, OKR, 아이디어, 출시

productplan-leadership

경영진

포트폴리오 상태, 교차 로드맵 뷰

productplan-customer-facing

영업 및 CS

고객용 로드맵 타임라인

공유 원칙

모든 스킬은 다음 출력 규칙을 따릅니다:

  • 원시 JSON 금지 - 읽기 쉬운 텍스트와 표로 응답을 형식화합니다.

  • 사람이 읽을 수 있는 날짜 - "2025-03-15" 대신 "2025년 3월" 또는 "2025년 1분기"를 사용합니다.

  • 긴 목록 요약 - 50개의 항목으로 압도하지 말고, 확장할지 제안합니다.

페르소나별 변형:

  • PM은 후속 조치를 위해 bar_id를 포함합니다.

  • 경영진은 요약 정보를 우선시하고 구현 세부 사항을 숨깁니다.

  • 고객용은 내부 ID, 레인 이름, OKR을 완전히 생략합니다.

스킬을 사용하려면, SKILL.md 파일을 Claude Code 스킬 디렉토리에 복사하세요:

# Copy a skill (example: PM skill)
cp skills/productplan-pm/SKILL.md ~/.claude/skills/productplan-pm.md

또는 프롬프트에서 스킬을 직접 참조하세요:

"productplan-pm 워크플로우를 사용하여 Q1 로드맵을 보여줘"


문제 해결

"Command not found" 또는 "spawn ENOENT"

AI 어시스턴트가 바이너리를 찾을 수 없는 경우입니다. 다음을 확인하세요:

  • Mac/Linux: 파일이 /usr/local/bin/productplan에 없거나 chmod +x를 실행하는 것을 잊은 경우.

  • Windows: 설정의 경로가 .exe를 저장한 위치와 일치하지 않는 경우.

해결: 설정의 경로에 바이너리가 존재하는지 확인하세요. ls -la /usr/local/bin/productplan (Mac/Linux)을 실행하거나 C:\Tools\productplan.exe가 존재하는지 확인하세요.

Windows 경로 문제

Windows에서의 흔한 실수:

잘못된 예

올바른 예

/usr/local/bin/productplan

C:\\Tools\\productplan.exe

C:\Tools\productplan.exe (JSON에서 단일 백슬래시)

C:\\Tools\\productplan.exe

productplan (경로 없음)

C:\\Tools\\productplan.exe

.exe 확장자 누락

경로에 .exe 포함

Windows는 경로에 백슬래시(\)를 사용하지만, JSON은 백슬래시를 이스케이프 문자로 취급합니다. 설정 파일에서는 이를 두 번(\\) 입력해야 합니다.

"Invalid API token"

ProductPlan Settings → API에서 토큰을 다시 확인하세요. 토큰은 만료되거나 재생성될 수 있습니다. 공백 없이 전체 토큰을 복사했는지 확인하세요.

"No roadmaps found"

API 토큰은 ProductPlan에서 볼 수 있는 권한이 있는 데이터에만 접근합니다. 계정에 찾으려는 로드맵에 대한 접근 권한이 있는지 확인하세요.

AI 어시스턴트가 ProductPlan 도구를 보지 못함

MCP 서버는 설정이 변경될 때가 아니라 AI 어시스턴트가 시작될 때 로드됩니다. 설정 파일을 편집한 후에는 애플리케이션을 완전히 종료하고 다시 시작하세요. Mac에서는 Cmd+Q를 사용하세요 (창만 닫는 것이 아님).

"Permission denied" (Mac/Linux)

바이너리에 실행 권한이 필요합니다. 다음을 실행하세요:

chmod +x /usr/local/bin/productplan

명령줄 (선택 사항)

AI 어시스턴트 없이 터미널에서 직접 이 도구를 사용할 수도 있습니다:

# First, set your token
export PRODUCTPLAN_API_TOKEN="your-token"

# Then run commands
productplan status           # Check connection
productplan roadmaps         # List all roadmaps
productplan bars 12345       # List bars in roadmap #12345
productplan objectives       # List all OKRs
productplan ideas            # List all ideas
productplan opportunities    # List all opportunities
productplan launches         # List all launches

배경 정보

MCP란 무엇인가요?

Model Context Protocol (MCP)는 AI 어시스턴트가 외부 도구에 연결할 수 있도록 하는 개방형 표준입니다. Anthropic

Available Tools

50 tools
bulk_create_barsA

Create many bars on one roadmap in one call.

USE WHEN: "Add these 20 features to the roadmap", "Import this list as bars", "Create a bar per epic" For a single bar, use manage_bar instead. Each item needs name and a lane (lane name or lane_id), from the item or from set. Put shared values in set (e.g. set:{"lane":"Backend","legend":"Exploring"}). Up to 100 items. All items are validated against the roadmap before anything is written; one invalid item means nothing is sent. dry_run:true returns the exact POST payloads without writing. Parking follows manage_bar: a bar given starts_on and ends_on and no parked lands on the timeline (parked:false); an undated bar is parked by ProductPlan's default; a nested bar inherits its container's parked state. Writes run 4 at a time under the client's rate limiter. Returns per-item {index, bar_id, name, ok, error} and a summary like "Created 18 of 20 bars; 2 failed". The result is an error only when no bar was created. On a partial failure, retry only the failed items: resending the whole call would duplicate the bars that were created. FAILS WHEN: roadmap_id missing, items empty or over 100, an item without name or lane, a name not on the roadmap.

NameRequiredDescriptionDefault
setNoFields applied to every item unless the item sets them itself
itemsYesBars to create: [{name, lane or lane_id, ...fields}]. Fields are the same as manage_bar create.
dry_runNoTrue to validate and return the payloads without writing
roadmap_idYesRoadmap to create the bars on
bulk_delete_barsA
Destructive

Permanently delete many bars in one call, verifying each delete.

USE WHEN: "Delete these bars", "Remove all the test bars I just made", "Clean up the parked duplicates" For a single bar, use manage_bar action=delete instead. Requires confirm:true. dry_run:true looks each bar up and returns its name without deleting, so the list can be checked first. Up to 100 bar_ids, each once. Each delete is verified by reading the bar back and expecting 404; a bar that still exists after a successful-looking delete is reported as failed. Deletes run 4 at a time under the client's rate limiter. Returns per-item {index, bar_id, ok, error} and a summary like "Deleted 9 of 10 bars; 1 failed". The result is an error only when no bar was deleted. FAILS WHEN: confirm is not true (and dry_run is not set), bar_ids empty, over 100, malformed, or repeated. WARNING: delete is permanent and cannot be undone.

NameRequiredDescriptionDefault
bar_idsYesBar IDs to delete
confirmNoMust be true to delete
dry_runNoTrue to look the bars up and list them without deleting
bulk_update_barsA
Destructive

Update many bars in one call: recolor, move lanes, retag, reschedule, set progress.

USE WHEN: "Color all these bars Committed", "Move these 12 bars to the Backend lane", "Set percent_done on every Q3 bar" For a single bar, use manage_bar instead. Put values shared by every bar in set (e.g. set:{"legend":"Committed"}) and per-bar values in items; an item's own fields override set. Up to 100 items; each bar_id may appear once. Every item is validated before anything is written: legend, lane, custom field labels, and dropdown values are checked against each bar's roadmap (one roadmap fetch per distinct roadmap; pass roadmap_id to skip looking up each bar's roadmap). One invalid item means nothing is sent, and the error lists every problem with the valid options. dry_run:true returns the exact PATCH payload per bar without writing. Writes run 4 at a time under the client's rate limiter. Returns per-item {index, bar_id, ok, error} and a summary like "Updated 28 of 30 bars; 2 failed". The result is an error only when no bar was updated. A partial failure is a normal result whose summary counts the failures; retry only the failed items. FAILS WHEN: items empty or over 100, a bar_id missing or repeated, a name not on the roadmap, legend_id or effort passed (see manage_bar).

NameRequiredDescriptionDefault
setNoFields applied to every item unless the item sets them itself, e.g. {"legend":"Committed"}. Same fields as items
itemsYesBars to update: [{bar_id, ...fields}]. Fields are the same as manage_bar update: name, lane, lane_id, legend, clear_legend, starts_on, ends_on, description, percent_done, is_container, container_bar_id, parked, strategic_value, notes, tags, custom_text_fields, custom_dropdown_fields. Optional per-item roadmap_id.
dry_runNoTrue to validate and return the payloads without writing
roadmap_idNoRoadmap all bars are on; skips one bar lookup per item when names need validating
check_statusA
Read-only

Check ProductPlan API status and authentication.

USE WHEN: "Is ProductPlan connected?", "Check API" For MCP server internals (cache stats, rate limits), use health_check instead.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_barA
Read-only

Get bar details including description, links, custom fields.

USE WHEN: "Tell me about this feature", "Bar details" Returns bar name, dates, description, links, custom fields, percent_done, and lane info. FAILS WHEN: bar_id not found (get valid IDs from get_roadmap_bars).

NameRequiredDescriptionDefault
bar_idYesBar ID from get_roadmap_bars

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_bar_childrenA
Read-only

Get child bars nested under a parent bar.

USE WHEN: "Show sub-tasks", "Child items", "Break down this feature" FAILS WHEN: bar_id not found. Returns empty list if bar has no children (not all bars are containers).

NameRequiredDescriptionDefault
bar_idYesParent bar ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_bar_commentsA
Read-only

Get comments on a bar.

USE WHEN: "Show comments", "What's the feedback on this bar?" For roadmap-level comments, use get_roadmap_comments instead. FAILS WHEN: bar_id not found.

NameRequiredDescriptionDefault
bar_idYesBar ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_bar_connectionsA
Read-only

Get bar dependencies (what blocks what).

USE WHEN: "What depends on this?", "Show dependencies" FAILS WHEN: bar_id not found. Returns empty list if bar has no connections.

NameRequiredDescriptionDefault
bar_idYesBar ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_ideaA
Read-only

Get idea details including description and metadata.

USE WHEN: "Tell me about this idea", "Full request details" FAILS WHEN: idea_id not found (get valid IDs from list_ideas).

NameRequiredDescriptionDefault
idea_idYesIdea ID from list_ideas

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_idea_formA
Read-only

Get idea form details with fields.

USE WHEN: "Show form fields", "What does this form collect?" FAILS WHEN: form_id not found (get valid IDs from list_idea_forms).

NameRequiredDescriptionDefault
form_idYesForm ID from list_idea_forms

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_key_resultA
Read-only

Get key result details.

USE WHEN: "Tell me about this KR", "KR progress" FAILS WHEN: objective_id or key_result_id not found (use list_key_results to get valid KR IDs).

NameRequiredDescriptionDefault
objective_idYesParent objective ID
key_result_idYesKey result ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_launchA
Read-only

Get launch details with checklist.

USE WHEN: "Tell me about this launch", "Launch readiness" FAILS WHEN: launch_id not found (get valid IDs from list_launches).

NameRequiredDescriptionDefault
launch_idYesLaunch ID from list_launches

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_launch_sectionA
Read-only

Get a specific checklist section by ID.

USE WHEN: "Show one specific checklist section by ID" For all sections, use get_launch_sections. FAILS WHEN: launch_id or section_id not found.

NameRequiredDescriptionDefault
launch_idYesLaunch ID
section_idYesSection ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_launch_sectionsA
Read-only

Get checklist sections for a launch.

USE WHEN: "Show sections", "Checklist categories" For one specific section, use get_launch_section. FAILS WHEN: launch_id not found.

NameRequiredDescriptionDefault
launch_idYesLaunch ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_launch_taskA
Read-only

Get a specific launch task by ID.

USE WHEN: "Show one specific task by ID", "Check task assignment or status" For all tasks, use get_launch_tasks. FAILS WHEN: launch_id or task_id not found.

NameRequiredDescriptionDefault
task_idYesTask ID
launch_idYesLaunch ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_launch_tasksA
Read-only

Get all tasks for a launch.

USE WHEN: "Show tasks", "What needs to be done?" For one specific task, use get_launch_task. FAILS WHEN: launch_id not found.

NameRequiredDescriptionDefault
launch_idYesLaunch ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_objectiveA
Read-only

Get objective details with key results.

USE WHEN: "Tell me about objective X", "OKR progress" FAILS WHEN: objective_id not found (get valid IDs from list_objectives).

NameRequiredDescriptionDefault
objective_idYesObjective ID from list_objectives

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_opportunityA
Read-only

Get opportunity details with linked ideas.

USE WHEN: "Tell me about this opportunity" FAILS WHEN: opportunity_id not found (get valid IDs from list_opportunities).

NameRequiredDescriptionDefault
opportunity_idYesOpportunity ID from list_opportunities

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmapA
Read-only

Get roadmap settings and metadata.

USE WHEN: "Tell me about roadmap X", "Roadmap settings", "What custom fields does this roadmap have?" For all data in one call (bars, lanes, milestones), use get_roadmap_complete. Returns roadmap name, date range, sharing settings, and metadata, including the vocabulary bar writes must use: legends (names), lanes (names), custom_text_fields [{label}], and custom_dropdown_fields [{label, allowed_values}]. manage_bar and the bulk_*_bars tools validate against exactly these. FAILS WHEN: roadmap_id not found (get valid IDs from list_roadmaps first).

NameRequiredDescriptionDefault
roadmap_idYesRoadmap ID from list_roadmaps

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmap_barsA
Read-only

Get bars (features/items) on a roadmap, optionally filtered.

USE WHEN: "What's on the roadmap?", "Show planned features", "What's starting in Q2?", "Bars in the Mobile lane tagged urgent" Server-side filters (sent to ProductPlan): name_contains, starts_after/starts_before, ends_after/ends_before (YYYY-MM-DD, inclusive), is_container, sort ("starts_on asc"). Client-side filters (applied here to every fetched bar, before the 50-item cap): lane (name or ID), legend (name), tag. Exact, case-insensitive. Returns bars with ID, name, starts_on/ends_on, lane_name and lane_id, legend, tags, percent_done, is_container, and parked. For a bar's description and custom fields, use get_bar. FAILS WHEN: roadmap_id not found (use list_roadmaps); a date is not YYYY-MM-DD; sort names a field outside the allowed list (the error lists them). Says "No bars matched the filters" when filters exclude everything.

NameRequiredDescriptionDefault
tagNoOnly bars carrying this tag (client-side, case-insensitive)
laneNoOnly bars in this lane, by name or lane ID (client-side, case-insensitive)
sortNoSort as "field" or "field asc|desc" (server-side). Fields: id, name, starts_on, ends_on, is_container, created_at, updated_at
legendNoOnly bars with this legend name (client-side, case-insensitive; names from get_roadmap_legends)
ends_afterNoOnly bars ending on or after this date, YYYY-MM-DD (server-side)
roadmap_idYesRoadmap ID
ends_beforeNoOnly bars ending on or before this date, YYYY-MM-DD (server-side)
is_containerNotrue for container bars only, false to exclude containers (server-side)
starts_afterNoOnly bars starting on or after this date, YYYY-MM-DD (server-side)
name_containsNoOnly bars whose name contains this text (case-insensitive, server-side)
starts_beforeNoOnly bars starting on or before this date, YYYY-MM-DD (server-side)

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmap_commentsA
Read-only

Get roadmap-level comments (not bar comments).

USE WHEN: "Show roadmap comments", "Roadmap discussion" For bar-level comments, use get_bar_comments instead. Returns array of comments with author, body, and timestamp. FAILS WHEN: roadmap_id not found (use list_roadmaps).

NameRequiredDescriptionDefault
roadmap_idYesRoadmap ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmap_completeA
Read-only

Get complete roadmap in one call. Details, bars, lanes, milestones combined.

USE WHEN: "Full roadmap overview", "Summarize roadmap X" For settings/metadata only, use get_roadmap. Returns combined roadmap details, bars, lanes, and milestones in one response. FAILS WHEN: roadmap_id not found (use list_roadmaps).

NameRequiredDescriptionDefault
roadmap_idYesRoadmap ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmap_lanesA
Read-only

Get lanes (categories) on a roadmap. Lanes organize bars into rows.

USE WHEN: "What lanes are on the roadmap?", "Show categories" Returns array of lanes with ID, name, description, and position (the API exposes no lane color). FAILS WHEN: roadmap_id not found (use list_roadmaps).

NameRequiredDescriptionDefault
roadmap_idYesRoadmap ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmap_legendsA
Read-only

Get the legend names (bar colors) for a roadmap.

USE WHEN: "What colors are available?", "Show the legend", "Which legend can I color bars with?" Returns an array of legend names. The ProductPlan API exposes legends by name only: there is no legend ID or hex color to return. Pass a name as legend on manage_bar, bulk_update_bars, or bulk_create_bars to color a bar. For custom field definitions (labels, dropdown allowed_values), use get_roadmap instead. To find bars by legend, use get_roadmap_bars with legend. FAILS WHEN: roadmap_id not found (use list_roadmaps).

NameRequiredDescriptionDefault
roadmap_idYesRoadmap ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
get_roadmap_milestonesA
Read-only

Get milestones (key dates) on a roadmap.

USE WHEN: "What are the key dates?", "Show milestones" Returns array of milestones with ID, title, and date. FAILS WHEN: roadmap_id not found (use list_roadmaps).

NameRequiredDescriptionDefault
roadmap_idYesRoadmap ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
health_checkA
Read-only

Check MCP server health and cache stats.

USE WHEN: "Server status", "Rate limits", "Diagnose issues" For API connectivity only, use check_status instead. FAILS WHEN: deep=true and API is unreachable. Basic health (deep=false) always succeeds if server is running.

NameRequiredDescriptionDefault
deepNoAlso verify API connectivity (~500ms)

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_all_customersA
Read-only

List all customers across ideas. Returns customer names and linked idea counts.

USE WHEN: "Who are our customers?", "All feedback sources" FAILS WHEN: API token invalid.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_all_tagsA
Read-only

List all tags used across ideas. Returns tag names and usage counts across ideas.

USE WHEN: "What tags exist?", "Show categories" FAILS WHEN: API token invalid.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_idea_formsA
Read-only

List idea submission forms.

USE WHEN: "Show feedback forms", "What forms exist?" Returns array of forms with ID and name. FAILS WHEN: API token invalid.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_ideasA
Read-only

List all ideas in discovery pipeline. START HERE for ideas.

USE WHEN: "Show customer feedback", "What ideas do we have?", "Ideas mentioning SSO" Optional server-side filters: name_contains (case-insensitive), channel (exact); sort ("name asc"). Returns ideas with ID, name, channel, and opportunities_count. FAILS WHEN: API token invalid; sort names a field outside the allowed list (the error lists them). Returns empty list if no ideas exist.

NameRequiredDescriptionDefault
sortNoSort as "field" or "field asc|desc" (server-side). Fields: id, name, description, channel, customer, opportunities_count, source_name, source_email, location_status
channelNoOnly ideas from this channel, exact match (server-side)
name_containsNoOnly ideas whose name contains this text (case-insensitive, server-side)

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_key_resultsA
Read-only

List key results for an objective.

USE WHEN: "What are the KRs?", "Show metrics" Returns array of key results with ID, name, target_value, and current_value. FAILS WHEN: objective_id not found (use list_objectives).

NameRequiredDescriptionDefault
objective_idYesObjective ID

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_launchesA
Read-only

List all launches. START HERE for launches.

USE WHEN: "Show launches", "Release schedule", "Launches this quarter" Optional server-side filters: name_contains (case-insensitive), status (exact), launch_after/launch_before (YYYY-MM-DD, inclusive); sort ("launch_date asc"). Returns array of launches with ID, name, launch_date, status, and progress. FAILS WHEN: API token invalid; a date is not YYYY-MM-DD; sort names a field outside the allowed list (the error lists them). Returns empty list if no launches exist.

NameRequiredDescriptionDefault
sortNoSort as "field" or "field asc|desc" (server-side). Fields: id, name, description, launch_date, status, user_id
statusNoOnly launches with this status, exact match (server-side)
launch_afterNoOnly launches on or after this date, YYYY-MM-DD (server-side)
launch_beforeNoOnly launches on or before this date, YYYY-MM-DD (server-side)
name_containsNoOnly launches whose name contains this text (case-insensitive, server-side)

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_objectivesA
Read-only

List all OKR objectives. START HERE for OKRs.

USE WHEN: "Show OKRs", "What are our objectives?" Returns array of objectives with ID, name, risk_status, start_date, end_date, and key_results_count. FAILS WHEN: API token invalid. Returns empty list if no objectives exist.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_opportunitiesA
Read-only

List all opportunities. START HERE for discovery.

USE WHEN: "Show opportunities", "Discovery pipeline", "Opportunities about onboarding" Optional server-side filters: problem_contains (case-insensitive), workflow_status (exact); sort ("ideas_count desc"). Returns array of opportunities with ID, problem_statement, workflow_status, and linked idea count. FAILS WHEN: API token invalid; sort names a field outside the allowed list (the error lists them). Returns empty list if no opportunities exist.

NameRequiredDescriptionDefault
sortNoSort as "field" or "field asc|desc" (server-side). Fields: id, problem_statement, workflow_status, location_status, description, user_id, ideas_count, bars_count
workflow_statusNoOnly opportunities in this workflow status, exact match (server-side)
problem_containsNoOnly opportunities whose problem statement contains this text (case-insensitive, server-side)

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_roadmapsA
Read-only

List all roadmaps. START HERE to get roadmap IDs.

USE WHEN: "Show my roadmaps", "What roadmaps do I have?", "Find the Mobile roadmap" Optional server-side filters: name_contains (case-insensitive); sort ("name asc", "updated_at desc"). Returns roadmaps with ID, name, and updated_at. FAILS WHEN: API token invalid or expired (check PRODUCTPLAN_API_TOKEN env var); sort names a field outside the allowed list (the error lists them).

NameRequiredDescriptionDefault
sortNoSort as "field" or "field asc|desc" (server-side). Fields: id, name, is_version, created_at, updated_at
name_containsNoOnly roadmaps whose name contains this text (case-insensitive, server-side)

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_teamsA
Read-only

List all teams in account.

USE WHEN: "What teams exist?", "Team structure" For individual user details, use list_users instead.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
list_usersA
Read-only

List all users in account.

USE WHEN: "Who has access?", "Team members" Returns array of users with ID, name, email, and role. Use user IDs from this tool when assigning launch tasks via manage_launch_task.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYesThe ProductPlan payload (object or array) returned by the API, passed through verbatim
summaryYesHuman-readable summary of the result (e.g. "Found 3 roadmaps")
manage_barA
Destructive

Create, update, or delete a bar on a roadmap.

USE WHEN: "Add feature", "Update dates", "Delete item", "Change color", "Nest this bar under that one" For many bars at once (e.g. "color these 30 bars"), use bulk_update_bars, bulk_create_bars, or bulk_delete_bars instead. Actions: create (roadmap_id + name + lane or lane_id), update (bar_id + any fields), delete (bar_id) Color a bar with legend (a legend NAME from get_roadmap_legends); legend:"" or clear_legend:true removes the color. Omitted fields are never sent, so an update only touches what you pass. New bars are parked (off the timeline) by ProductPlan's default. When you give starts_on and ends_on on create and leave parked unset, the bar defaults to parked:false so it lands on the timeline; a nested bar inherits its container's parked state. Names (legend, lane, custom field labels, dropdown values) are checked against the roadmap before writing, matched case-insensitively, and sent in canonical spelling. Returns: create gives the new bar's id plus the bar read back; update gives the exact fields sent. FAILS WHEN: create without roadmap_id, name, or a lane; update/delete without bar_id; a legend, lane, or custom field name is not on the roadmap (the error lists the valid ones); container_bar_id on a bar without both dates, or a parked state that differs from the container's. legend_id and effort are rejected with an explanation (legend_id would wipe the bar's color). A bar cannot be un-nested via the API once container_bar_id is set. WARNING: delete is permanent and cannot be undone.

NameRequiredDescriptionDefault
laneNoLane NAME (see get_roadmap lanes). Use this or lane_id
nameNoBar name
tagsNoTag strings; REPLACES the bar's tag list. [] clears it
notesNoAdditional notes
actionYescreate, update, or delete
bar_idNoBar ID (for update/delete)
effortNoDEPRECATED and rejected: not a ProductPlan bar field (the API ignores it). Use a custom field
legendNoLegend NAME that colors the bar (from get_roadmap_legends). Empty string clears the color
parkedNoTrue parks the bar (off the timeline, kept on the roadmap). Must match the container's when nested
ends_onNoEnd date YYYY-MM-DD
lane_idNoLane ID from get_roadmap_lanes. Use this or lane
containerNoDEPRECATED alias for is_container
legend_idNoDEPRECATED and rejected: the API reads legend_id as 'clear the color'. Use legend (name)
parent_idNoDEPRECATED alias for container_bar_id
starts_onNoStart date YYYY-MM-DD
roadmap_idNoRoadmap ID (required for create; optional on update to skip looking up the bar's roadmap)
descriptionNoDescription (markdown)
clear_legendNoTrue to remove the bar's color (same as legend:"")
is_containerNoTrue to make the bar a container for child bars
percent_doneNoProgress 0-100
strategic_valueNoFree-text strategic importance note
container_bar_idNoNumeric ID of the container bar to nest under. Requires starts_on and ends_on on the bar; cannot be removed once set
custom_text_fieldsNo[{label,value}] using labels from get_roadmap custom_text_fields
custom_dropdown_fieldsNo[{label,value}]; value must be one of the field's allowed_values from get_roadmap
manage_bar_connectionA
Destructive

Create or delete dependency between bars.

USE WHEN: "Link features", "Add dependency", "Remove dependency" Actions: create (target_bar_id), delete (connection_id) FAILS WHEN: create without target_bar_id, delete without connection_id (get IDs from get_bar_connections).

NameRequiredDescriptionDefault
actionYescreate or delete
bar_idYesSource bar ID
connection_idNoConnection ID (for delete)
target_bar_idNoTarget bar (for create)
manage_ideaA
Destructive

Create or update an idea. Note: delete not available via API.

USE WHEN: "Add idea", "Update idea status" Actions: create (title), update (idea_id) Returns the created/updated idea object. FAILS WHEN: create without title, update without idea_id. Note: delete is not available via the ProductPlan API; archive ideas by updating status instead.

NameRequiredDescriptionDefault
titleNoIdea title
actionYescreate or update
statusNoIdea workflow status
idea_idNoIdea ID (for update)
descriptionNoDescription (markdown)
manage_key_resultA
Destructive

Create, update, or delete a key result.

USE WHEN: "Add KR", "Update progress", "Delete KR" Actions: create (name+target), update (key_result_id), delete (key_result_id) Returns the created/updated key result, or confirmation on delete. FAILS WHEN: create without name or target_value, update/delete without key_result_id (use list_key_results).

NameRequiredDescriptionDefault
nameNoKey result name
actionYescreate, update, or delete
objective_idYesParent objective ID
target_valueNoTarget (100, 50%, $1M)
current_valueNoCurrent progress
key_result_idNoKey result ID (for update/delete)
manage_laneA
Destructive

Create, update, or delete a lane on a roadmap.

USE WHEN: "Add Backend lane", "Rename Mobile lane", "Move lane to the top", "Delete lane" Actions: create (name; optional description, position), update (lane_id plus any of name, description, position), delete (lane_id) Returns the created/updated lane object, or confirmation on delete. FAILS WHEN: create without name, update/delete without lane_id (get IDs from get_roadmap_lanes), color passed (lanes have no settable color in the API). WARNING: delete removes the lane and unassigns all bars in it.

NameRequiredDescriptionDefault
nameNoLane name
colorNoDEPRECATED and rejected: lanes have no color field in the ProductPlan API, so it was never applied
actionYescreate, update, or delete
lane_idNoLane ID (for update/delete)
positionNoPosition of the lane in the roadmap
roadmap_idYesRoadmap ID
descriptionNoWhat the lane represents
manage_launchA
Destructive

Create, update, or delete a launch.

USE WHEN: "Create launch", "Update date", "Delete launch" Actions: create (name+date), update (launch_id), delete (launch_id) Returns the created/updated launch object, or confirmation on delete. FAILS WHEN: create without name or date, update/delete without launch_id, date not in YYYY-MM-DD format. WARNING: delete removes the launch and all its sections and tasks.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD
nameNoLaunch name
actionYescreate, update, or delete
launch_idNoLaunch ID (for update/delete)
descriptionNoDescription
manage_launch_sectionA
Destructive

Create, update, or delete a checklist section.

USE WHEN: "Add Marketing section", "Rename section", "Delete section" Actions: create (name), update (section_id), delete (section_id) Returns the created/updated section object, or confirmation on delete. FAILS WHEN: create without name, update/delete without section_id (get IDs from get_launch_sections). WARNING: delete removes the section and all tasks in it.

NameRequiredDescriptionDefault
nameNoSection name
actionYescreate, update, or delete
launch_idYesLaunch ID
section_idNoSection ID (for update/delete)
manage_launch_taskA
Destructive

Create, update, or delete a launch task.

USE WHEN: "Add task", "Mark complete", "Assign task", "Delete task" Actions: create (name+section_id), update (task_id), delete (task_id) Returns the created/updated task object, or confirmation on delete. FAILS WHEN: create without name or section_id, update/delete without task_id (get IDs from get_launch_tasks). Use list_users to get valid assigned_user_id values.

NameRequiredDescriptionDefault
nameNoTask name
actionYescreate, update, or delete
statusNoTask status
task_idNoTask ID (for update/delete)
due_dateNoYYYY-MM-DD
launch_idYesLaunch ID
section_idNoSection ID (for create)
descriptionNoTask description
assigned_user_idNoUser ID to assign (get from list_users)
manage_milestoneA
Destructive

Create, update, or delete a milestone on a roadmap.

USE WHEN: "Add launch milestone", "Move demo date", "Delete milestone" Actions: create (title+date), update (milestone_id), delete (milestone_id) Returns the created/updated milestone object, or confirmation on delete. FAILS WHEN: create without title or date, update/delete without milestone_id (get IDs from get_roadmap_milestones), date not in YYYY-MM-DD format.

NameRequiredDescriptionDefault
dateNoYYYY-MM-DD format
titleNoMilestone title
actionYescreate, update, or delete
roadmap_idYesRoadmap ID
milestone_idNoMilestone ID (for update/delete)
manage_objectiveA
Destructive

Create, update, or delete an objective.

USE WHEN: "Add Q1 objective", "Update objective", "Delete OKR" Actions: create (name), update (objective_id), delete (objective_id) Returns the created/updated objective, or confirmation on delete. FAILS WHEN: create without name, update/delete without objective_id. WARNING: delete also removes all key results under this objective.

NameRequiredDescriptionDefault
nameNoObjective name
actionYescreate, update, or delete
time_frameNoQ1 2024, H1 2024, 2024
descriptionNoDescription
objective_idNoObjective ID (for update/delete)
manage_opportunityA
Destructive

Create or update an opportunity. Note: delete not available via API.

USE WHEN: "Create opportunity", "Update problem" Actions: create (problem_statement), update (opportunity_id) Returns the created/updated opportunity object. FAILS WHEN: create without problem_statement, update without opportunity_id (get IDs from list_opportunities). Note: delete is not available via the ProductPlan API; archive opportunities by updating workflow_status instead.

NameRequiredDescriptionDefault
actionYescreate or update
descriptionNoDescription
opportunity_idNoOpportunity ID (for update)
workflow_statusNoOpportunity workflow status
problem_statementNoProblem statement (title)

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 40 tool updatesv6.0.0
    • Addedbulk_create_bars
    • Addedbulk_delete_bars
    • Addedbulk_update_bars
    • Changedcheck_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_bar1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_bar_children1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_bar_comments1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_bar_connections1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_bar_links1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_idea1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_idea_form1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_key_result1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_launch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_launch_section1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_launch_sections1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_launch_task1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_launch_tasks1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_objective1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_opportunity1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap_bars11 fields changed
      • addedInput schema / properties / ends_after
        Added value: +{
        +  "description": "Only bars ending on or after this date, YYYY-MM-DD (server-side)",
        +  "examples": [
        +    "2026-01-01"
        +  ],
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / ends_before
        Added value: +{
        +  "description": "Only bars ending on or before this date, YYYY-MM-DD (server-side)",
        +  "examples": [
        +    "2026-01-01"
        +  ],
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / is_container
        Added value: +{
        +  "description": "true for container bars only, false to exclude containers (server-side)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / lane
        Added value: +{
        +  "description": "Only bars in this lane, by name or lane ID (client-side, case-insensitive)",
        +  "type": "string"
        +}
      • addedInput schema / properties / legend
        Added value: +{
        +  "description": "Only bars with this legend name (client-side, case-insensitive; names from get_roadmap_legends)",
        +  "type": "string"
        +}
      • addedInput schema / properties / name_contains
        Added value: +{
        +  "description": "Only bars whose name contains this text (case-insensitive, server-side)",
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Sort as \"field\" or \"field asc|desc\" (server-side). Fields: id, name, starts_on, ends_on, is_container, created_at, updated_at",
        +  "examples": [
        +    "name asc"
        +  ],
        +  "pattern": "^(id|name|starts_on|ends_on|is_container|created_at|updated_at)( (asc|desc))?$",
        +  "type": "string"
        +}
      • addedInput schema / properties / starts_after
        Added value: +{
        +  "description": "Only bars starting on or after this date, YYYY-MM-DD (server-side)",
        +  "examples": [
        +    "2026-01-01"
        +  ],
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / starts_before
        Added value: +{
        +  "description": "Only bars starting on or before this date, YYYY-MM-DD (server-side)",
        +  "examples": [
        +    "2026-01-01"
        +  ],
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / tag
        Added value: +{
        +  "description": "Only bars carrying this tag (client-side, case-insensitive)",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap_comments1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap_complete1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap_lanes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap_legends1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedget_roadmap_milestones1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedhealth_check1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_all_customers1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_all_tags1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_idea_forms1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_ideas2 fields changed
      • addedInput schema / properties
        Added value: +{
        +  "channel": {
        +    "description": "Only ideas from this channel, exact match (server-side)",
        +    "type": "string"
        +  },
        +  "name_contains": {
        +    "description": "Only ideas whose name contains this text (case-insensitive, server-side)",
        +    "type": "string"
        +  },
        +  "sort": {
        +    "description": "Sort as \"field\" or \"field asc|desc\" (server-side). Fields: id, name, description, channel, customer, opportunities_count, source_name, source_email, location_status",
        +    "examples": [
        +      "name asc"
        +    ],
        +    "pattern": "^(id|name|description|channel|customer|opportunities_count|source_name|source_email|location_status)( (asc|desc))?$",
        +    "type": "string"
        +  }
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_key_results1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_launches2 fields changed
      • addedInput schema / properties
        Added value: +{
        +  "launch_after": {
        +    "description": "Only launches on or after this date, YYYY-MM-DD (server-side)",
        +    "examples": [
        +      "2026-01-01"
        +    ],
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  },
        +  "launch_before": {
        +    "description": "Only launches on or before this date, YYYY-MM-DD (server-side)",
        +    "examples": [
        +      "2026-01-01"
        +    ],
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  },
        +  "name_contains": {
        +    "description": "Only launches whose name contains this text (case-insensitive, server-side)",
        +    "type": "string"
        +  },
        +  "sort": {
        +    "description": "Sort as \"field\" or \"field asc|desc\" (server-side). Fields: id, name, description, launch_date, status, user_id",
        +    "examples": [
        +      "name asc"
        +    ],
        +    "pattern": "^(id|name|description|launch_date|status|user_id)( (asc|desc))?$",
        +    "type": "string"
        +  },
        +  "status": {
        +    "description": "Only launches with this status, exact match (server-side)",
        +    "type": "string"
        +  }
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_objectives1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_opportunities2 fields changed
      • addedInput schema / properties
        Added value: +{
        +  "problem_contains": {
        +    "description": "Only opportunities whose problem statement contains this text (case-insensitive, server-side)",
        +    "type": "string"
        +  },
        +  "sort": {
        +    "description": "Sort as \"field\" or \"field asc|desc\" (server-side). Fields: id, problem_statement, workflow_status, location_status, description, user_id, ideas_count, bars_count",
        +    "examples": [
        +      "problem_statement asc"
        +    ],
        +    "pattern": "^(id|problem_statement|workflow_status|location_status|description|user_id|ideas_count|bars_count)( (asc|desc))?$",
        +    "type": "string"
        +  },
        +  "workflow_status": {
        +    "description": "Only opportunities in this workflow status, exact match (server-side)",
        +    "type": "string"
        +  }
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_roadmaps2 fields changed
      • addedInput schema / properties
        Added value: +{
        +  "name_contains": {
        +    "description": "Only roadmaps whose name contains this text (case-insensitive, server-side)",
        +    "type": "string"
        +  },
        +  "sort": {
        +    "description": "Sort as \"field\" or \"field asc|desc\" (server-side). Fields: id, name, is_version, created_at, updated_at",
        +    "examples": [
        +      "name asc"
        +    ],
        +    "pattern": "^(id|name|is_version|created_at|updated_at)( (asc|desc))?$",
        +    "type": "string"
        +  }
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_teams1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_users1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "data": {
        +      "description": "The ProductPlan payload (object or array) returned by the API, passed through verbatim",
        +      "type": "object"
        +    },
        +    "summary": {
        +      "description": "Human-readable summary of the result (e.g. \"Found 3 roadmaps\")",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "data"
        +  ],
        +  "type": "object"
        +}
    • Changedmanage_bar17 fields changed
      • addedInput schema / properties / clear_legend
        Added value: +{
        +  "description": "True to remove the bar's color (same as legend:\"\")",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / container / description
        Previous value: -"Is container for children"New value: +"DEPRECATED alias for is_container"
      • addedInput schema / properties / container_bar_id
        Added value: +{
        +  "description": "Numeric ID of the container bar to nest under. Requires starts_on and ends_on on the bar; cannot be removed once set",
        +  "type": "string"
        +}
      • changedInput schema / properties / custom_dropdown_fields / description
        Previous value: -"[{name,value}] custom dropdowns"New value: +"[{label,value}]; value must be one of the field's allowed_values from get_roadmap"
      • changedInput schema / properties / custom_dropdown_fields / items / description
        Previous value: -"Custom dropdown field with name and value"New value: +"{\"label\": \"<field label>\", \"value\": \"<allowed value>\"}"
      • changedInput schema / properties / custom_text_fields / description
        Previous value: -"[{name,value}] custom text fields"New value: +"[{label,value}] using labels from get_roadmap custom_text_fields"
      • changedInput schema / properties / custom_text_fields / items / description
        Previous value: -"Custom text field with name and value"New value: +"{\"label\": \"<field label>\", \"value\": \"<text>\"}"
      • changedInput schema / properties / effort / description
        Previous value: -"Effort estimate (unitless integer, scale per team)"New value: +"DEPRECATED and rejected: not a ProductPlan bar field (the API ignores it). Use a custom field"
      • addedInput schema / properties / is_container
        Added value: +{
        +  "description": "True to make the bar a container for child bars",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / lane
        Added value: +{
        +  "description": "Lane NAME (see get_roadmap lanes). Use this or lane_id",
        +  "type": "string"
        +}
      • changedInput schema / properties / lane_id / description
        Previous value: -"Lane ID (for create; update to move)"New value: +"Lane ID from get_roadmap_lanes. Use this or lane"
      • addedInput schema / properties / legend
        Added value: +{
        +  "description": "Legend NAME that colors the bar (from get_roadmap_legends). Empty string clears the color",
        +  "type": "string"
        +}
      • changedInput schema / properties / legend_id / description
        Previous value: -"Color from get_roadmap_legends"New value: +"DEPRECATED and rejected: the API reads legend_id as 'clear the color'. Use legend (name)"
      • changedInput schema / properties / parent_id / description
        Previous value: -"Parent bar ID for nesting"New value: +"DEPRECATED alias for container_bar_id"
      • changedInput schema / properties / parked / description
        Previous value: -"True to park bar (removes from timeline, keeps on roadmap)"New value: +"True parks the bar (off the timeline, kept on the roadmap). Must match the container's when nested"
      • changedInput schema / properties / roadmap_id / description
        Previous value: -"Roadmap ID (for create)"New value: +"Roadmap ID (required for create; optional on update to skip looking up the bar's roadmap)"
      • changedInput schema / properties / tags / description
        Previous value: -"Tag strings [\"mobile\",\"urgent\"]"New value: +"Tag strings; REPLACES the bar's tag list. [] clears it"
    • Changedmanage_lane5 fields changed
      • changedInput schema / properties / color / description
        Previous value: -"Hex color (#FF5733)"New value: +"DEPRECATED and rejected: lanes have no color field in the ProductPlan API, so it was never applied"
      • removedInput schema / properties / color / examples
        Removed value: -[
        -  "#FF5733",
        -  "#4CAF50"
        -]
      • removedInput schema / properties / color / pattern
        Removed value: -"^#[0-9A-Fa-f]{6}$"
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "What the lane represents",
        +  "type": "string"
        +}
      • addedInput schema / properties / position
        Added value: +{
        +  "description": "Position of the lane in the roadmap",
        +  "examples": [
        +    1
        +  ],
        +  "type": "integer"
        +}
  2. 3 tool updatesv5.1.0
    • Changedmanage_bar3 fields changed
      • changedInput schema / properties / effort / description
        Previous value: -"Effort estimate"New value: +"Effort estimate (unitless integer, scale per team)"
      • changedInput schema / properties / parked / description
        Previous value: -"Not actively scheduled"New value: +"True to park bar (removes from timeline, keeps on roadmap)"
      • changedInput schema / properties / strategic_value / description
        Previous value: -"Strategic importance"New value: +"Free-text strategic importance note"
    • Changedmanage_idea2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"new, under_review, planned"New value: +"Idea workflow status"
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "new",
        +  "under_review",
        +  "planned"
        +]
    • Changedmanage_opportunity2 fields changed
      • changedInput schema / properties / workflow_status / description
        Previous value: -"draft, in_discovery, validated, invalidated, completed"New value: +"Opportunity workflow status"
      • addedInput schema / properties / workflow_status / enum
        Added value: +[
        +  "draft",
        +  "in_discovery",
        +  "validated",
        +  "invalidated",
        +  "completed"
        +]
  3. 47 tool updatesv5.0.0
    • First observedcheck_status
    • First observedget_bar
    • First observedget_bar_children
    • First observedget_bar_comments
    • First observedget_bar_connections
    • First observedget_bar_links
    • First observedget_idea
    • First observedget_idea_form
    • First observedget_key_result
    • First observedget_launch
    • First observedget_launch_section
    • First observedget_launch_sections
    • First observedget_launch_task
    • First observedget_launch_tasks
    • First observedget_objective
    • First observedget_opportunity
    • First observedget_roadmap
    • First observedget_roadmap_bars
    • First observedget_roadmap_comments
    • First observedget_roadmap_complete
    • First observedget_roadmap_lanes
    • First observedget_roadmap_legends
    • First observedget_roadmap_milestones
    • First observedhealth_check
    • First observedlist_all_customers
    • First observedlist_all_tags
    • First observedlist_idea_forms
    • First observedlist_ideas
    • First observedlist_key_results
    • First observedlist_launches
    • First observedlist_objectives
    • First observedlist_opportunities
    • First observedlist_roadmaps
    • First observedlist_teams
    • First observedlist_users
    • First observedmanage_bar
    • First observedmanage_bar_connection
    • First observedmanage_bar_link
    • First observedmanage_idea
    • First observedmanage_key_result
    • First observedmanage_lane
    • First observedmanage_launch
    • First observedmanage_launch_section
    • First observedmanage_launch_task
    • First observedmanage_milestone
    • First observedmanage_objective
    • First observedmanage_opportunity

TDQS

A4.1/5.0

Scored across 50 tools

Disambiguation5/5

Each tool pairs a distinct resource with a clear read/write action, and the get_/list_/manage_/bulk_ prefixes make intent obvious. Plural-versus-singular pairs like get_launch_sections and get_launch_section are explicitly annotated so an agent can reliably choose the right one.

Naming Consistency5/5

The set follows a consistent convention: list_* for collections, get_* for single objects/details, manage_* for create/update/delete, and bulk_*_bars for multi-bar operations. Minor exceptions such as check_status and health_check are still self-describing and do not break the overall pattern.

Tool Count2/5

Fifty tools is far beyond the typical well-scoped MCP surface and forces agents to consider a very long list for any task. The tools are individually justified, but the sheer count makes the server feel heavy and increases selection cost.

Completeness4/5

The server covers nearly every lifecycle needed for ProductPlan work: bars, lanes, milestones, launches, sections, tasks, objectives, key results, ideas, opportunities, links, and dependencies all have appropriate read/write tools. The main gaps are that roadmaps themselves cannot be created/updated/deleted and comments are read-only, though these are likely API constraints rather than design oversights.

Maintenance

ActivityMaintained
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers