invite_team_member
Invite a collaborator into a team by email, onto a role that already exists.
Invites someone into a team. Addressed by email, not by user id — the invitee may not have a Subscriby account yet, which is what separates inviting from adding. They receive an invitation with a link; the membership appears when they accept.
role is a role code on that team, such as support-agent. Create it first with create_role if it does not exist.
Growth-tier capability. On a lower tier this returns TEAM_TIER_REQUIRED and
sends nothing.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it. It reaches beyond Subscriby: a connector, a provider or a member.
Arguments
team_id*stringUUID of the team to invite into.
email*stringEmail address of the invitee.
role*stringRole code the invitee will hold. Must already exist on the team.
What it returns
{ "data": { "team_id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86", "email": "newcomer@example.com", "role": "support-agent", "status": "invited" }}status is always invited — nobody is a member until they accept, so there is no id to return yet.
Emits team.member.invited now, then team.member.joined when they accept.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team-member:invite.
TEAM_TIER_REQUIREDthe caller's platform tier does not include Teams.
RESOURCE_NOT_FOUNDno such team, or the caller is not a member.
VALIDATION_FAILEDmalformed email, unknown role code, or the person is already in the team. Call [list_roles](/mcp/v1/tools/roles-and-groups/list-roles) to see the codes available.
How is this guide?
Last updated on