OAuth Commands
See OAuth module docs for permissions and data model.
soat get-oauth-authorization-server-metadata
Get authorization server metadata
- Method:
GET - Path:
/.well-known/oauth-authorization-server
Usage
soat get-oauth-authorization-server-metadata
Options
This command has no options.
soat get-oauth-protected-resource-metadata
Get protected resource metadata
- Method:
GET - Path:
/.well-known/oauth-protected-resource
Usage
soat get-oauth-protected-resource-metadata
Options
This command has no options.
soat register-oauth-client
Register an OAuth client
- Method:
POST - Path:
/register
Usage
soat register-oauth-client --redirect-uris <array<string>>
Options
--redirect-uris
At least one redirect URI. /authorize accepts only an exact match.
- Source:
body - Required: yes
- Type:
array<string> - Example:
["https://client.example.com/callback"]
--client-name
Human-readable name, shown on the consent screen.
- Source:
body - Required: no
- Type:
string - Example:
My MCP Client
--token-endpoint-auth-method
none registers a public client, which receives no secret. Defaults to client_secret_basic.
- Source:
body - Required: no
- Type:
string - Example:
none
--grant-types
Defaults to authorization_code and refresh_token.
- Source:
body - Required: no
- Type:
array<string>
--response-types
Defaults to code.
- Source:
body - Required: no
- Type:
array<string>
soat authorize-oauth-client
Start the authorization code flow
- Method:
GET - Path:
/authorize
Usage
soat authorize-oauth-client --client-id <string> --redirect-uri <string> --response-type <enum("code")> --code-challenge <string> --code-challenge-method <enum("S256")>
Options
--client-id
The registered client identifier.
- Source:
query - Required: yes
- Type:
string
--redirect-uri
Must exactly match one of the client's registered redirect URIs.
- Source:
query - Required: yes
- Type:
string
--response-type
Must be code.
- Source:
query - Required: yes
- Type:
enum("code")
--code-challenge
PKCE challenge, the base64url-encoded SHA-256 of the verifier.
- Source:
query - Required: yes
- Type:
string
--code-challenge-method
Must be S256.
- Source:
query - Required: yes
- Type:
enum("S256")
--scope
Space-separated scopes, e.g. mcp:access.
- Source:
query - Required: no
- Type:
string
--state
Opaque value echoed back on the redirect. Optional.
- Source:
query - Required: no
- Type:
string
soat create-oauth-token
Exchange a code or refresh token for an access token
- Method:
POST - Path:
/token
Usage
soat create-oauth-token --grant-type <enum("authorization_code", "refresh_token")>
Options
--grant-type
—
- Source:
body - Required: yes
- Type:
enum("authorization_code", "refresh_token") - Example:
authorization_code
--code
The single-use authorization code from the /authorize redirect.
- Source:
body - Required: no
- Type:
string
--redirect-uri
Must match the redirect_uri the code was issued for.
- Source:
body - Required: no
- Type:
string
--code-verifier
The PKCE verifier whose SHA-256 is the code_challenge sent to /authorize.
- Source:
body - Required: no
- Type:
string
--refresh-token
The refresh token to exchange. Single-use — a new one is returned.
- Source:
body - Required: no
- Type:
string
--scope
Space-separated scopes, to narrow those of the refreshed token.
- Source:
body - Required: no
- Type:
string
--client-id
Required for a public client, which sends no secret.
- Source:
body - Required: no
- Type:
string
--client-secret
For client_secret_post. With client_secret_basic, send it in the Authorization header instead.
- Source:
body - Required: no
- Type:
string