# parabol MCP server

Start Parabol retrospectives, standups and sprint poker; read teams/meetings/tasks; create tasks.

## Links
- Registry page: https://www.getdrio.com/mcp/io-usefulapi-parabol
- Repository: https://github.com/m190/usefulapi-mcp

## Install
- Endpoint: https://parabol.usefulapi.io/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://parabol.usefulapi.io/mcp

## Tools
- get_viewer (Get current user (viewer)) - Fetch the authenticated Parabol user (the token owner): id, preferredName, email, tier, and the team ids (tms) they belong to. Parabol GraphQL: query { viewer { ... } }. Requires the USERS_READ scope. Start here to discover your identity and team ids. Endpoint: https://parabol.usefulapi.io/mcp
- list_teams (List teams) - List the teams the viewer belongs to, with each team's id, name, orgId, tier, and team lead. Parabol GraphQL: viewer.teams. Requires the TEAMS_READ scope. Endpoint: https://parabol.usefulapi.io/mcp
- get_team (Get a team) - Fetch one team by id: metadata, its team members (with each member's user), active meetings, and organization. Parabol GraphQL: viewer.team(teamId). Requires TEAMS_READ (+ MEETINGS_READ for activeMeetings, ORGS_READ for organization). Endpoint: https://parabol.usefulapi.io/mcp
- list_team_members (List team members) - List the members of a team, each with role flags (isLead, isOrgAdmin) and the underlying user (preferredName, email). Parabol GraphQL: viewer.team(teamId).teamMembers. Requires TEAMS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- list_organizations (List organizations) - List the organizations the viewer belongs to: id, name, tier, billingTier. Parabol GraphQL: viewer.organizations. Requires ORGS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- get_organization (Get an organization) - Fetch one organization by id, including its teams. Parabol GraphQL: viewer.organization(orgId). Requires ORGS_READ (+ TEAMS_READ for teams). Endpoint: https://parabol.usefulapi.io/mcp
- list_organization_users (List organization users) - List the users in an organization (Relay connection): each org-user's role, joinedAt, tier, and underlying user (preferredName, email). Paginate with `first` + `after` (pass the last edge's `cursor`). Parabol GraphQL: viewer.organization(orgId).organizationUsers. Requires ORGS_READ + USERS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- list_meetings (List meetings (history)) - List past/ongoing meetings for one or more teams (Relay connection), newest first. `teamIds` is required. `meetingTypes` defaults to all four (retrospective, action, poker, teamPrompt). `before` bounds the window (defaults to now); paginate older with `after`. Parabol GraphQL: viewer.meetings. Requires MEETINGS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- get_meeting (Get a meeting) - Fetch one meeting by id with its phases and stages. For a retrospective it also returns the reflection groups and reflections plus vote/topic/task/comment counts. Uses __typename so you can tell meeting types apart. Parabol GraphQL: viewer.meeting(meetingId). Requires MEETINGS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- list_active_meetings (List active meetings) - List a team's currently-active (in-progress) meetings. Parabol GraphQL: viewer.team(teamId).activeMeetings. Requires TEAMS_READ + MEETINGS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- list_tasks (List tasks) - List the viewer's tasks (Relay connection), optionally filtered by team, user, status, archived state, or a text query. Paginate with `first` + the `after` DateTime cursor. Parabol GraphQL: viewer.tasks. Requires TASKS_READ. Endpoint: https://parabol.usefulapi.io/mcp
- parabol_query (Run a GraphQL query (read-only)) - Escape hatch: run an arbitrary Parabol GraphQL QUERY (read-only) against action.parabol.co/graphql with optional variables. Mutations are REJECTED — use the dedicated write tools or parabol_graphql for those. Useful for fields not covered by the curated read tools. Requires the matching read scope(s) on your token. Endpoint: https://parabol.usefulapi.io/mcp
- create_task (Create a task) - MUTATES Parabol data: create a task on a team. Required: teamId and status (active|stuck|done|future). Provide `plaintextContent` for the task text (and/or `content`, which is a stringified TipTap/ProseMirror JSON document). Optionally assign to a userId or link to a meetingId/discussionId. Parabol GraphQL: createTask(newTask, area). Requires TASKS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- update_task (Update a task) - MUTATES Parabol data: update an existing task. Required: id. Optionally change content (stringified TipTap JSON), status, assignee (userId), or sortOrder. Only included fields change. Parabol GraphQL: updateTask(updatedTask, area). Requires TASKS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- create_reflection (Create a reflection) - MUTATES Parabol data: add a reflection card to a running retrospective's reflect phase. Required: meetingId, promptId (the reflect-prompt/column), sortOrder (Float). `content` (optional) is a stringified TipTap/ProseMirror JSON document (<=2000 chars). Parabol GraphQL: createReflection(input). Requires MEETINGS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- add_comment (Add a comment) - MUTATES Parabol data: add a comment to a meeting discussion thread. Required: content (stringified TipTap/ProseMirror JSON document), discussionId, threadSortOrder (Int). Optionally isAnonymous or threadParentId (to reply). Parabol GraphQL: addComment(comment) → union. Requires COMMENTS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- start_retrospective (Start a retrospective) - MUTATES Parabol data: start a new retrospective meeting for a team (returns the new meetingId). Required: teamId. Optionally name it. Parabol GraphQL: startRetrospective → union. Requires MEETINGS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- start_checkin (Start a check-in meeting) - MUTATES Parabol data: start a new Check-in (Action) meeting for a team (returns the new meetingId). Required: teamId. Optionally name it. Parabol GraphQL: startCheckIn → union. Requires MEETINGS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- start_team_prompt (Start a standup (team prompt)) - MUTATES Parabol data: start a new async Standup (Team Prompt) meeting for a team. Required: teamId. Optionally name it (default 'Standup'). Parabol GraphQL: startTeamPrompt → union. Requires MEETINGS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- invite_to_team (Invite users to a team) - MUTATES Parabol data: send team invitations by email. Required: teamId and invitees (an array of email addresses). Optionally scope to a meetingId. Parabol GraphQL: inviteToTeam(teamId, invitees). Requires TEAMS_WRITE. Endpoint: https://parabol.usefulapi.io/mcp
- parabol_graphql (Run a GraphQL operation (query or mutation)) - MUTATES Parabol data (potentially): escape hatch to run an arbitrary Parabol GraphQL operation — including any mutation — against action.parabol.co/graphql with optional variables. Use for operations not covered by the curated tools. Your token must carry the scope the operation requires. Prefer parabol_query for read-only calls. Endpoint: https://parabol.usefulapi.io/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.usefulapi
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 18, 2026
- Source: https://registry.modelcontextprotocol.io
