Discovery documents
Look up each document a project publishes about itself, with its URL, its standard, an example and what every field means.
A discovery document tells a client where a project's endpoints are and what they accept. Every document is on your project's issuer, the project's URL, and needs no authentication. The examples use https://acme.authfi.io.
Read endpoints from these documents instead of hard-coding them. See Projects.
OpenID configuration
Describes sign-in for people and applications. An OpenID Connect library configures itself from this document.
GET
/.well-known/openid-configurationExample request.
curl https://acme.authfi.io/.well-known/openid-configurationExample response.
{
"issuer": "https://acme.authfi.io",
"authorization_endpoint": "https://acme.authfi.io/oauth/authorize",
"token_endpoint": "https://acme.authfi.io/oauth/token",
"userinfo_endpoint": "https://acme.authfi.io/oauth/userinfo",
"jwks_uri": "https://acme.authfi.io/.well-known/jwks.json",
"revocation_endpoint": "https://acme.authfi.io/oauth/token/revoke",
"end_session_endpoint": "https://acme.authfi.io/oauth/logout",
"introspection_endpoint": "https://acme.authfi.io/oauth/token/introspect",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token", "client_credentials"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256"],
"token_endpoint_auth_methods_supported": ["client_secret_basic", "client_secret_post", "none"],
"code_challenge_methods_supported": ["S256"],
"scopes_supported": ["openid", "profile", "email", "offline_access"],
"claims_supported": [
"sub",
"iss",
"aud",
"exp",
"iat",
"auth_time",
"nonce",
"at_hash",
"c_hash",
"email",
"email_verified",
"name",
"scope",
"groups",
"roles"
],
"acr_values_supported": [
"urn:authfi:acr:1fa",
"urn:authfi:acr:mfa",
"urn:authfi:acr:passkey",
"urn:authfi:acr:passkey_mfa"
]
}Fields.
Used by Add sign-in to an app.
Authorization server metadata for agents
Describes the token endpoint that AI agents use. It is OAuth authorization server metadata (RFC 8414).
GET
/.well-known/oauth-authorization-serverExample request.
curl https://acme.authfi.io/.well-known/oauth-authorization-serverExample response.
{
"issuer": "https://acme.authfi.io",
"token_endpoint": "https://acme.authfi.io/apis/regional/v1/ai/auth/token",
"jwks_uri": "https://acme.authfi.io/.well-known/jwks.json",
"grant_types_supported": ["client_credentials", "urn:openid:params:grant-type:ciba"],
"token_endpoint_auth_methods_supported": ["private_key_jwt"],
"token_endpoint_auth_signing_alg_values_supported": ["EdDSA"],
"access_token_signing_alg_values_supported": ["EdDSA"],
"backchannel_authentication_endpoint": "https://acme.authfi.io/apis/regional/v1/ai/auth/backchannel-authorize",
"backchannel_token_delivery_modes_supported": ["poll"],
"backchannel_user_code_parameter_supported": false,
"agent_configuration_endpoint": "https://acme.authfi.io/.well-known/agent-configuration",
"response_types_supported": []
}Fields.
Explained in How agent sign-in works.
Agent configuration
Describes what an agent client needs beyond the OAuth metadata, such as the approval methods.
GET
/.well-known/agent-configurationExample request.
curl https://acme.authfi.io/.well-known/agent-configurationFields.
Protected resource metadata
Describes the MCP gateway as a protected resource (RFC 9728), and names where to get a token for it.
GET
/.well-known/oauth-protected-resourceExample request.
curl https://acme.authfi.io/.well-known/oauth-protected-resourceExample response.
{
"resource": "https://acme.authfi.io/mcp",
"authorization_servers": ["https://acme.authfi.io"]
}Fields.
The gateway points to this document from the WWW-Authenticate header of a 401:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://acme.authfi.io/.well-known/oauth-protected-resource"Used by Connect agents to tools and The MCP gateway.
Keys
Publishes the project's public signing keys as a JWK Set (RFC 7517).
GET
/.well-known/jwks.jsonExample request.
curl https://acme.authfi.io/.well-known/jwks.jsonContents. One RS256 key and one EdDSA (Ed25519) key.
Match a token's kid header to a key in the set. After a rotation the previous key stays published for 24 hours. See Keys and secrets and Checking a token.
For cloud roles, AWS reads the project's keys from https://acme.authfi.io/oidc/.well-known/jwks.json.
Shared Signals configuration
Describes where to register a receiver for revocation events, and which events exist. It follows OpenID Shared Signals.
GET
/.well-known/ssf-configurationExample request.
curl https://acme.authfi.io/.well-known/ssf-configurationExample response.
{
"issuer": "https://acme.authfi.io",
"jwks_uri": "https://acme.authfi.io/.well-known/jwks.json",
"configuration_endpoint": "https://acme.authfi.io/v1/ssf/streams",
"delivery_methods_supported": ["urn:ietf:rfc:8935"],
"events_supported": [
"https://schemas.openid.net/secevent/caep/event-type/session-revoked",
"https://schemas.openid.net/secevent/caep/event-type/token-claims-change",
"https://schemas.openid.net/secevent/risc/event-type/account-purged",
"https://schemas.openid.net/secevent/risc/event-type/credential-compromise"
],
"spec_version": "1_0"
}Fields.
Used by Stop an agent.
SAML metadata
A project also publishes SAML 2.0 metadata, at these paths on the issuer.
{name} is the name you give the connection.