Parabol MCP server. Start Parabol retrospectives, standups and sprint poker; read teams/meetings/tasks; create tasks.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"parabol": {
"url": "https://parabol.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
get_viewer | read | Get current user (viewer) Fetch the authenticated Parabol user (the token owner): id, preferredName, email, tier, and the team ids they belong to. Start here to discover your identity and team ids. GraphQL: viewer. Requires USERS_READ. |
list_teams | read | List teams List the teams the viewer belongs to, each with id, name, orgId, tier, and team lead. GraphQL: viewer.teams. Requires TEAMS_READ. |
get_team | read | Get a team Fetch one team by id: metadata, its team members (with users), active meetings, and organization. GraphQL: viewer.team(teamId). Requires TEAMS_READ. |
list_team_members | read | List team members List the members of a team, each with role flags (isLead, isOrgAdmin) and the underlying user. GraphQL: viewer.team.teamMembers. Requires TEAMS_READ. |
list_organizations | read | List organizations List the organizations the viewer belongs to: id, name, tier, billingTier. GraphQL: viewer.organizations. Requires ORGS_READ. |
get_organization | read | Get an organization Fetch one organization by id, including its teams. GraphQL: viewer.organization(orgId). Requires ORGS_READ. |
list_organization_users | read | List organization users List the users in an organization (paginated): each org-user's role, joinedAt, tier, and underlying user. GraphQL: viewer.organization.organizationUsers. Requires ORGS_READ + USERS_READ. |
list_meetings | read | List meetings (history) List past/ongoing meetings for one or more teams, newest first, across the retrospective, action, poker and teamPrompt types. GraphQL: viewer.meetings. Requires MEETINGS_READ. |
get_meeting | read | Get a meeting Fetch one meeting by id with its phases and stages; for a retrospective it also returns reflection groups/reflections and vote/topic/task/comment counts. GraphQL: viewer.meeting. Requires MEETINGS_READ. |
list_active_meetings | read | List active meetings List a team's currently-active (in-progress) meetings. GraphQL: viewer.team.activeMeetings. Requires TEAMS_READ + MEETINGS_READ. |
list_tasks | read | List tasks List the viewer's tasks (paginated), optionally filtered by team, user, status, archived state, or a text query. GraphQL: viewer.tasks. Requires TASKS_READ. |
parabol_query | read | Run a GraphQL query (read-only) Escape hatch: run an arbitrary read-only Parabol GraphQL query with optional variables. Mutations are rejected — use the dedicated write tools instead. Requires the matching read scope(s). |
create_task | write | Create a task Create a task on a team (required: teamId, status). Provide plaintextContent and/or rich content; optionally assign a userId or link a meeting. GraphQL: createTask. Requires TASKS_WRITE. |
update_task | write | Update a task Update an existing task (required: id); change content, status, assignee, or sortOrder. Only included fields change. GraphQL: updateTask. Requires TASKS_WRITE. |
create_reflection | write | Create a reflection Add a reflection card to a running retrospective's reflect phase (required: meetingId, promptId, sortOrder). GraphQL: createReflection. Requires MEETINGS_WRITE. |
add_comment | write | Add a comment Add a comment to a meeting discussion thread (required: content, discussionId). Optionally anonymous or a threaded reply. GraphQL: addComment. Requires COMMENTS_WRITE. |
start_retrospective | write | Start a retrospective Start a new retrospective meeting for a team and return the new meetingId (required: teamId; optional name). GraphQL: startRetrospective. Requires MEETINGS_WRITE. |
start_checkin | write | Start a check-in meeting Start a new Check-in (Action) meeting for a team and return the new meetingId (required: teamId; optional name). GraphQL: startCheckIn. Requires MEETINGS_WRITE. |
start_team_prompt | write | Start a standup (team prompt) Start a new async Standup (Team Prompt) meeting for a team (required: teamId; optional name). GraphQL: startTeamPrompt. Requires MEETINGS_WRITE. |
invite_to_team | write | Invite users to a team Send team invitations by email (required: teamId and an array of invitee emails). Optionally scope to a meeting. GraphQL: inviteToTeam. Requires TEAMS_WRITE. |
parabol_graphql | write | Run a GraphQL operation (query or mutation) Escape hatch: run an arbitrary Parabol GraphQL operation — including any mutation — with optional variables. Your token must carry the scope the operation requires. Prefer parabol_query for read-only calls. |
parabol_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
parabol_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED Parabol tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Pro | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.