Invite someone to a device
invite_deviceShares a registered TSLink service device with a person outside the tailnet by emailing a Tailscale invitation, or returns a bearer invite URL instead.
Instructions
Sends a real device-sharing invitation to a real email address outside the tailnet, so confirm the service and address with the user before calling this. It shares one TSLink-owned service device with that person. For an HTTP or file service it also saves their access: a grant this call creates has no expiry (use people_add with for/until to limit it), a grant they already have keeps its deadline, and a binding that expires cannot create a permanent grant, so it gets 24h or a refusal. Set print_link true to receive a bearer invite URL instead of having Tailscale send the email.
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": {
"service": "<service>",
"email": "<email>"
},
"name": "invite_device"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Recipient email address. | ||
| service | Yes | Exact registered service name whose device is shared. | |
| multi_use | No | Allow the invitation to be accepted more than once. | |
| print_link | No | Do not send email; return the API-provided invite URL for the user to deliver. Anyone holding that URL can accept. | |
| allow_exit_node | No | Allow the recipient to route traffic through the shared device as an exit node. Needs the owner's opt-in (mcp.allow_elevated_invites in config.json); otherwise refused with mcp_elevated_invite_refused. |
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 |