Registered Users
A Registered User is the unit of isolation in Agent Handler. Every credential, every Link session, every tool call, and every audit record is scoped to one. There’s one Registered User per end user of your product - your customer’s user, an employee on your team, or your own dev account.
Two IDs are central:
origin_user_id- your stable identifier for the user in your own database. Required.origin_company_id- your stable identifier for the user’s parent tenant, in your own database. Optional; required for shared-credential Tool Packs.
Both are strings under your control. Use whatever you already use internally - UUIDs, integers, email addresses. They’re the join key when you query Agent Handler back from your app.
Creating a Registered User
Create the Registered User the moment you onboard a new user in your product. The call is idempotent on origin_user_id - if the Registered User already exists, you get the existing one back, not a duplicate.
Store registered_user_id against your user record. You’ll need it on every MCP call.
Multi-tenancy patterns
The shared_credential_group field expresses “these users belong to one tenant” - useful in B2B products where one customer has multiple users. Pass the same origin_company_id for every user from the same customer. It powers two things: shared-credential Tool Packs (one Slack workspace per tenant; every user inherits the credentials) and dashboard filtering (logs, alerts, and tool calls by Company).
The optional custom_groupings field attaches arbitrary key-value pairs to a Registered User - region: "EU", tier: "enterprise". These power Groups, which slice users dynamically by attribute.
Lifecycle
For dashboard-driven test users (no origin_user_id of your own to attach yet), see the Registered Users page → Test environment.
Common errors
When the user is gone
If a user offboards from your product, deactivate the Registered User (don’t delete) so the audit log remains intact. Deactivation revokes credentials immediately; the user’s history stays queryable.
For full deletion (data subject requests, GDPR), use DELETE on the same endpoint. Deletion is irreversible.
Next
Group Registered Users by tenant or attribute with Companies and Groups.