{"service":"mcp-gateway","health":"/health","validate":"/validate","mcpGatewayAuth":{"enabled":true,"whatThisMeans":"Protected routes require a gateway bearer first; unauthenticated MCP calls get 401 + WWW-Authenticate so Cursor can run OAuth on this service."},"googleMcpOauthBroker":{"enabled":true,"authorize":"/oauth/mcp/authorize","token":"/oauth/mcp/token","callback":"/oauth/mcp/callback"},"oauth":{"googleMcpBroker":"/oauth/mcp/authorize","openidConfiguration":"/.well-known/openid-configuration","oauthProtectedResource":"/.well-known/oauth-protected-resource","dynamicClientRegistration":"/register","note":"Add Google redirect URI: {origin}/oauth/mcp/callback (with ROOT_PATH if set). Set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET."},"mcp":"Use pathPrefix routes from config. Both /mcp/... and /mcpgw/mcp/... are accepted; common Cursor URL is /mcpgw/mcp.","routesLoaded":1,"genericRouting":{"envUpstreamAliasKeys":[],"targetHeader":"X-MCP-Target","targetQueryParam":"mcp_target","mergePolicy":"Route `queryRouting` or `genericRouter` + `upstreamAliases` merge with MCP_EDGE_UPSTREAM_ALIASES_JSON; same key uses env.","note":"Set `queryRouting.aggregate: true` to merge multiple upstreams into one connection (tool names: alias__original). Otherwise use `?mcp_target=` or `X-MCP-Target` for per-request byte proxying."}}