Overview
When an agent calls another agent, which calls an MCP server, the request that started as “summarize my open tickets” becomes a chain of calls made by software, not by the user. If each hop simply forwards the user’s token, the resource at the end sees only the user — it cannot tell which agent acted, under whose authority, or whether that agent was allowed to. Attribution and scoped-down access both disappear at the first hop. Okta for AI Agents closes the identity half of that gap. An agent is registered in Okta’s Universal Directory as a first-class non-human identity — with a human owner, a managed lifecycle, and the entitlement to perform agent-to-agent token exchange. Each hop mints a fresh ID-JAG audienced to the next callee’s authorization server, keeping the user assub while nesting the acting agent into the act chain.
TrueFoundry closes the enforcement half. The Agent Gateway and MCP Gateway sit on every hop of the call path and perform the exchange on the chain’s behalf — so no agent author writes a two-legged token exchange, and policy, scope, and audit stay consistent no matter which framework built the agent.
Together they give you:
Okta application vs Okta AI Agent
The rest of this guide leans on two Okta terms that are easy to conflate. They are different kinds of principal, and which one you register determines what a hop can do. Okta application — a client or resource that Okta knows about, registered as an OIDC/OAuth client. In an exchange it plays the requesting app (the thing acting for a signed-in user) or the resource app (the protected target). Registering an application is base Workforce Identity functionality — no AI-agent product required. Okta AI Agent — an autonomous actor registered as a first-class non-human identity in Okta’s Universal Directory through Okta for AI Agents. It is still an OAuth client underneath, but registering it as an agent adds an owner (a human accountable for it) and — the part this guide depends on — the entitlement to perform agent-to-agent token exchange, the onward per-hop ID-JAG minting a multi-agent chain needs.Which one to register for each hop
In a chain likeclient app → Agent A → Agent B → MCP server:
- The client app is an Okta application (the requesting app) — the user signs into it and it obtains the Okta ID token that seeds the chain.
- Agent A and Agent B are Okta AI Agents, because each one both receives a call and makes the next one. Only an AI Agent can mint the onward ID-JAG.
- The MCP server is an Okta application in the resource-app role — it is a target, not an actor, so it does not need to be an AI Agent.
Delegations and resource connections
Once an agent exists in Okta, two settings on its detail page define the edges of the chain it can participate in. They are the inbound and outbound halves of the same relationship, and both must be in place for a hop to work:Agent A → Agent B, that means a delegation on Agent B naming Agent A, and a resource connection on Agent A pointing at Agent B. Okta collapses this for you in one case:
Prerequisites
In Okta, you need:- An Okta for AI Agents subscription — the separate paid product that provides agent registration and the agent-to-agent token exchange this flow depends on.
- Admin access to register AI agents and create custom authorization servers.
How it works
Sequence: user ID token → ID-JAG audienced to the callee’s custom authorization server → redeemed access token → next hop seeded by the previous hop’s access token, withact nesting at each step.
Okta setup
Register each agent as an Okta AI Agent
Give each agent a custom authorization server
audience of the ID-JAG minted for calls
into that agent; when to share one AS versus one per agent.Register the terminal MCP server as a resource
Authorize the connections along the chain
TrueFoundry setup
Configure ID-JAG Auth Data on each agent
Configure ID-JAG Auth Data on the MCP server
Grant access along the chain
Configuration reference
Field-by-field table for the ID-JAG (Okta AI Agent) Auth Data form.Verifying the setup
How to confirm the exchange is happening: what to look for in the gateway logs, the claims to expect on the downstream token (sub, nested act), and common failure modes.
Limitations
What requires the paid Okta AI Agents product, what falls back to OBO or plain OAuth, and where the actor chain breaks.FAQ
Does the terminal MCP server need to be registered as an Okta AI Agent?
Does the terminal MCP server need to be registered as an Okta AI Agent?
Can the chain start from an access token instead of an ID token?
Can the chain start from an access token instead of an ID token?
What happens at a hop that is not registered in Okta?
What happens at a hop that is not registered in Okta?