team_members_remove
ManagementRemove Team Members
Remove members from a team (bulk), and/or withdraw pending invitations. DESTRUCTIVE: removed members immediately lose team access and all their project roles in the team.
IMPORTANT: call team_members_list first and confirm the exact list of people to remove with the user before calling this tool.
Requires a team admin (OAuth) or a team-scoped API key with the team.members.manage scope; other credentials get a permission error.
Args:
- team_id: required
- members: required — 1-32 user IDs or emails. An email matching only a pending invitation withdraws that invitation instead.
- response_format: optional — 'json' (default) or 'markdown'
Returns: per-member outcome rows (removed | invitation_withdrawn | failed | skipped) with reasons. Self-removal is skipped (leave the team from the web app); API keys are refused — use api_key_delete for project-scoped keys, or the Scenario portal; removing every member is rejected outright (it would delete the team). Processes members one by one and reports a per-member outcome. If the response has status "partial", call the tool again with the "remaining" list to finish.
Examples:
- "Offboard these 8 contractors" -> team_members_list, confirm the 8 with the user, then members=[...ids or emails]
Don't use when: Removing someone from a single project only — use project_members_remove.
destructiveopen-world
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| team_id | string | ✓ | Team ID. Get it from teams_list. |
| project_id | string | — | Tenant context for OAuth sessions only. |
| members | array | ✓ | User IDs or emails to remove (1-32). An email matching only a pending invitation withdraws the invitation. |
| response_format | enum(json | markdown) | json | Output format: 'json' for structured data, 'markdown' for human-readable text. |