# POST /portals/:portal_id/members

**Resource:** [Portals](./portals.md)  
**MCP tool:** `add_portal_member`  
**Scopes:** `portals:write`  
**Write operation:** yes

Add a member to a portal by email and (by default) send them the workspace-branded invite. Adding IS inviting: the backend creates or links a company-less external login (broker, client, site staff who NEVER join your company), sends the invite/access email, and writes a log row. The path is chosen automatically from the person's identity state: a brand-new person gets a set-password link; an un-activated account gets a fresh set-password link re-issued; an already-active platform user gets an 'access granted' notice. Set `send_email: false` to add them silently, with the same access and portal chat but no email. Idempotent per email. Returns `state` (new | pending | active) and `email_sent`. Identical to invite_portal_member.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `portal_id` | path | string | yes |  |
| `email` | body | string | yes | The person to add / invite. Required. |
| `full_name` | body | string | no | Optional display name shown in the portal. |
| `send_email` | body | boolean | no | Send the invite email. Defaults to true. False adds them silently with identical access and portal chat, but someone who has no TrustPager login yet then has no way in until you resend their access link. |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X POST   "https://api.trustpager.com/functions/v1/api/v1/portals/:portal_id/members"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"email":"...","user_id":"..."}'
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`