team_members_add
ManagementInvite Team Members
Invite people to a team by email (bulk). Each address receives an invitation email — members join when they accept.
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
- emails: required — 1-32 email addresses to invite
- role: optional — 'admin' or 'member' (default 'member'), applied to all
- project_ids: optional — projects the invitees join on acceptance
- response_format: optional — 'json' (default) or 'markdown'
Returns: per-email outcome rows (invited | failed | skipped) with reasons (already a member, already invited, seat limit reached). 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:
- "Invite these 5 contractors as members with access to project X" -> emails=[...], role="member", project_ids=["<project_id>"]
Don't use when: Adding an existing team member to a project — use project_members_add.
open-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 — does NOT grant project access; use project_ids for that. |
| emails | array | ✓ | Email addresses to invite (1-32). Each receives an invitation email. |
| role | enum(admin | member) | member | Team role granted on acceptance. Default 'member'. |
| project_ids | array | — | Projects the invitees join on acceptance. |
| response_format | enum(json | markdown) | json | Output format: 'json' for structured data, 'markdown' for human-readable text. |