This document shows each step in two parts:
- Sample (template) – with placeholders
- Example – with real values
This format is intended for easy understanding and copy-paste usage.
curl -X POST "<OKTA_BASE_URL>/oauth2/default/v1/token" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "client_id=<API_SERVICES_CLIENT_ID>" \
--data-urlencode "client_secret=<API_SERVICES_CLIENT_SECRET>" \
--data-urlencode "scope=mcp.read"curl -X POST "https://trial-5337334.okta.com/oauth2/default/v1/token" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "client_id=0oay6gzw6zJq2LsUj697" \
--data-urlencode "client_secret=********" \
--data-urlencode "scope=mcp.read"{
"token_type": "Bearer",
"access_token": "<ACCESS_TOKEN>",
"expires_in": 300,
"scope": "mcp.read"
}orchestrate connections add -a <CONNECTION_NAME>orchestrate connections add -a mcp_connectionorchestrate connections configure \
-a <CONNECTION_NAME> \
--env draft \
--type team \
--kind bearerorchestrate connections configure \
-a mcp_connection \
--env draft \
--type team \
--kind bearerorchestrate connections set-credentials \
-a <CONNECTION_NAME> \
--env draft \
--token <ACCESS_TOKEN>orchestrate connections set-credentials \
-a mcp_connection \
--env draft \
--token eyJraWQiOiJxcmVUV0pLbGMt...This bearer token is required only to import the MCP toolkit.
orchestrate toolkits add \
--kind mcp \
--name <MCP_TOOLKIT_NAME> \
--description "<MCP_TOOLKIT_DESCRIPTION>" \
--url <MCP_TOOLKIT_URL> \
--transport streamable_http \
--tools "*" \
--app-id <CONNECTION_NAME>orchestrate toolkits add \
--kind mcp \
--name mcp_toolkit \
--description "My MCP toolkit" \
--url "mcp_server_url" \
--transport streamable_http \
--tools "*" \
--app-id mcp_connectionapp_id: <CONNECTION_NAME>
spec_version: v1
kind: connection
environments:
draft:
sso: true
server_url: <TOKEN_URL>
kind: oauth_auth_token_exchange_flow
type: member
app_config:
header:
content-type: application/x-www-form-urlencoded
live:
sso: true
server_url: <TOKEN_URL>
kind: oauth_auth_token_exchange_flow
type: member
app_config:
header:
content-type: application/x-www-form-urlencodedapp_id: mcp_connection
spec_version: v1
kind: connection
environments:
draft:
sso: true
server_url: https://trial-5337334.okta.com/oauth2/default/v1/token
kind: oauth_auth_token_exchange_flow
type: member
app_config:
header:
content-type: application/x-www-form-urlencoded
live:
sso: true
server_url: https://trial-5337334.okta.com/oauth2/default/v1/token
kind: oauth_auth_token_exchange_flow
type: member
app_config:
header:
content-type: application/x-www-form-urlencodedImport the connection:
orchestrate connections import -f connection.yamlorchestrate connections set-credentials \
--app-id <CONNECTION_NAME> \
--env live \
--client-id <API_SERVICES_CLIENT_ID> \
--grant-type urn:ietf:params:oauth:grant-type:token-exchange \
--token-url <TOKEN_URL> \
-t "body:client_secret=<API_SERVICES_CLIENT_SECRET>" \
-t "body:subject_token_type=urn:ietf:params:oauth:token-type:access_token" \
-t "body:scope=mcp.read" \
-t "body:audience=api://default" \
-t "body:app_token_key=subject_token"orchestrate connections set-credentials \
--app-id mcp_connection \
--env live \
--client-id 0oay6gzw6zJq2LsUj697 \
--grant-type urn:ietf:params:oauth:grant-type:token-exchange \
--token-url https://trial-5337334.okta.com/oauth2/default/v1/token \
-t "body:client_secret=********" \
-t "body:subject_token_type=urn:ietf:params:oauth:token-type:access_token" \
-t "body:scope=mcp.read" \
-t "body:audience=api://default" \
-t "body:app_token_key=subject_token"