Skip to main content
POST
Import a local MCP OAuth credential

Authorizations

Authorization
string
header
required

Your Reason API key from Settings > API. New keys use reason_; legacy ara_ keys remain accepted. Keys are capability-scoped: run, mcp:read, mcp:write, secrets:read, secrets:write, sessions:read, sessions:debug, knowledge:read, memory:read, memory:write, skills:read, skills:write, repos:read, repos:write, reviews:read, reviews:write, deployment:read, analytics:read, org:read, org:write, attachments:read, attachments:write, guardrails:read, guardrails:write, automations:read, automations:write, agent_auth:read. mcp:write manages MCP server configuration only; it does not authorize remote MCP-tool execution. sessions:debug is privileged: it expands diagnostic session events only for organization owners/admins.

Path Parameters

orgId
string
required

Organization id or slug. Resolve it with GET /v3/self.

id
string
required

The MCP server id.

Body

application/json

Imports a local OAuth credential for an existing HTTP MCP server. Temporary mode stores only the access token until expiry. Transfer mode also stores the refresh token and originating OAuth client, and requires acknowledgement that Reason owns future refreshes.

mode
enum<string>
required
Available options:
temporary,
transfer
access_token
string
required

Write-only OAuth access token. Never returned.

Maximum string length: 65536
expires_at
string<date-time>
required
source_application
string
required
Maximum string length: 120
device_label
string
required
Maximum string length: 120
refresh_token
string

Write-only. Transfer mode only.

Maximum string length: 65536
scopes
string
Maximum string length: 8192
replace_existing
boolean
default:false

Required as true to replace an existing OAuth connection.

acknowledgement
string
Allowed value: "reason_owns_refresh_token"
client
object

Response

Credential imported and verified.

connected
boolean
required
mode
enum<string>
required
Available options:
temporary,
transfer
expires_at
string<date-time>
required
refresh_owned_by_reason
boolean
required
refresh_tested
boolean
required

Always false. Testing an imported refresh token could rotate or invalidate the local client's token chain.