Parabol MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Start Parabol retrospectives, standups and sprint poker; read teams/meetings/tasks; create tasks.
21 tools: 9 can delete or cancel things and 12 only read.
Scanned Oct 21, 2026
- Deletes or cancels9Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads12Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http parabol https://parabol.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
21 tools
Deletes or cancels 9Claude Code: deny
add_commentMUTATES Parabol data: add a comment to a meeting discussion thread.No findings
Why it is in this group
- The name "add_comment" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Add a comment
- destructiveHint: true
create_reflectionMUTATES Parabol data: add a reflection card to a running retrospective's reflect phase.No findings
Why it is in this group
- The name "create_reflection" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a reflection
- destructiveHint: true
create_taskMUTATES Parabol data: create a task on a team.No findings
Why it is in this group
- The name "create_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a task
- destructiveHint: true
invite_to_teamMUTATES Parabol data: send team invitations by email.No findings
Why it is in this group
- The name "invite_to_team" says "invite": a word for sending, and what is sent cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Invite users to a team
- destructiveHint: true
parabol_graphqlMUTATES Parabol data (potentially): escape hatch to run an arbitrary Parabol GraphQL operation — including any mutation — against action.parabol.co/graphql with optional variables.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Run a GraphQL operation (query or mutation)
- destructiveHint: true
start_checkinMUTATES Parabol data: start a new Check-in (Action) meeting for a team (returns the new meetingId).No findings
Why it is in this group
- The name "start_checkin" says "start": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Start a check-in meeting
- destructiveHint: true
start_retrospectiveMUTATES Parabol data: start a new retrospective meeting for a team (returns the new meetingId).No findings
Why it is in this group
- The name "start_retrospective" says "start": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Start a retrospective
- destructiveHint: true
start_team_promptMUTATES Parabol data: start a new async Standup (Team Prompt) meeting for a team.No findings
Why it is in this group
- The name "start_team_prompt" says "start": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Start a standup (team prompt)
- destructiveHint: true
update_taskMUTATES Parabol data: update an existing task.No findings
Why it is in this group
- The name "update_task" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a task
- destructiveHint: true
Only reads 12Claude Code: allow
get_meetingFetch one meeting by id with its phases and stages.No findings
Why it is in this group
- The name "get_meeting" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get a meeting
- readOnlyHint: true
get_organizationFetch one organization by id, including its teams.No findings
Why it is in this group
- The name "get_organization" says "get": a word for reading.
Description, as the server wrote it Fetch one organization by id, including its teams. Parabol GraphQL: viewer.organization(orgId). Requires ORGS_READ (+ TEAMS_READ for teams).
Annotations the server declares
- title: Get an organization
- readOnlyHint: true
get_teamFetch one team by id: metadata, its team members (with each member's user), active meetings, and organization.No findings
Why it is in this group
- The name "get_team" says "get": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- title: Get a team
- readOnlyHint: true
get_viewerFetch the authenticated Parabol user (the token owner): id, preferredName, email, tier, and the team ids (tms) they belong to.No findings
Why it is in this group
- The name "get_viewer" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get current user (viewer)
- readOnlyHint: true
list_active_meetingsList a team's currently-active (in-progress) meetings.No findings
Why it is in this group
- The name "list_active_meetings" says "list": a word for reading.
Description, as the server wrote it List a team's currently-active (in-progress) meetings. Parabol GraphQL: viewer.team(teamId).activeMeetings. Requires TEAMS_READ + MEETINGS_READ.
Annotations the server declares
- title: List active meetings
- readOnlyHint: true
list_meetingsList past/ongoing meetings for one or more teams (Relay connection), newest first.No findings
Why it is in this group
- The name "list_meetings" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List meetings (history)
- readOnlyHint: true
list_organization_usersList the users in an organization (Relay connection): each org-user's role, joinedAt, tier, and underlying user (preferredName, email).No findings
Why it is in this group
- The name "list_organization_users" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List organization users
- readOnlyHint: true
list_organizationsList the organizations the viewer belongs to: id, name, tier, billingTier.No findings
Why it is in this group
- The name "list_organizations" says "list": a word for reading.
Description, as the server wrote it List the organizations the viewer belongs to: id, name, tier, billingTier. Parabol GraphQL: viewer.organizations. Requires ORGS_READ.
Annotations the server declares
- title: List organizations
- readOnlyHint: true
list_tasksList the viewer's tasks (Relay connection), optionally filtered by team, user, status, archived state, or a text query.No findings
Why it is in this group
- The name "list_tasks" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
list_team_membersList the members of a team, each with role flags (isLead, isOrgAdmin) and the underlying user (preferredName, email).No findings
Why it is in this group
- The name "list_team_members" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List team members
- readOnlyHint: true
list_teamsList the teams the viewer belongs to, with each team's id, name, orgId, tier, and team lead.No findings
Why it is in this group
- The name "list_teams" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List teams
- readOnlyHint: true
parabol_queryEscape hatch: run an arbitrary Parabol GraphQL QUERY (read-only) against action.parabol.co/graphql with optional variables.No findings
Why it is in this group
- The name "parabol_query" says "query": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Run a GraphQL query (read-only)
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http parabol https://parabol.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__parabol__get_viewer",
"mcp__parabol__list_teams",
"mcp__parabol__get_team",
"mcp__parabol__list_team_members",
"mcp__parabol__list_organizations",
"mcp__parabol__get_organization",
"mcp__parabol__list_organization_users",
"mcp__parabol__list_meetings",
"mcp__parabol__get_meeting",
"mcp__parabol__list_active_meetings",
"mcp__parabol__list_tasks",
"mcp__parabol__parabol_query"
],
"ask": [],
"deny": [
"mcp__parabol__create_task",
"mcp__parabol__update_task",
"mcp__parabol__create_reflection",
"mcp__parabol__add_comment",
"mcp__parabol__start_retrospective",
"mcp__parabol__start_checkin",
"mcp__parabol__start_team_prompt",
"mcp__parabol__invite_to_team",
"mcp__parabol__parabol_graphql"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as parabol. Review it before you use it.