Invite a tailnet member
invite_userSend a Tailscale invitation to an email address or generate a bearer invite URL, assigning a member or admin role.
Instructions
Sends a real Tailscale invitation to a real email address, so confirm the address and role with the user before calling this. The invitation joins the recipient to the user's tailnet. Set print_link true to receive a bearer invite URL instead of having Tailscale send the email. A role other than member is refused with mcp_elevated_invite_refused unless the owner set mcp.allow_elevated_invites in config.json; the user can always run tslink invite user themselves.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"email": "<email>"
},
"name": "invite_user"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Role assigned on acceptance. Defaults to member. Any other role needs the owner's opt-in (mcp.allow_elevated_invites in config.json). | |
| Yes | Recipient email address. | ||
| print_link | No | Do not send email; return the API-provided invite URL for the user to deliver. Anyone holding that URL can accept. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| kind | Yes | ||
| role | No | ||
| No | |||
| grant | No | Person grant saved by the common access action. | |
| created | No | ||
| emailed | Yes | ||
| message | No | ||
| service | No | ||
| accepted | No | ||
| device_id | No | ||
| multi_use | No | ||
| recipient | No | ||
| invite_url | No | Bearer invitation URL. Present only when the invite was created with print_link true or when invite_list was called with show_urls true; anyone holding it can accept the invitation. | |
| target_kind | No | ||
| access_state | No | ||
| allow_exit_node | No | ||
| last_email_sent_at | No | ||
| remote_side_effect_plan | Yes |