Playground

Playground

Run the full agent flow in your browser and inspect every real request.

Checked against the Evaluation environment, Console 0.10.1 / 0.14.1, on October 19, 2026. Release status

The AIGW Playground walks through the whole agent flow one request at a time and shows every exchange in full: URL, headers, payload, status code and response. Use it to see the flow on the wire before you write code, or to check a Resource and Proxy client you just configured.

Open it at https://playground.aigw.eval.loginid.ai/.

AIGW Playground start screen with the step list, the request panel and the flow diagram
The Playground start screen. The diagram on the right highlights which parties are talking at each step.

What the Playground does

The Playground plays the agent first, then the MCP/UCP service. Press Run step to send the current request, then Next to move on. AIGW errors are shown exactly as returned, and the page never fabricates a token.

What is real and what is mocked

ComponentIn the Playground
AgentThe Playground page itself
Resource MCP (the MCP/UCP service)Mock, simulated in the browser
Resource API (the merchant backend)Mock, simulated in the browser
AIGW discovery, DCR, authorization, token, Proxy token and credential redemptionReal calls to AIGW

Configure the environment

You need a Token exchange Resource in AIGW. Open the Environment panel in the top-right corner and set these fields:

FieldValueNeeded for
AIGW authorization serverThe Authorization server from the Resource's Reference screen, for example https://api.aigw.eval.loginid.ai/<RESOURCE_ID>. Also editable on the first step.All AIGW steps
Agent HTTPS callbackLeave blank. It defaults to the Playground's own /oauth/callback path.DCR and Authorize
Resource indicatorThe Resource's Resource indicator (audience)Redeem
Resource Auth client ID and secretA Proxy client from the same Project as the ResourceProxy auth
Resource MCP URLLeave the mock defaultProbe

Tick Remember to keep the authorization server for next time. Configuration locks once a run starts; press Reset to change it.

Naming

The Playground calls the MCP server's credential a Resource Auth client. In the Console it is a Proxy client.

What each step shows

Probe: the 401 challenge

The agent calls the mock MCP server with no token. It answers 401 with a WWW-Authenticate header whose resource_metadata points to its Protected Resource Metadata.

Discover: Protected Resource Metadata

The agent fetches /.well-known/oauth-protected-resource (RFC 9728). The authorization_servers entry is the per-Resource AIGW authorization server you configured.

Config: OAuth and OIDC discovery

The agent fetches the real /.well-known/openid-configuration from AIGW. It learns the per-Resource authorization endpoint, the core token endpoint, the registration endpoint and the supported scopes, which include the Resource's own scopes.

Register: Dynamic Client Registration

The agent registers at POST /api/register. AIGW returns 201 with a new client_id and client_secret, the domain it derived from the redirect URI, and a verification_method of none, because the Playground doesn't sign requests with Web Bot Auth.

The request deliberately sends no scope. AIGW rejects a registration outright if any requested scope isn't registrable for a dynamic client, so scopes are chosen in the next step.

Authorize: real sign-in with PKCE

Pick which discovered scopes to request, then press Continue to AIGW login. The Playground builds an Authorization Code with PKCE (S256) request to the per-Resource authorization endpoint and sends your browser there.

You sign in on the real AIGW page with the identity providers the Resource allows and approve the consent screen. Back in the Playground, the step shows the 302 redirect with the returned code and state. If authorization is refused right after registration, the agent may be Pending or Rejected under the Project's agent policy.

Token: the real AIGW response

The agent exchanges the code, its client_secret and the PKCE code_verifier at the core token endpoint. The response is the unmodified AIGW result: access_token, id_token, refresh_token and the granted scope. The Playground decodes both JWTs. In the access token, look at these claims:

ClaimExampleMeaning
isshttps://core.api.aigw.eval.loginid.ai/Issued by the core AIGW authorization server
audThe Resource indicatorThe Resource this token is for
subsub_…Opaque, per-Project user subject
ext.acr…:al2How strongly the user was verified
ext.amr["mfa", "kba"]How the user authenticated
ext.agent / ext.actClient ID, domain, name, verificationsWhich agent is acting for the user
ext.project_idProject IDThe Project the token belongs to

Personal data

The ID token carries the identity claims the user consented to, such as name, email and address. Treat it as personal data.

Proxy auth: client credentials

Now the Playground plays the MCP server. It authenticates to AIGW with the Proxy client ID and secret (grant_type=client_credentials) and receives a Proxy token.

Redeem: the merchant token

The MCP server calls the credential redemption endpoint with the user's AIGW token and the Proxy token.

Requesthttp
POST https://api.aigw.eval.loginid.ai/api/credentials/tokenAuthorization: Bearer <user's AIGW access token>X-Proxy-Token: <Proxy token>Content-Type: application/json{"resource": "<resource indicator>"}

AIGW returns the merchant access token it obtained from the merchant's authorization server during sign-in, in access_token, with expires_at and scopes when present. Decode it and you'll see a token issued by the merchant's authorization server (Keycloak in the default Playground Resource), not by AIGW. The full response is in the redemption reference.

Resource call

The MCP server calls the mock Resource API with the merchant token. The flow is complete.

Run it locally

The Playground is a Vite and React app with a small Node API server. Run it with Node.js 22.13 or later. The public repository link is coming soon. Until then, use the hosted Playground.

Shellbash
# Node.js 22.13 or laternpm installnpm run dev# Full login flow: expose the dev server over HTTPS through a Cloudflare tunnelnpm run dev:tunnel

On localhost you can inspect the UI and discovery. The full sign-in flow needs an HTTPS origin, because AIGW registration rejects HTTP callbacks. npm run dev:tunnel exposes the dev server through a Cloudflare tunnel so you get one.

If a step fails

SymptomLikely causeFix
Register fails with an HTTPS errorThe Playground was opened over HTTPUse the hosted HTTPS Playground, or run npm run dev:tunnel locally.
Authorize is refusedThe agent is held or rejected by agent policyApprove the agent in Console, Agents, or adjust the Project's approval rules.
Proxy auth returns 401Wrong Proxy client ID or secret, or the Proxy client was revokedRe-enter the values, or generate a new Proxy client.
Redeem failsProxy client from a different Project, Resource indicator not an exact match, or no merchant token stored because the merchant authorization server rejected AIGW's assertionFix the mismatch, then see Keycloak trust and user mapping.

Next steps