November 2026
Docs: User-Scoped Actions and $.user
The connector YAML reference now documents userScoped, the setting for an action that answers for the person calling it instead of the credential it runs on. It fits connectors that authenticate with one admin-level key while each caller should only see their own records.
What’s new
- Scoping the request. The action filters or queries the provider by
$.user.email, either with a filter parameter or with a lookup that resolves the email to the provider’s own user ID. - Checking the response. The object form,
userScoped.identity, lists JSONPath expressions into each record. StackOne keeps only records that match the caller’s email, and refuses a single record that belongs to someone else with a403(USER_SCOPE_VIOLATION_ERROR). - Where
$.usercomes from. MCP from an AI platform signed in with OAuth, and the AI Playground, set it to the signed-in person. A connect session token or an API key leaves it unset, so auserScopedaction is refused withACTING_USER_REQUIRED_ERROR. - Validation rules. A
userScopedaction can’t turn on Data Sync, because a sync runs with no user, andidentitycan’t be used on an action that downloads a file.
The expression language page lists $.user among the available contexts. The reference suggests keeping a user-scoped action such as get_my_goals next to the unscoped get_user_goals, and Scoping connectors covers which actions to enable on each Connector Profile. OAuth sign-in for MCP is described in the MCP OAuth entry.