MCP Bridge enables AI agents to access your existing REST APIs as MCP tools — without modifying either the agents or the APIs. The Model Context Protocol (MCP) is an open standard that provides a structured way for AI agents to discover and invoke tools. MCP Bridge brings this capability to your existing REST APIs by translating between the two protocols automatically.The Maverics Orchestrator sits between the AI agent and your REST APIs, acting as a translator. When an agent makes an MCP tool request, the Orchestrator converts it into the corresponding REST API call. When the REST API responds, the Orchestrator translates the response back into MCP format. This means your REST APIs become discoverable, invocable tools for AI agents — without any changes to your existing API code.But translation alone is not enough. Every tool invocation also passes through the Orchestrator’s identity and authorization layer. Here is what happens when an agent requests a tool:
Authenticates the agent — When the agent first connects, the AI Identity Gateway Orchestrator returns protected resource metadata (per RFC 9470) that tells the agent which authorization server(s) to authenticate against. The agent authenticates with the Auth Provider Orchestrator (or your external IdP) and obtains a token, then presents it to the gateway for validation.
Resolves the user context — AI agents typically act on behalf of a human user. The Orchestrator identifies which user delegated authority to the agent, so authorization decisions reflect the user’s actual permissions — not just the agent’s.
Evaluates authorization policies — The Orchestrator checks whether the agent (acting on behalf of the user) is permitted to invoke the requested tool. Policies can restrict access based on the agent’s scopes, the user’s group memberships, the specific tool being invoked, or any combination of these factors.
Translates and forwards — The Orchestrator exchanges the agent’s token for a short-lived, narrowly scoped token specific to the tool being invoked, then converts the MCP tool call into the corresponding REST API request (mapping parameters, headers, and body content) and forwards it to your backend service with this fresh token.
Returns the response — The REST API response is translated back into MCP format and returned to the agent, along with any identity context the agent needs for subsequent calls.
MCP Bridge vs MCP Proxy: MCP Bridge translates REST APIs into MCP tools —
choose it when you want to expose existing REST APIs to AI agents via MCP. MCP Proxy proxies existing MCP server connections with identity injection — choose
it when you already have MCP servers running.See the AI overview for a side-by-side
comparison of both approaches.
A running Maverics Orchestrator — If you have not installed the Orchestrator yet, follow the Quick Start guide first. The Orchestrator is a small, lightweight runtime that deploys almost anywhere.
An identity provider configured as an identity connector — The Orchestrator needs an Identity Fabric to authenticate agents. If you have not connected an identity provider yet, the Quick Start guide covers this step.
One or more REST APIs you want to expose as MCP tools — These are the backend APIs that AI agents will access. The APIs must use OAuth for authentication (MCP Bridge performs token exchange to call them on behalf of agents) and must be under your organization’s control.
An OpenAPI spec for your REST API — MCP Bridge uses the OpenAPI specification to generate MCP tool definitions from your API endpoints.
An AI agent that supports the Model Context Protocol (MCP) — The agent connects to MCP Bridge as its MCP server, discovering and invoking tools through the standard MCP protocol.
The MCP Provider is the Orchestrator’s entry point for AI agent connections. It handles MCP transport (how agents connect), agent authentication (verifying agent identity via OAuth), and tool routing (directing tool calls to the correct app).Configure the MCP Provider with transport settings and OAuth-based agent authentication. The MCP Provider supports both SSE (Server-Sent Events) and Streamable HTTP transports.
Console UI
Configuration
Console UI documentation is coming soon. This section will walk you
through configuring this component using the Maverics Console’s visual
interface, including step-by-step screenshots and field descriptions.
AI Identity Gateway mode selection in Maverics Console
Define the MCP Provider and the OIDC connector that authenticates agents. The mcpProvider.authorization.oauth section configures how agent tokens are validated.
The MCP Provider enables both SSE and Streamable HTTP transports so agents can connect using whichever method they support. The authorization.oauth section configures JWT-based token validation — the Orchestrator fetches the Auth Provider Orchestrator’s signing keys from the well-known endpoint and validates agent tokens against them.
Register your REST API as an MCP Bridge app. The Orchestrator reads your API’s OpenAPI specification and automatically generates MCP tool definitions for each endpoint. Agents discover these tools through the standard MCP protocol.
Console UI
Configuration
Console UI documentation is coming soon. This section will walk you
through configuring this component using the Maverics Console’s visual
interface, including step-by-step screenshots and field descriptions.
REST API to MCP tool mapping in Maverics Console
Define an MCP Bridge app in the apps section. The openapi.spec.uri points to your API’s OpenAPI specification, and openapi.baseURL points to the actual REST API server.
The toolNamespace.name prefix is added to all tool names generated from this API. For example, if your API has a listUsers endpoint, agents will see it as my_api_listUsers. This prevents naming collisions when you have multiple MCP Bridge apps exposing tools from different APIs.The openapi.spec.uri can be an HTTP URL or a local file path (file:///path/to/spec.yaml). The openapi.baseURL is the base URL where the Orchestrator sends the translated REST API requests.
3
Configure authorization
Authorization is critical for MCP apps. Every MCP app requires both inbound authorization (OPA policy that decides whether a tool call is allowed) and outbound authorization (how the Orchestrator authenticates to the upstream REST API on behalf of the agent).
Console UI
Configuration
Console UI documentation is coming soon. This section will walk you
through configuring this component using the Maverics Console’s visual
interface, including step-by-step screenshots and field descriptions.
Authorization policy configuration in Maverics Console
The outbound authorization is where the Orchestrator’s per-tool token exchange happens. Instead of forwarding the agent’s original token to your REST API, the Orchestrator mints a fresh, short-lived token for each tool invocation. Each token carries only the scopes needed for that specific tool and expires in seconds.Add the authorization block to your MCP Bridge app. The inbound section defines the OPA policy, and the outbound section configures token exchange for the upstream REST API.
Inbound authorization (OPA): The Rego policy evaluates every tool invocation against the OPA input schema. The input.request.mcp.tool.params.name field contains the MCP tool name, and input.request.mcp.tool.params.arguments contains the tool arguments. You can also access input.request.http.headers (including the inbound access token), input.request.http.method, and input.source.ip for richer policy decisions. See the Authorization Policies guide for the full input schema and example policies.Outbound authorization (token exchange): The Orchestrator exchanges the agent’s token for a delegation token scoped to the target REST API. Each tool can have its own scopes (the permissions included in the delegated token) and ttl (how long the delegated token is valid). The idp references the connector used for the token exchange.This means when an agent calls listUsers, the Orchestrator mints a token with only user:List scope that expires in 5 seconds. When the same agent calls createUser a moment later, a completely different token is minted with only user:Create scope. No single token ever carries more permissions than a single tool needs, and no token lives longer than it takes to complete the call.For unprotected upstream APIs that do not require authentication, use type: unprotected instead of type: tokenExchange.See MCP Bridge Reference for all available fields.
Start with a deny-by-default policy and explicitly grant access to specific
tools. This is safer than starting with allow-all and trying to restrict
later — it ensures agents only access what you intentionally permit.
4
Verify the agent-to-tool flow
Test the complete flow by connecting an AI agent to MCP Bridge and invoking a registered tool. This verifies that authentication, authorization, and REST API translation all work correctly end-to-end.Connect your AI agent to the Orchestrator’s MCP endpoint. The agent should be able to:
Discover tools — The agent’s MCP client lists available tools and sees the REST APIs you registered
Authenticate — The agent presents its OAuth credentials and receives a valid session
Invoke a tool — The agent calls a tool, and the Orchestrator translates it to the REST API call
Receive a response — The REST API response is returned to the agent in MCP format
Check the Orchestrator logs to confirm that each step completed successfully. The logs show authentication events, policy evaluations, API translations, and any errors that occurred.
Success! Your REST APIs are now accessible as MCP tools through the
Orchestrator. AI agents authenticate with their credentials, authorization
policies control which tools each agent can access, and every tool
invocation is logged for audit and compliance.
If the agent connects to MCP Bridge but sees no tools, check the following:
Verify that REST APIs are correctly registered as MCP tools in the Bridge
configuration. Each API endpoint needs a valid URL, method, and tool name.
Check that the agent has the required scopes to discover tools. Some
configurations restrict tool listing based on the agent’s permissions.
Look at the Orchestrator logs for errors during tool registration. If an
API endpoint is unreachable during startup, the tool may not be registered.
Confirm that authorization policies do not block tool listing. A policy
that denies all access will also prevent tool discovery.
Authentication fails for agent connections
Agent authentication failures typically have one of these causes:
The agent’s OAuth client credentials (client ID and secret) are incorrect.
Double-check them against your identity provider’s application registration.
The identity provider is not reachable from the Orchestrator. Test
connectivity to your IdP’s token endpoint.
The agent’s client registration has expired or been revoked in the identity
provider.
The Orchestrator’s identity connector is misconfigured. Check that the
connector’s issuer URL and client configuration match your IdP.
Check the Orchestrator logs for specific authentication error details — the
logs include the identity provider’s error response, which usually identifies
the exact issue.
REST API returns unexpected errors
MCP Bridge translates MCP tool invocations to REST API calls and translates
the responses back. When the underlying REST API returns an error, the
Orchestrator passes it through as an MCP error response.To isolate the issue:
Call the REST API directly (bypassing MCP Bridge) to confirm it works on
its own. This tells you whether the issue is in the translation or the API.
Check the Orchestrator logs for the full REST request and response. The
logs show how MCP Bridge mapped tool parameters to API parameters.
Verify that parameter mappings are correct — a common issue is mapping an
MCP tool parameter to the wrong REST query parameter or header.
If the REST API requires authentication, ensure the outbound authorization
is configured with the correct token exchange settings and scopes.
Learn about agent identity concepts and set up the Auth Provider for token exchange
MCP Bridge Reference
Detailed configuration reference for all MCP Bridge settings and options
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Maverics Documentation","colors":{"primary":"#1DA1DC","light":"#2FCAFF","dark":"#0086C0"},"logo":{"light":"https://mintcdn.com/strataidentity/GnMIwAgmQ7Rnxm8R/logo/light.svg?fit=max\u0026auto=format\u0026n=GnMIwAgmQ7Rnxm8R\u0026q=85\u0026s=f75039b8474c2403c381ef74fdbee428","dark":"https://mintcdn.com/strataidentity/GnMIwAgmQ7Rnxm8R/logo/dark.svg?fit=max\u0026auto=format\u0026n=GnMIwAgmQ7Rnxm8R\u0026q=85\u0026s=c18e3db0543ce5426f86c06a48cfceba","href":"https://www.strata.io"},"favicon":"https://mintcdn.com/strataidentity/bx_Hbkhp9SuRuU18/favicon.svg?fit=max\u0026auto=format\u0026n=bx_Hbkhp9SuRuU18\u0026q=85\u0026s=7a515a8aae3869956b801d7d0a8a555c","appearance":{"default":"dark","strict":false},"navbar":{"links":[{"href":"https://strataidentity.my.site.com/support/s/","label":"Support"}],"primary":{"type":"button","label":"Console Login","href":"https://maverics.strata.io"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/strata-identity","github":"https://github.com/strata-io","x":"https://x.com/strataidentity","youtube":"https://www.youtube.com/@strataidentity"},"links":[{"header":"Resources","items":[{"label":"Legacy Docs","href":"https://legacy-docs.strata.io"}]},{"header":"Help","items":[{"label":"Status","href":"https://status.strata.io/"},{"label":"Support Center","href":"https://strataidentity.my.site.com/support/s"}]},{"header":"Terms and Policy","items":[{"label":"Privacy Policy","href":"https://www.strata.io/privacy-policy"},{"label":"Trust Center","href":"https://security-trust.strata.io/"},{"label":"Cookie Declaration","href":"https://www.strata.io/legal/cookiebot-declaration"}]}]},"integrations":{"cookies":{"key":"cookieconsent_analytics_allowed","value":"true"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"Looks like this page has moved or doesn't exist yet. Try searching the docs or head back to the [homepage](/introduction/overview). If you're looking for older content, it might still be on the [legacy documentation site](https://legacy-docs.strata.io)."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"strataidentity","hasAudioNarration":false,"actualSubdomain":"strataidentity","customDomains":["docs.strata.io"],"gitSource":{"type":"github","owner":"strata-io","repo":"docs.strata.io","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb48d5057e717ec7e9d46c","collectionId":"8209f079-89d2-42fc-811b-5a32f5fe6115","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb48d5057e717ec7e9d46c"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb48d5057e717ec7e9d46c","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Reference","count":102},{"language":"default","tag":"Orchestration","count":90},{"language":"default","tag":"Guides","count":31},{"language":"default","tag":"Identity Fabric","count":31},{"language":"default","tag":"Configuration","count":18},{"language":"default","tag":"Console Administration","count":12},{"language":"default","tag":"Authentication","count":9},{"language":"default","tag":"Changelog","count":8},{"language":"default","tag":"Config Sources","count":8},{"language":"default","tag":"Secret Providers","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"footer{margin-top:2rem!important}"}],"page":{"pagePath":"guides/ai-identity/mcp-bridge","slug":"/guides/ai-identity/mcp-bridge","pageMetadata":{"title":"Expose APIs to Agents","icon":"bridge","description":null,"href":"/guides/ai-identity/mcp-bridge"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Check,CodeBlock,Frame,Heading,Info,Mermaid,OptimizedImage,Step,Steps,Tab,Tabs,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Check)_missingMdxReference(`Check`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Make your existing REST APIs available to AI agents as discoverable MCP tools — with full identity verification and authorization on every call.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How It Works`}),`\n`,_jsx(_components.p,{children:`MCP Bridge enables AI agents to access your existing REST APIs as MCP tools — without modifying either the agents or the APIs. The Model Context Protocol (MCP) is an open standard that provides a structured way for AI agents to discover and invoke tools. MCP Bridge brings this capability to your existing REST APIs by translating between the two protocols automatically.`}),`\n`,_jsx(_components.p,{children:`The Maverics Orchestrator sits between the AI agent and your REST APIs, acting as a translator. When an agent makes an MCP tool request, the Orchestrator converts it into the corresponding REST API call. When the REST API responds, the Orchestrator translates the response back into MCP format. This means your REST APIs become discoverable, invocable tools for AI agents — without any changes to your existing API code.`}),`\n`,_jsx(_components.p,{children:`But translation alone is not enough. Every tool invocation also passes through the Orchestrator’s identity and authorization layer. Here is what happens when an agent requests a tool:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authenticates the agent`}),` — When the agent first connects, the AI Identity Gateway Orchestrator returns protected resource metadata (per RFC 9470) that tells the agent which authorization server(s) to authenticate against. The agent authenticates with the Auth Provider Orchestrator (or your external IdP) and obtains a token, then presents it to the gateway for validation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Resolves the user context`}),` — AI agents typically act on behalf of a human user. The Orchestrator identifies which user delegated authority to the agent, so authorization decisions reflect the user’s actual permissions — not just the agent’s.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Evaluates authorization policies`}),` — The Orchestrator checks whether the agent (acting on behalf of the user) is permitted to invoke the requested tool. Policies can restrict access based on the agent’s scopes, the user’s group memberships, the specific tool being invoked, or any combination of these factors.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Translates and forwards`}),` — The Orchestrator exchanges the agent’s token for a short-lived, narrowly scoped token specific to the tool being invoked, then converts the MCP tool call into the corresponding REST API request (mapping parameters, headers, and body content) and forwards it to your backend service with this fresh token.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Returns the response`}),` — The REST API response is translated back into MCP format and returned to the agent, along with any identity context the agent needs for subsequent calls.`]}),`\n`]}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n Agent[\"AI Agent\"] --> Gateway[\"MCP Bridge\u003cbr/>(AI Identity Gateway Orchestrator)\"]\n Gateway --> AuthServer[\"Auth Provider\u003cbr/>(Orchestrator / OIDC Provider)\"]\n Gateway --> API1[\"REST API 1\"]\n Gateway --> API2[\"REST API 2\"]`}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`MCP Bridge vs MCP Proxy:`}),` MCP Bridge translates REST APIs into MCP tools —\nchoose it when you want to expose existing REST APIs to AI agents via MCP. MCP Proxy proxies existing MCP server connections with identity injection — choose\nit when you already have MCP servers running.`]}),_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/guides/ai-identity/overview`,children:`AI overview`}),` for a side-by-side\ncomparison of both approaches.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A running Maverics Orchestrator`}),` — If you have not installed the Orchestrator yet, follow the `,_jsx(_components.a,{href:`/guides/getting-started/quick-start`,children:`Quick Start guide`}),` first. The Orchestrator is a small, lightweight runtime that deploys almost anywhere.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`An identity provider configured as an identity connector`}),` — The Orchestrator needs an `,_jsx(_components.a,{href:`/reference/orchestrator/identity-fabric`,children:`Identity Fabric`}),` to authenticate agents. If you have not connected an identity provider yet, the Quick Start guide covers this step.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`One or more REST APIs you want to expose as MCP tools`}),` — These are the backend APIs that AI agents will access. The APIs must use OAuth for authentication (MCP Bridge performs token exchange to call them on behalf of agents) and must be under your organization’s control.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`An OpenAPI spec for your REST API`}),` — MCP Bridge uses the OpenAPI specification to generate MCP tool definitions from your API endpoints.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`An AI agent that supports the Model Context Protocol (MCP)`}),` — The agent connects to MCP Bridge as its MCP server, discovering and invoking tools through the standard MCP protocol.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`configure-mcp-bridge`,children:`Configure MCP Bridge`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Configure the MCP Provider`,children:[_jsx(_components.p,{children:`The MCP Provider is the Orchestrator’s entry point for AI agent connections. It handles MCP transport (how agents connect), agent authentication (verifying agent identity via OAuth), and tool routing (directing tool calls to the correct app).`}),_jsx(_components.p,{children:`Configure the MCP Provider with transport settings and OAuth-based agent authentication. The MCP Provider supports both SSE (Server-Sent Events) and Streamable HTTP transports.`}),_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Console UI`,id:`console-ui`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Console UI documentation is coming soon.`}),` This section will walk you\nthrough configuring this component using the Maverics Console’s visual\ninterface, including step-by-step screenshots and field descriptions.`]})}),_jsx(Frame,{caption:`AI Identity Gateway mode selection in Maverics Console`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=ea8d2ec72a69d5a8c7955d78abba6a30`,alt:`AI Identity Gateway mode selection screen in Maverics Console showing MCP Bridge option`,\"data-og-width\":`800`,width:`800`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/placeholder.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=280\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=8915bedc81639825bb64f4b29741511e 280w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=560\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=2391aa0bf01425e8995a1b8684607380 560w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=840\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=134f31ce48f4902f27e417082e7da90c 840w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=c17116c17f12c64573cc737986cbe837 1100w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=f1e0a37a82ab3dbb2b0ba6b0f9cc04ca 1650w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=190ef650fddf11454c2bc9b2482c05b6 2500w`})})]}),_jsxs(Tab,{title:`Configuration`,id:`configuration`,children:[_jsxs(_components.p,{children:[`Define the MCP Provider and the OIDC connector that authenticates agents. The `,_jsx(_components.code,{children:`mcpProvider.authorization.oauth`}),` section configures how agent tokens are validated.`]}),_jsx(CodeBlock,{filename:`maverics.yaml`,numberOfLines:`45`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`45`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`connectors`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Points to the Auth Provider Orchestrator (the separate OIDC Provider deployment)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`auth-provider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`oidc`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oidcWellKnownURL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/.well-known/openid-configuration`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthClientID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ai-identity-gateway`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthClientSecret`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cgateway.clientSecret>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthLoginRedirect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` urls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-gateway.example.com/oidc-callback`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthLogoutRedirect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` urls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-gateway.example.com/logout`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`mcpProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` transports`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` sse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/mcp/sse\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` messagePath`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/mcp/message\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` keepAlive`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` interval`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`30s`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` stream`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/mcp\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` session`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` headerName`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Mcp-Session-Id\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` allowClientTermination`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` timeout`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`1h`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` authorization`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauth`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` metadataPath`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/.well-known/oauth-protected-resource`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` servers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`wellKnownEndpoint`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/.well-known/oauth-authorization-server`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` refreshInterval`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`24h`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tokenValidation`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` expectedAudiences`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-gateway.example.com/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` method`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`jwt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` jwt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` clockSkew`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`15s`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The MCP Provider enables both SSE and Streamable HTTP transports so agents can connect using whichever method they support. The `,_jsx(_components.code,{children:`authorization.oauth`}),` section configures JWT-based token validation — the Orchestrator fetches the Auth Provider Orchestrator’s signing keys from the well-known endpoint and validates agent tokens against them.`]})]})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`For the full set of AI Identity Gateway mode options, see the\n`,_jsx(_components.a,{href:`/reference/modes/ai-identity-gateway`,children:`AI Identity Gateway reference`}),`.`]})})]}),_jsxs(Step,{title:`Define the MCP Bridge app`,children:[_jsx(_components.p,{children:`Register your REST API as an MCP Bridge app. The Orchestrator reads your API’s OpenAPI specification and automatically generates MCP tool definitions for each endpoint. Agents discover these tools through the standard MCP protocol.`}),_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Console UI`,id:`console-ui-2`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Console UI documentation is coming soon.`}),` This section will walk you\nthrough configuring this component using the Maverics Console’s visual\ninterface, including step-by-step screenshots and field descriptions.`]})}),_jsx(Frame,{caption:`REST API to MCP tool mapping in Maverics Console`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=ea8d2ec72a69d5a8c7955d78abba6a30`,alt:`REST API to MCP tool mapping configuration screen in Maverics Console showing endpoint and parameter fields`,\"data-og-width\":`800`,width:`800`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/placeholder.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=280\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=8915bedc81639825bb64f4b29741511e 280w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=560\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=2391aa0bf01425e8995a1b8684607380 560w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=840\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=134f31ce48f4902f27e417082e7da90c 840w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=c17116c17f12c64573cc737986cbe837 1100w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=f1e0a37a82ab3dbb2b0ba6b0f9cc04ca 1650w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=190ef650fddf11454c2bc9b2482c05b6 2500w`})})]}),_jsxs(Tab,{title:`Configuration`,id:`configuration-2`,children:[_jsxs(_components.p,{children:[`Define an MCP Bridge app in the `,_jsx(_components.code,{children:`apps`}),` section. The `,_jsx(_components.code,{children:`openapi.spec.uri`}),` points to your API’s OpenAPI specification, and `,_jsx(_components.code,{children:`openapi.baseURL`}),` points to the actual REST API server.`]}),_jsx(CodeBlock,{filename:`maverics.yaml`,numberOfLines:`11`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`apps`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-api-bridge`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`mcpBridge`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` mode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`openapi`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` toolNamespace`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` disabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my_api_`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` openapi`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` spec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` uri`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-api.example.com/openapi.yaml`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` baseURL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-api.example.com/api/v1`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`toolNamespace.name`}),` prefix is added to all tool names generated from this API. For example, if your API has a `,_jsx(_components.code,{children:`listUsers`}),` endpoint, agents will see it as `,_jsx(_components.code,{children:`my_api_listUsers`}),`. This prevents naming collisions when you have multiple MCP Bridge apps exposing tools from different APIs.`]}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`openapi.spec.uri`}),` can be an HTTP URL or a local file path (`,_jsx(_components.code,{children:`file:///path/to/spec.yaml`}),`). The `,_jsx(_components.code,{children:`openapi.baseURL`}),` is the base URL where the Orchestrator sends the translated REST API requests.`]})]})]})]}),_jsxs(Step,{title:`Configure authorization`,children:[_jsxs(_components.p,{children:[`Authorization is critical for MCP apps. Every MCP app requires both `,_jsx(_components.strong,{children:`inbound`}),` authorization (OPA policy that decides whether a tool call is allowed) and `,_jsx(_components.strong,{children:`outbound`}),` authorization (how the Orchestrator authenticates to the upstream REST API on behalf of the agent).`]}),_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Console UI`,id:`console-ui-3`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Console UI documentation is coming soon.`}),` This section will walk you\nthrough configuring this component using the Maverics Console’s visual\ninterface, including step-by-step screenshots and field descriptions.`]})}),_jsx(Frame,{caption:`Authorization policy configuration in Maverics Console`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=ea8d2ec72a69d5a8c7955d78abba6a30`,alt:`Authorization policy configuration screen in Maverics Console showing policy rules and conditions`,\"data-og-width\":`800`,width:`800`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/placeholder.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=280\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=8915bedc81639825bb64f4b29741511e 280w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=560\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=2391aa0bf01425e8995a1b8684607380 560w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=840\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=134f31ce48f4902f27e417082e7da90c 840w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=c17116c17f12c64573cc737986cbe837 1100w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=f1e0a37a82ab3dbb2b0ba6b0f9cc04ca 1650w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=190ef650fddf11454c2bc9b2482c05b6 2500w`})})]}),_jsxs(Tab,{title:`Configuration`,id:`configuration-3`,children:[_jsx(_components.p,{children:`The outbound authorization is where the Orchestrator’s per-tool token exchange happens. Instead of forwarding the agent’s original token to your REST API, the Orchestrator mints a fresh, short-lived token for each tool invocation. Each token carries only the scopes needed for that specific tool and expires in seconds.`}),_jsxs(_components.p,{children:[`Add the `,_jsx(_components.code,{children:`authorization`}),` block to your MCP Bridge app. The `,_jsx(_components.code,{children:`inbound`}),` section defines the OPA policy, and the `,_jsx(_components.code,{children:`outbound`}),` section configures token exchange for the upstream REST API.`]}),_jsx(CodeBlock,{filename:`maverics.yaml`,numberOfLines:`46`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`46`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`apps`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-api-bridge`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`mcpBridge`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` mode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`openapi`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` toolNamespace`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` disabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my_api_`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` openapi`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` spec`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` uri`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-api.example.com/openapi.yaml`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` baseURL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-api.example.com/api/v1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` authorization`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` inbound`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` opa`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-api-bridge-inbound-authz`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` rego`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`|`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` package orchestrator`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` default result[\"allowed\"] := false`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` result[\"allowed\"] := true {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` input.request.mcp.tool.params.name == \"listUsers\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` result[\"allowed\"] := true {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` input.request.mcp.tool.params.name == \"getUser\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` outbound`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`tokenExchange`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tokenExchange`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`delegation`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` idp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`auth-provider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` audience`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-api.example.com/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tools`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`listUsers`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ttl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`5s`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` scopes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:List`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`getUser`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ttl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`5s`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` scopes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:Get`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`createUser`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` ttl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`5s`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` scopes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:Create`})]}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Inbound authorization (OPA):`}),` The Rego policy evaluates every tool invocation against the OPA input schema. The `,_jsx(_components.code,{children:`input.request.mcp.tool.params.name`}),` field contains the MCP tool name, and `,_jsx(_components.code,{children:`input.request.mcp.tool.params.arguments`}),` contains the tool arguments. You can also access `,_jsx(_components.code,{children:`input.request.http.headers`}),` (including the inbound access token), `,_jsx(_components.code,{children:`input.request.http.method`}),`, and `,_jsx(_components.code,{children:`input.source.ip`}),` for richer policy decisions. See the `,_jsx(_components.a,{href:`/guides/security/policies#opa-authorization-ai-identity-gateway`,children:`Authorization Policies guide`}),` for the full input schema and example policies.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Outbound authorization (token exchange):`}),` The Orchestrator exchanges the agent’s token for a delegation token scoped to the target REST API. Each tool can have its own `,_jsx(_components.code,{children:`scopes`}),` (the permissions included in the delegated token) and `,_jsx(_components.code,{children:`ttl`}),` (how long the delegated token is valid). The `,_jsx(_components.code,{children:`idp`}),` references the connector used for the token exchange.`]}),_jsxs(_components.p,{children:[`This means when an agent calls `,_jsx(_components.code,{children:`listUsers`}),`, the Orchestrator mints a token with only `,_jsx(_components.code,{children:`user:List`}),` scope that expires in 5 seconds. When the same agent calls `,_jsx(_components.code,{children:`createUser`}),` a moment later, a completely different token is minted with only `,_jsx(_components.code,{children:`user:Create`}),` scope. No single token ever carries more permissions than a single tool needs, and no token lives longer than it takes to complete the call.`]}),_jsxs(_components.p,{children:[`For unprotected upstream APIs that do not require authentication, use `,_jsx(_components.code,{children:`type: unprotected`}),` instead of `,_jsx(_components.code,{children:`type: tokenExchange`}),`.`]}),_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/reference/orchestrator/applications/mcp-bridge`,children:`MCP Bridge Reference`}),` for all available fields.`]})]})]}),_jsx(Tip,{children:_jsx(_components.p,{children:`Start with a deny-by-default policy and explicitly grant access to specific\ntools. This is safer than starting with allow-all and trying to restrict\nlater — it ensures agents only access what you intentionally permit.`})})]}),_jsxs(Step,{title:`Verify the agent-to-tool flow`,children:[_jsx(_components.p,{children:`Test the complete flow by connecting an AI agent to MCP Bridge and invoking a registered tool. This verifies that authentication, authorization, and REST API translation all work correctly end-to-end.`}),_jsx(_components.p,{children:`Connect your AI agent to the Orchestrator’s MCP endpoint. The agent should be able to:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Discover tools`}),` — The agent’s MCP client lists available tools and sees the REST APIs you registered`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authenticate`}),` — The agent presents its OAuth credentials and receives a valid session`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Invoke a tool`}),` — The agent calls a tool, and the Orchestrator translates it to the REST API call`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Receive a response`}),` — The REST API response is returned to the agent in MCP format`]}),`\n`]}),_jsx(_components.p,{children:`Check the Orchestrator logs to confirm that each step completed successfully. The logs show authentication events, policy evaluations, API translations, and any errors that occurred.`}),_jsx(Check,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success!`}),` Your REST APIs are now accessible as MCP tools through the\nOrchestrator. AI agents authenticate with their credentials, authorization\npolicies control which tools each agent can access, and every tool\ninvocation is logged for audit and compliance.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Agent cannot discover any tools`,id:`agent-cannot-discover-any-tools`,children:[_jsx(_components.p,{children:`If the agent connects to MCP Bridge but sees no tools, check the following:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Verify that REST APIs are correctly registered as MCP tools in the Bridge\nconfiguration. Each API endpoint needs a valid URL, method, and tool name.`}),`\n`,_jsx(_components.li,{children:`Check that the agent has the required scopes to discover tools. Some\nconfigurations restrict tool listing based on the agent’s permissions.`}),`\n`,_jsx(_components.li,{children:`Look at the Orchestrator logs for errors during tool registration. If an\nAPI endpoint is unreachable during startup, the tool may not be registered.`}),`\n`,_jsx(_components.li,{children:`Confirm that authorization policies do not block tool listing. A policy\nthat denies all access will also prevent tool discovery.`}),`\n`]})]}),_jsxs(Accordion,{title:`Authentication fails for agent connections`,id:`authentication-fails-for-agent-connections`,children:[_jsx(_components.p,{children:`Agent authentication failures typically have one of these causes:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The agent’s OAuth client credentials (client ID and secret) are incorrect.\nDouble-check them against your identity provider’s application registration.`}),`\n`,_jsx(_components.li,{children:`The identity provider is not reachable from the Orchestrator. Test\nconnectivity to your IdP’s token endpoint.`}),`\n`,_jsx(_components.li,{children:`The agent’s client registration has expired or been revoked in the identity\nprovider.`}),`\n`,_jsx(_components.li,{children:`The Orchestrator’s identity connector is misconfigured. Check that the\nconnector’s issuer URL and client configuration match your IdP.`}),`\n`]}),_jsx(_components.p,{children:`Check the Orchestrator logs for specific authentication error details — the\nlogs include the identity provider’s error response, which usually identifies\nthe exact issue.`})]}),_jsxs(Accordion,{title:`REST API returns unexpected errors`,id:`rest-api-returns-unexpected-errors`,children:[_jsx(_components.p,{children:`MCP Bridge translates MCP tool invocations to REST API calls and translates\nthe responses back. When the underlying REST API returns an error, the\nOrchestrator passes it through as an MCP error response.`}),_jsx(_components.p,{children:`To isolate the issue:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Call the REST API directly (bypassing MCP Bridge) to confirm it works on\nits own. This tells you whether the issue is in the translation or the API.`}),`\n`,_jsx(_components.li,{children:`Check the Orchestrator logs for the full REST request and response. The\nlogs show how MCP Bridge mapped tool parameters to API parameters.`}),`\n`,_jsx(_components.li,{children:`Verify that parameter mappings are correct — a common issue is mapping an\nMCP tool parameter to the wrong REST query parameter or header.`}),`\n`,_jsx(_components.li,{children:`If the REST API requires authentication, ensure the outbound authorization\nis configured with the correct token exchange settings and scopes.`}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`what’s-next`,children:`What’s Next`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`AI Identity Overview`,icon:`compass`,href:`/guides/ai-identity/overview`,children:_jsx(_components.p,{children:`Learn about agent identity concepts and set up the Auth Provider for token exchange`})}),_jsx(Card,{title:`MCP Bridge Reference`,icon:`rectangle-list`,href:`/reference/orchestrator/applications/mcp-bridge`,children:_jsx(_components.p,{children:`Detailed configuration reference for all MCP Bridge settings and options`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Expose APIs to Agents","icon":"bridge","description":null,"href":"/guides/ai-identity/mcp-bridge"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How It Works","slug":"how-it-works","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Configure MCP Bridge","slug":"configure-mcp-bridge","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"What’s Next","slug":"what’s-next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/strataidentity/f5eb628399810ff7/status.js","/_mintlify/custom/strataidentity/b8e24dc33885ac0a/cookiebot.js"],"subdomain":"strataidentity","siteName":"Maverics Documentation","title":"Expose APIs to Agents - Maverics Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-30T20:34:57.114Z","originalFileLocation":"guides/ai-identity/mcp-bridge.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Maverics Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Expose APIs to Agents - Maverics Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Maverics Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.strata.io/guides/ai-identity/mcp-bridge\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://strataidentity.mintlify.app/_mintlify/api/og/v2?division=AI+Identity\u0026amp;title=Expose+APIs+to+Agents\u0026amp;theme=fe1a0fe3316b752af9e31a17\u0026amp;signature=c63fc8aa387230d7a7ceecae3036bde8513493a6fa875bde256691eeaf29b578\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Expose APIs to Agents - Maverics Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://strataidentity.mintlify.app/_mintlify/api/og/v2?division=AI+Identity\u0026amp;title=Expose+APIs+to+Agents\u0026amp;theme=fe1a0fe3316b752af9e31a17\u0026amp;signature=c63fc8aa387230d7a7ceecae3036bde8513493a6fa875bde256691eeaf29b578\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Maverics Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1DA1DC\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.strata.io/guides/ai-identity/mcp-bridge\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/ai-identity/mcp-bridge.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.strata.io/#organization\",\"name\":\"Maverics Documentation\",\"url\":\"https://docs.strata.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/strataidentity/GnMIwAgmQ7Rnxm8R/logo/light.svg?fit=max\u0026auto=format\u0026n=GnMIwAgmQ7Rnxm8R\u0026q=85\u0026s=f75039b8474c2403c381ef74fdbee428\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.strata.io#website\",\"name\":\"Maverics Documentation\",\"url\":\"https://docs.strata.io\",\"publisher\":{\"@id\":\"https://docs.strata.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge#webpage\",\"url\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge\",\"name\":\"Expose APIs to Agents\",\"dateModified\":\"2026-09-30T20:34:57.114Z\",\"isPartOf\":{\"@id\":\"https://docs.strata.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"AI Identity\",\"item\":\"https://docs.strata.io/guides/ai-identity/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Expose APIs to Agents\",\"item\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge#article\",\"headline\":\"Expose APIs to Agents\",\"name\":\"Expose APIs to Agents\",\"url\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge\",\"mainEntityOfPage\":{\"@id\":\"https://docs.strata.io/guides/ai-identity/mcp-bridge#webpage\"},\"dateModified\":\"2026-09-30T20:34:57.114Z\",\"publisher\":{\"@id\":\"https://docs.strata.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.strata.io#website\"}}]}\u003c/script>","siteName":"Maverics Documentation","nav":{"global":null,"tabs":[{"tab":"Introduction","pages":[{"title":"Introduction","href":"/introduction/overview"}]},{"tab":"Guides","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"Overview","icon":"compass","href":"/guides/getting-started/overview"},{"title":"Quick Start","icon":"bolt","href":"/guides/getting-started/quick-start"},{"title":"Protect Your First Application","icon":"shield-halved","href":"/guides/getting-started/first-application"}]},{"group":"Authentication","icon":"key","pages":[{"title":"Overview","icon":"compass","href":"/guides/authentication/overview"},{"title":"How Authentication Works","sidebarTitle":"How Auth Works","icon":"diagram-project","href":"/guides/authentication/how-auth-works"},{"title":"Choosing an Orchestrator Mode","sidebarTitle":"Choosing a Mode","icon":"compass-drafting","href":"/guides/authentication/choosing-a-mode"},{"title":"SSO with OIDC","icon":"key","href":"/guides/authentication/sso-with-oidc"},{"title":"Federate SAML Apps","sidebarTitle":"Federate SAML Apps","icon":"shield-halved","href":"/guides/authentication/saml-federation"},{"title":"Add SSO to Web Apps","sidebarTitle":"Add SSO to Web Apps","icon":"server","href":"/guides/authentication/http-proxy-auth"},{"title":"Modernize LDAP Authentication","sidebarTitle":"Modernize LDAP Auth","icon":"folder-tree","href":"/guides/authentication/ldap-provider"},{"title":"Single Logout (SLO)","sidebarTitle":"Single Logout","icon":"right-from-bracket","href":"/guides/authentication/single-logout"},{"title":"Migrate Between Identity Providers","sidebarTitle":"IdP Migration","icon":"right-left","href":"/guides/authentication/idp-migration"}]},{"group":"AI Identity","icon":"microchip-ai","pages":[{"title":"Overview","icon":"compass","description":null,"href":"/guides/ai-identity/overview"},{"title":"Expose APIs to Agents","icon":"bridge","href":"/guides/ai-identity/mcp-bridge"},{"title":"Protect MCP Servers","icon":"shield-halved","description":null,"href":"/guides/ai-identity/mcp-proxy"},{"title":"OWASP MCP Top 10","icon":"shield-check","href":"/guides/ai-identity/owasp-mcp-top-10"},{"group":"Connect an AI Client","icon":"plug","expanded":true,"pages":[{"title":"Connect Claude to the AI Identity Gateway","sidebarTitle":"Claude","icon":"message-bot","href":"/guides/ai-identity/connect/claude"},{"title":"Connect ChatGPT to the AI Identity Gateway","sidebarTitle":"ChatGPT","icon":"message-bot","href":"/guides/ai-identity/connect/chatgpt"}]},{"title":"Scale the AI Identity Gateway for Production","icon":"arrows-up-down","href":"/guides/ai-identity/scale-for-production"}]},{"group":"Identity Continuity","icon":"arrows-rotate","pages":[{"title":"Overview","icon":"compass","href":"/guides/identity-continuity/overview"},{"title":"Reducing Single Points of Failure","icon":"shield-check","href":"/guides/identity-continuity/reducing-spofs"}]},{"group":"Operations","icon":"wrench","pages":[{"title":"Overview","icon":"compass","href":"/guides/operations/overview"},{"title":"Deploy to Production","icon":"rocket","href":"/guides/operations/deploy"},{"title":"Monitor and Observe","icon":"chart-line","href":"/guides/operations/monitor"},{"title":"Scale for Production","icon":"arrows-up-down","href":"/guides/operations/scale"},{"title":"Troubleshoot Common Issues","icon":"wrench","href":"/guides/operations/troubleshoot"}]},{"group":"Security","icon":"shield-halved","pages":[{"title":"Overview","icon":"compass","href":"/guides/security/overview"},{"title":"Configure TLS","icon":"lock","href":"/guides/security/tls"},{"title":"Manage Secrets","icon":"vault","href":"/guides/security/secrets-management"},{"title":"Configure Authorization Policies","sidebarTitle":"Authorization Policies","icon":"shield-check","href":"/guides/security/policies"},{"title":"Compliance and Audit","icon":"clipboard-check","href":"/guides/security/compliance"}]}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/console/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Expose APIs to Agents - Maverics Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BdiBGm0H.js","DynamicMarkdown-CbqEDjbV.js","zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}