Start with reads
Grant the two read scopes first and add write access once you trust the setup. The server omits every write tool from its tool list until your token carries a write scope, so a read-only grant is enforced, not merely advisory.Claude, Claude Desktop, and mobile
Open Customize → Connectors → Add custom connector, enter the URL, leave the advanced OAuth fields empty, then select Connect and sign in. Claude requests the scope set the server advertises, so read the consent screen before approving.On Team and Enterprise plans an Owner or Primary Owner adds the connector under
Organization settings → Connectors before members can connect individually. Set
each write tool to Needs approval, or Blocked for a read-only rollout, under
Tool permissions.
Claude Code
Add the server with the read scopes pinned, then complete OAuth:claude mcp get soar. Claude Code presents its own published client
identity, so there is nothing to configure beyond the URL.
ChatGPT and Codex
Codex discovers the endpoint from its protected-resource metadata — configure the server URL and leave the OAuth resource unset. The public SOAR client for Codex uses PKCE and has no secret. Then:codex mcp logout soar and log in again —
an existing token keeps the scopes it was issued with.
Approval
Two independent layers stand between a suggestion and a filled order, and neither replaces the other.- Scope. A tool the token has no scope for is not in the list at all. Nothing to approve, nothing to call.
- Your client. Every write, and every account-sensitive read, is flagged so the client asks a person before the call — even where a permissive setting would otherwise skip the prompt.
When something fails
The full error vocabulary behind these dispositions is the REST one:
Errors.