productive-mcp-rb2
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRODUCTIVE_ORG_ID | Yes | Your organisation ID | |
| PRODUCTIVE_USER_ID | No | Your user ID — enables my_tasks, me shorthand in all tools, and the productive://me/* resources | |
| PRODUCTIVE_API_TOKEN | Yes | Your Productive.io API token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Get the current user context. Shows which user ID is configured as "me" for all operations. |
| list_companiesA | List companies (clients) in your Productive organisation. Filter by active or archived status. |
| list_projectsA | List projects in your Productive organisation. Filter by status or company. |
| list_boardsB | Get a list of boards from Productive.io |
| create_boardB | Create a new board in a Productive.io project |
| list_task_listsA | Get a list of task lists from Productive.io. Task lists organize tasks within boards. |
| create_task_listA | Create a new task list in a Productive.io board. Task lists help organize tasks within boards. |
| get_task_listA | Get details of a specific task list by its ID. |
| update_task_listA | Rename an existing task list. |
| archive_task_listA | Archive a task list. This is reversible — use restore_task_list to undo. |
| restore_task_listA | Restore a previously archived task list. |
| reposition_task_listA | Reposition a task list within its board. Optionally move it before another task list. |
| list_tasksB | Get a list of tasks from Productive.io |
| get_project_tasksA | Get all tasks for a specific project. ALSO used as STEP 4 in timesheet workflow to find task_id for linking time entries to specific tasks. Workflow: list_projects → list_project_deals → list_deal_services → get_project_tasks → create_time_entry. |
| get_taskA | Get detailed information about a specific task by ID |
| create_taskB | Create a new task in Productive.io. If PRODUCTIVE_USER_ID is configured, you can use "me" to refer to the configured user when assigning. |
| update_task_assignmentA | Update the assignee of an existing task. If PRODUCTIVE_USER_ID is configured, you can use "me" to refer to the configured user. To unassign, use "null" as a string. |
| update_task_detailsA | Update the title (name) and/or description of an existing task. At least one field must be provided. |
| delete_taskA | Permanently delete a task in Productive.io. This action is destructive and irreversible. |
| add_task_commentB | Add a comment to a task in Productive.io. |
| list_commentsB | List comments on a task in Productive.io. |
| get_commentA | Get a single comment by ID, including its body and metadata. |
| update_commentB | Edit the body of an existing comment. |
| delete_commentB | Delete a comment from Productive.io. This action is destructive. |
| pin_commentA | Pin a comment so it stays at the top of the task discussion. |
| unpin_commentC | Unpin a previously pinned comment. |
| add_comment_reactionA | Add a reaction emoji (e.g. "like") to a comment. |
| update_task_statusA | Update the status of a task. Provide either workflow_status_id directly, or status_name (case-insensitive, partial match) to resolve it from list_workflow_statuses. |
| list_workflow_statusesA | List workflow statuses available in Productive.io. These are used to set task status (Not Started=1, Started=2, Closed=3). |
| my_tasksB | Get tasks assigned to the configured user. Requires PRODUCTIVE_USER_ID to be set. |
| list_activitiesA | List activities (changes/updates) from Productive.io with filtering options for tracking recent work |
| get_recent_updatesA | Get a summary of recent updates and changes in the last N days, with detailed breakdown by item type |
| list_time_entriesA | View existing time entries from Productive.io with detailed information including service and budget relationships. Use this to see what time has been logged and to which projects/services. If PRODUCTIVE_USER_ID is configured, you can use "me" to refer to the configured user for person_id. |
| create_time_entryA | STEP 5 (FINAL) of timesheet workflow: Create a time entry with detailed work description. COMPLETE WORKFLOW: 1) list_projects → 2) list_project_deals → 3) list_deal_services → 4) list_project_tasks (recommended) → 5) create_time_entry. You MUST provide: valid service_id from the hierarchy, detailed work notes (minimum 10 chars), and optionally link to a specific task_id. This tool requires confirmation before creating. If PRODUCTIVE_USER_ID is configured, use "me" for person_id. |
| get_dealA | Get details of a specific deal or budget by its ID. |
| list_project_dealsA | STEP 2 of timesheet workflow: Get deals/budgets for a specific project. COMPLETE WORKFLOW: 1) list_projects → 2) list_project_deals → 3) list_deal_services → 4) list_project_tasks (recommended) → 5) create_time_entry. This follows: Project → Deal/Budget → Service → Task → Time Entry. |
| list_deal_servicesA | STEP 3 of timesheet workflow: Get services for a specific deal/budget. COMPLETE WORKFLOW: 1) list_projects → 2) list_project_deals → 3) list_deal_services → 4) list_project_tasks (recommended) → 5) create_time_entry. After this, optionally use list_project_tasks to find specific tasks to link your time entry to. |
| list_servicesA | List all services in the organization. NOTE: For timesheet entries, use the proper workflow instead: list_projects → list_project_deals → list_deal_services → create_time_entry. This tool shows all services but does not indicate which project/budget they belong to. |
| get_project_servicesA | Get all services for a project by traversing its deals/budgets. Returns services grouped by deal/budget. Prefer using list_project_deals + list_deal_services for more control. |
| update_task_sprintA | Update the sprint(s) assigned to a task. Sprints are tracked using a custom field. |
| move_task_to_listA | Move a task to a different task list within the same project |
| add_to_backlogB | Add a task to the project backlog. Creates a Backlog task list if it doesn't exist. |
| reposition_taskA | Reposition a task in a task list |
| list_peopleA | List people (team members) in your Productive.io organization. Use to find person IDs for task assignment, time entries, and filtering. Supports filtering by company, project membership, active status, and email. |
| get_personA | Get detailed information about a specific person by their Productive ID. |
| update_time_entryA | Update an existing time entry in Productive.io. Only provide the fields you want to change. |
| delete_time_entryA | Delete a time entry from Productive.io. This action is irreversible. |
| list_invoicesA | List invoices in Productive.io. Filter by company, project, or status (1=draft, 2=sent, 3=paid, 4=canceled) and date range. |
| get_invoiceA | Get detailed information about a specific invoice by its Productive ID. |
| list_expensesA | List expenses in Productive.io. Filter by person, project, or date range. Use "me" for person_id if PRODUCTIVE_USER_ID is configured. |
| create_expenseA | Create a new expense record in Productive.io. Use get_project_services to find a valid service_id first. |
| list_membershipsA | List project memberships in Productive.io. Use to see which people are members of a project, or which projects a person belongs to. |
| list_bookingsA | List resource bookings/capacity planning entries in Productive.io. Bookings show planned work allocation for people on projects over date ranges. Use to check availability and planned capacity. Use "me" for person_id if PRODUCTIVE_USER_ID is configured. |
| get_budget_burnA | Analyse budget burn for rb2 projects. Returns budget value, amount spent, burn %, remaining, and RAG status per budget deal. RAG: 🟢 <70% / 🟡 70-90% / 🔴 >90%. Use min_burn_pct=70 to show only at-risk projects. |
| get_resource_planA | Get the rb2 resource plan for a date range. Shows bookings with person, project, hours/day, and utilisation %. Use person_name and project_id for focused planning views. |
| get_overbooked_peopleB | Detect people with overlapping bookings above a utilisation threshold in a date range. Calculates daily load and highlights over-capacity dates. |
| get_org_overviewA | Get an rb2 org-level overview: headcount per subsidiary (NL, SCAPE, Code Blue, CN, PT, NG) plus total active projects. Shows who works where across the organisation. |
| list_subtasksA | List all subtasks (child tasks) of a given parent task in Productive.io. |
| create_subtaskA | Create a new subtask under a parent task. If PRODUCTIVE_USER_ID is configured, "me" can be used for assignee_id. |
| list_todosB | List all todo/checklist items for a specific task in Productive.io. |
| create_todoA | Create a new todo/checklist item on a task in Productive.io. |
| update_todoA | Update a todo/checklist item — rename it or mark it as completed/incomplete. |
| delete_todoA | Delete a todo/checklist item from a task in Productive.io. |
| get_todoA | Get a single todo/checklist item by its ID. |
| list_task_dependenciesA | List all dependencies for a task in Productive.io (blocking, waiting_on, related). |
| add_task_dependencyB | Add a dependency relationship between two tasks in Productive.io. |
| remove_task_dependencyA | Remove a task dependency by its dependency ID. Use list_task_dependencies first to find the dependency ID. |
| get_task_dependencyA | Get a single task dependency by its ID. |
| create_tasks_batchA | Create multiple tasks at once in Productive.io. Each task is created independently — failures on individual tasks do not abort the others. Shared project/board/task_list can be set at the top level and overridden per task. |
| list_pagesA | List knowledge base pages in Productive.io. Filter by project to see project-specific docs. |
| get_pageA | Get the full content of a specific knowledge base page in Productive.io. |
| create_pageA | Create a new knowledge base page in a project. Optionally nest under a parent page. |
| update_pageA | Update the title and/or body of an existing page. At least one field must be provided. |
| delete_pageA | Delete a knowledge base page. This action is destructive. |
| move_pageB | Move a page so that it becomes a child of another page (a new parent). |
| copy_pageA | Copy a page to create a new page from a template. Optionally specify a destination project. |
| list_foldersA | List folders that group boards within projects. Filter by project and active/archived status. |
| get_folderA | Get details of a specific folder by its ID. |
| create_folderB | Create a new folder inside a project to group boards. |
| update_folderB | Rename an existing folder. |
| archive_folderA | Archive a folder. This is reversible — use restore_folder to undo. |
| restore_folderA | Restore a previously archived folder. |
| list_attachmentsA | List file attachments on a task or comment in Productive.io. Returns filenames, types, sizes, and download URLs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| timesheet_entry | Guided workflow for creating timesheet entries in Productive.io. Walks you through project → budget → service → task → time entry selection with proper validation. |
| timesheet_step | Step-by-step guidance for timesheet workflow. Use this to get specific help for each step: project, budget, service, task, or create. |
| weekly_report | Generate a structured weekly status report — time logged, tasks completed, in-progress work |
| project_health | Full project health check: budget burn, open tasks, team capacity, and recent activity — produces a RAG-rated summary |
| sprint_planning | Walk through sprint planning: review backlog, check capacity, select tasks, create new ones, and assign the team |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Active Projects | All active projects in Productive.io |
| Org Overview | rb2 headcount per subsidiary and total active projects |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rubenlangeweg/productive-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server