Skip to main content
Private Beta — Remote MCP authentication is currently in private beta. Contact us to get access.
This reference describes the ID-JAG authentication flow. For conceptual understanding of why identity delegation matters, see Why Char Exists and Federated Authentication.
Prerequisites: ID-JAG requires one-time IDP setup. Your IDP admin must register Char as an OAuth client and grant token exchange permissions before the flows described here will work.

Standards

ID-JAG (Identity Assertion Authorization Grant) uses four OAuth/OIDC specifications:

Authentication Flow

Step 1: Token Exchange Request

The Hub requests an ID-JAG from the IDP:

Step 2: ID-JAG Structure

The IDP returns a JWT with type oauth-id-jag+jwt:

Step 3: JWT Bearer Grant

The Hub exchanges the ID-JAG for an access token at the MCP server:

Step 4: Access Token Response

IDP Requirements

ID-JAG authentication requires your identity provider to support:
  1. RFC 8693 Token Exchange — The ability to exchange tokens at the /token endpoint
  2. ID-JAG Token Type — Issuing JWTs with typ: "oauth-id-jag+jwt" and accepting requested_token_type=urn:ietf:params:oauth:token-type:id-jag
Many providers support the underlying Token Exchange primitive but not the specific ID-JAG profile yet.

IDP Support Matrix

ID-JAG requires both RFC 8693 (Token Exchange) and support for the oauth-id-jag+jwt token type. Support varies significantly across providers.
Legend: ✅ = Supported, ⚠️ = Partial/Early Access, ❌ = Not supported, ❓ = UnconfirmedThis matrix reflects the state as of January 2026. ID-JAG is an emerging IETF draft specification (draft-ietf-oauth-identity-assertion-authz-grant). Provider support is evolving rapidly.

MCP Server Requirements

Protected Resource Metadata (RFC 9728)

MCP servers must expose /.well-known/oauth-protected-resource:

Token Endpoint

MCP servers must implement a token endpoint accepting JWT Bearer Grants:

ID-JAG Validation

Access Token Validation

MCP servers validate incoming access tokens on protected endpoints:

Optional Claims

Token Properties

Hub Token Caching

Cache key format: token:{org_id}:{connector_id}:{user_id}
Cache TTL: min(token_expiry - 300, 3600) seconds. Tokens are stored in encrypted KV. Never stored in queryable databases.

Transaction Tokens

For MCP server internal service calls, use downscoped Transaction Tokens:

External MCP Servers

For MCP servers operated by third parties (not your organization), use OAuth 2.1 with PKCE:
  • User explicitly consents via OAuth flow
  • Requires registration with the external MCP’s auth server (not your enterprise IDP)
  • User identity is established through the external provider’s OAuth, not your SSO
This is the standard OAuth pattern—the user sees a consent screen and authorizes the Tool Hub to act on their behalf with that specific external service.
ID-JAG is for internal MCP servers that trust your enterprise IDP. External MCP servers have their own identity systems and require explicit user consent.

Specification Status

References

OAuth/OIDC: MCP:

See Also

Why Char Exists

Architecture and design rationale

Federated Authentication

Identity delegation concepts

Trust Boundaries

Internal vs external MCP classification

Security Reference

Token validation specifications