# add_users_to_workspaces

Grant roles to existing users in workspaces. Accepts up to 100 assignments of
`{ workspaceId, userEmail, roleId }`; each is processed independently and the
response reports per-assignment success or failure. You can only add users to
workspaces you have access to yourself. Use `list_roles` to discover role IDs.

<!-- INPUT_BLOCK_START -->

## Input

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `assignments` | `AddUserToWorkspaceAssignment[]` | Yes | Role assignments to apply (max 100). Each is processed independently; the response reports per-assignment success or failure. - [AddUserToWorkspaceAssignment](#addusertoworkspaceassignment) |

### AddUserToWorkspaceAssignment

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `workspaceId` | `string` | Yes | ID of the workspace to grant the role in. You can only add users to workspaces you have access to yourself — assignments for other workspaces are rejected. |
| `userEmail` | `string` | Yes | Email of an existing user to grant the role to (case-insensitive). Must be visible in a workspace you can access; need not already be a member of the target workspace (they are added if not). |
| `roleId` | `string` | Yes | ID of the role to grant. Use list_roles to discover the available roles and their IDs. |

<!-- INPUT_BLOCK_END -->

<!-- OUTPUT_BLOCK_START -->

## Output

| Field | Type | Description |
| --- | --- | --- |
| `content` | `ContentItem[]` | Array of content items returned by the tool - [ContentItem](#contentitem) |
| `isError` | `boolean` | Whether the tool execution resulted in an error |

### ContentItem

| Field | Type | Description |
| --- | --- | --- |
| `type` | `'text'` | Content type (currently only 'text' is supported) |
| `text` | `string` | The text content to display |

<!-- OUTPUT_BLOCK_END -->
