# update_member (/docs/mcp/tools/update-member)

{/* Generated by scripts/sync-mcp-tools.mjs from happierleads-api. Do not edit: change src/routes/mcp/toolDocs.json there, or add content/mcp-notes/update_member.mdx. */}

**Update a team member** · Changes data

Changes a member's role, permissions or websites. Fields left out stay as they are. Confirm with the user before calling. Needs the master key.

| Connection | Account-owner URL or OAuth (not a team member URL) |
| --- | --- |

## Parameters [#parameters]

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `userId` | `string` | Yes | userId from list_members. |
| `role` | `"Owner" \| "Member"` | No | Owner (everything, including billing) or Member (what permissions allow). Only an Owner can make another Owner. |
| `preset` | `"full" \| "sales" \| "developer" \| "viewer" \| "team" \| "client"` | No | Start from a preset of permissions: full, sales, developer, viewer, team or client (see get_permissions_catalog). |
| `permissions` | `string[]` | No | Exact permission ids, from get_permissions_catalog. Overrides the preset. |
| `allWebsites` | `boolean` | No | true: access to every current and future website. |
| `websites` | `string[]` | No | Website ids the member can see, when allWebsites is false. |

## Tool definition [#tool-definition]

What your assistant receives from `tools/list`:

```json
{
  "name": "update_member",
  "title": "Update a team member",
  "annotations": {
    "title": "Update a team member",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "inputSchema": {
    "type": "object",
    "properties": {
      "userId": {
        "type": "string",
        "description": "userId from list_members."
      },
      "role": {
        "type": "string",
        "enum": [
          "Owner",
          "Member"
        ],
        "description": "Owner (everything, including billing) or Member (what permissions allow). Only an Owner can make another Owner."
      },
      "preset": {
        "type": "string",
        "enum": [
          "full",
          "sales",
          "developer",
          "viewer",
          "team",
          "client"
        ],
        "description": "Start from a preset of permissions: full, sales, developer, viewer, team or client (see get_permissions_catalog)."
      },
      "permissions": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Exact permission ids, from get_permissions_catalog. Overrides the preset."
      },
      "allWebsites": {
        "type": "boolean",
        "description": "true: access to every current and future website."
      },
      "websites": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Website ids the member can see, when allWebsites is false."
      }
    },
    "required": [
      "userId"
    ]
  }
}
```
