whoami reports credential: oauth or credential: api_token, and
reads_company_wide: true when there is no user to filter on. Ask it when you
are not sure which kind of connection you are looking at.
OAuth
This is what the client tutorials walk you through. The client discovers Sailer’s authorization server, you sign in with your Sailer email, you pick a workspace if you belong to more than one, you Approve. Three screens, in this order:- Auth0 sign-in — the email that is a member of a Sailer workspace. Already signed in? This step is skipped.
- Consent — which workspace, and which permissions. One workspace per connection, for the life of the grant. Nothing in a URL or a tool argument can change it.
- Done — close the tab. The client now has tokens.
First connection is reads only
The first consent asks for identity (openid, profile, offline_access) plus
every *:read scope your role can actually grant. No writes. Nobody should
approve “update my contacts” before they have read a single one.
If you ask the model to create or update something, the tool will say the
connection is missing a scope and that retrying will not help. Disconnect,
reconnect, and approve the write when consent asks.
Scopes are an intersection
Consent shows what your role in that workspace can grant. Struck-through permissions are not a bug — your role cannot give them away. Ask an admin to widen the role if you need them. A scope is<resource>:<access>. Tools you cannot call do not appear in
tools/list. A read-only connection should not see create_record at all.
One server per grant
An OAuth token is minted for exactly one resource:/mcp/crm or /mcp/studio.
Using a CRM token on Studio is 401, not 403. Audience mismatch is not a
missing scope. Reconnect to the other server; do not retry.
Workspace tokens
A staticsk_live_… / sk_test_… token is the machine path. Same format as
the REST API. Send it as
Authorization: Bearer sk_live_….
It has no user, so the CRM visibility ACL does not apply: the token reads every
record in the workspace that its scopes allow. Treat it as workspace-wide
access. One token per integration, never in source control.