Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRODUCTPLAN_API_TOKEN | Yes | Your ProductPlan API token, obtained from ProductPlan Settings → API. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_roadmaps | List all roadmaps. START HERE to get roadmap IDs. USE WHEN: "Show my roadmaps", "What roadmaps do I have?" FAILS WHEN: API token invalid or expired (check PRODUCTPLAN_API_TOKEN env var). |
| get_roadmap | Get roadmap settings and metadata. USE WHEN: "Tell me about roadmap X", "Roadmap settings" For all data in one call (bars, lanes, milestones), use get_roadmap_complete. FAILS WHEN: roadmap_id not found (get valid IDs from list_roadmaps first). |
| get_roadmap_bars | Get all bars (features/items) on a roadmap. USE WHEN: "What's on the roadmap?", "Show planned features", "What's in Q2?" FAILS WHEN: roadmap_id not found (use list_roadmaps). Returns empty list if roadmap has no bars. |
| get_roadmap_lanes | Get lanes (categories) on a roadmap. Lanes organize bars into rows. USE WHEN: "What lanes are on the roadmap?", "Show categories" FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_milestones | Get milestones (key dates) on a roadmap. USE WHEN: "What are the key dates?", "Show milestones" FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_legends | Get legend entries (bar colors) for a roadmap. USE WHEN: "What colors are available?", "Show the legend" Note: Use legend_id when creating/updating bars. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_complete | Get complete roadmap in one call (~3x faster than sequential). Details, bars, lanes, milestones combined. USE WHEN: "Full roadmap overview", "Summarize roadmap X" For settings/metadata only, use get_roadmap. WHY: Makes 3 parallel API calls internally (~3x faster than calling get_roadmap + get_roadmap_bars + get_roadmap_lanes sequentially). FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_comments | Get roadmap-level comments (not bar comments). USE WHEN: "Show roadmap comments", "Roadmap discussion" For bar-level comments, use get_bar_comments instead. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| manage_lane | Create, update, or delete a lane on a roadmap. USE WHEN: "Add Backend lane", "Rename Mobile lane", "Delete lane" Actions: create (name), update (lane_id), delete (lane_id) FAILS WHEN: create without name, update/delete without lane_id (get IDs from get_roadmap_lanes). WARNING: delete removes the lane and unassigns all bars in it. |
| manage_milestone | 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) 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. |
| get_bar | Get bar details including description, links, custom fields. USE WHEN: "Tell me about this feature", "Bar details" FAILS WHEN: bar_id not found (get valid IDs from get_roadmap_bars). |
| get_bar_children | 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). |
| get_bar_comments | 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. |
| get_bar_connections | 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. |
| get_bar_links | Get external links on a bar (Jira, docs, designs). USE WHEN: "What's linked?", "Show Jira tickets" FAILS WHEN: bar_id not found. Returns empty list if bar has no external links. |
| manage_bar | Create, update, or delete a bar on a roadmap. USE WHEN: "Add feature", "Update dates", "Delete item", "Change color" Actions: create (roadmap_id+lane_id+name), update (bar_id), delete (bar_id) FAILS WHEN: create without roadmap_id, lane_id, or name (all three required). Update/delete without bar_id. Use get_roadmap_legends for valid legend_id values. WARNING: delete is permanent and cannot be undone. |
| manage_bar_connection | 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). |
| manage_bar_link | Create or delete external link on a bar. USE WHEN: "Link Jira ticket", "Add design doc", "Remove link" Actions: create (url), delete (link_id) FAILS WHEN: create without url, delete without link_id (get IDs from get_bar_links). Note: update not available via API; delete and re-create instead. |
| list_objectives | List all OKR objectives. START HERE for OKRs. USE WHEN: "Show OKRs", "What are our objectives?" FAILS WHEN: API token invalid. Returns empty list if no objectives exist. |
| get_objective | 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). |
| list_key_results | List key results for an objective. USE WHEN: "What are the KRs?", "Show metrics" FAILS WHEN: objective_id not found (use list_objectives). |
| get_key_result | 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). |
| manage_objective | Create, update, or delete an objective. USE WHEN: "Add Q1 objective", "Update objective", "Delete OKR" Actions: create (name), update (objective_id), delete (objective_id) FAILS WHEN: create without name, update/delete without objective_id. WARNING: delete also removes all key results under this objective. |
| manage_key_result | 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) FAILS WHEN: create without name or target_value, update/delete without key_result_id (use list_key_results). |
| list_ideas | List all ideas in discovery pipeline. START HERE for ideas. USE WHEN: "Show customer feedback", "What ideas do we have?" FAILS WHEN: API token invalid. Returns empty list if no ideas exist. |
| get_idea | 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). |
| list_opportunities | List all opportunities. START HERE for discovery. USE WHEN: "Show opportunities", "Discovery pipeline" FAILS WHEN: API token invalid. Returns empty list if no opportunities exist. |
| get_opportunity | 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). |
| list_idea_forms | List idea submission forms. USE WHEN: "Show feedback forms", "What forms exist?" FAILS WHEN: API token invalid. |
| get_idea_form | 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). |
| list_all_customers | List all customers across ideas. USE WHEN: "Who are our customers?", "All feedback sources" For customers linked to a specific idea, use get_idea_customers instead. |
| list_all_tags | List all tags used across ideas. USE WHEN: "What tags exist?", "Show categories" For tags on a specific idea, use get_idea_tags instead. |
| manage_idea | Create or update an idea. Note: delete not available via API. USE WHEN: "Add idea", "Update idea status" Actions: create (title), update (idea_id) FAILS WHEN: create without title, update without idea_id. Note: delete is not available via the ProductPlan API; archive ideas by updating status instead. |
| manage_opportunity | Create or update an opportunity. Note: delete not available via API. USE WHEN: "Create opportunity", "Update problem" Actions: create (problem_statement), update (opportunity_id) 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. |
| list_launches | List all launches. START HERE for launches. USE WHEN: "Show launches", "Release schedule" FAILS WHEN: API token invalid. Returns empty list if no launches exist. |
| get_launch | 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). |
| manage_launch | Create, update, or delete a launch. USE WHEN: "Create launch", "Update date", "Delete launch" Actions: create (name+date), update (launch_id), delete (launch_id) 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. |
| get_launch_sections | 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. |
| get_launch_section | Get a specific checklist section by ID. USE WHEN: "Section details" For all sections, use get_launch_sections. FAILS WHEN: launch_id or section_id not found. |
| manage_launch_section | 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) 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. |
| get_launch_tasks | 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. |
| get_launch_task | Get a specific launch task by ID. USE WHEN: "Task details", "Task status" For all tasks, use get_launch_tasks. FAILS WHEN: launch_id or task_id not found. |
| manage_launch_task | 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) 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. |
| check_status | 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. |
| health_check | 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. |
| list_users | List all users in account. USE WHEN: "Who has access?", "Team members" Use user IDs from this tool when assigning launch tasks via manage_launch_task. |
| list_teams | List all teams in account. USE WHEN: "What teams exist?", "Team structure" For individual user details, use list_users instead. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |