Key Features
The XAA Debugger provides comprehensive tooling for testing Cross-App Access implementations:- Authorization Server Preflight - Automatic compatibility checks after discovery that verify jwt-bearer grant support and detect known authorization server vendors (Okta, Auth0, Keycloak, WorkOS, Stytch)
- Actionable Error Guidance - Plain-English explanations and action buttons for common failure modes instead of raw error messages
- Visual Sequence Diagram - Four-actor swimlanes showing Agent, IdP, MCP Server, and Authorization Server interactions
- Network Inspection - View all HTTP requests and responses including the
/proxy/tokenwrapper for authorization server calls - Vendor-Specific Hints - Configuration guidance tailored to your authorization server (native support, requires config, or unsupported with workarounds)
Getting Started
To begin debugging XAA flows:- Navigate to the XAA Debugger - Click the XAA Flow tab in MCPJam Inspector
- Configure Target - Provide your MCP server URL and authorization server details
- Run Mock Authentication - Complete the synthetic identity provider flow to obtain an ID token
- Review Compatibility - After authorization server discovery, check the green/amber/red banner for capability warnings
- Exchange Tokens - The debugger will attempt the ID-JAG (Identity JSON Assertion Grant) exchange and surface any configuration issues
Authorization Server Compatibility
After step 4 (authorization server discovery), the debugger displays a compatibility banner:- Green (Pass) - Authorization server advertises
urn:ietf:params:oauth:grant-type:jwt-bearerand has a token endpoint. The flow should succeed if issuer trust is configured. - Amber (Warn) - The authorization server didn’t advertise
grant_types_supportedin its metadata. Support can’t be verified without attempting the token exchange. - Red (Fail) - The authorization server doesn’t advertise jwt-bearer grant support, or is a known-unsupported vendor. The flow will fail at step 11.
Vendor Detection
The debugger recognizes common authorization server vendors and provides tailored guidance:- Okta - Native jwt-bearer support. Register MCPJam as a trusted identity issuer using the JWKS URL from the Register Issuer dialog.
- Auth0 - Supports jwt-bearer with configuration. Set up a trusted issuer pointing at MCPJam’s JWKS and map subjects to Auth0 users.
- Keycloak - Supports Token Exchange. Configure a brokered IdP that trusts MCPJam’s JWKS.
- WorkOS / Stytch - Currently unsupported. Workaround: run a bridge service that verifies the ID-JAG against MCPJam’s JWKS and mints access tokens via the vendor’s admin API.
Error Guidance
When the flow encounters an error, the debugger surfaces a guidance callout with:- Title - A user-friendly summary of what went wrong
- Explanation - Plain-English description of the root cause
- Actions - Buttons to fix the issue (Configure Target, Register Issuer, Reset Flow)
Common Error Scenarios
Client ID Required- The ID-JAG needs a
client_idclaim. Configure it in the target settings and register the client at your authorization server.
- The AS returned
unsupported_grant_type. Most authorization servers don’t support RFC 7523 yet. Check vendor-specific guidance or run a bridge service.
- The AS returned
invalid_grant. Common causes: MCPJam isn’t registered as a trusted issuer, theaudclaim doesn’t match the AS issuer, or theresourceclaim isn’t recognized.
- The AS issued a token but the MCP server returned 401. The
resourceoraudclaim on the access token likely doesn’t match the MCP server’s canonical resource URL.
Sequence Diagram
The XAA flow sequence diagram shows four actors:- Agent - The MCP client initiating the flow
- IdP - MCPJam’s synthetic identity provider (for testing)
- MCP Server - Your MCP server that requires XAA authorization
- Authorization Server - The OAuth 2.0 authorization server that issues access tokens
Next Steps
- Review the MCP OAuth specification for XAA requirements
- Check your authorization server’s documentation for jwt-bearer grant configuration
- Use the Register Issuer dialog to get the JWKS URL for configuring issuer trust

