generated: '2026-07-15' method: generated source: openapi/euler-v3-data-api.json description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 91 by_action_class: connected: 72 acting: 19 by_consequence: read: 72 write: 16 safety-critical: 3 human_in_the_loop_required: 3 operations: - path: /v3 method: get operationId: getRoot x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/openapi.json method: get operationId: getOpenapiJson x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/docs method: get operationId: getDocs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/auth/login method: get operationId: startPlatformAuthLogin x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/auth/callback method: get operationId: completePlatformAuthCallback x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/auth/session method: get operationId: getPlatformAuthSession x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/auth/logout method: post operationId: logoutPlatformAuthSession x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/platform-admins method: post operationId: createPlatformAdminAccess x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/platform-admins/revoke method: post operationId: revokePlatformAdminAccess x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /v3/entities method: get operationId: listEntities x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/entities method: post operationId: createEntity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/entities/{id}/members method: get operationId: listEntityMembers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/entities/{id}/members method: post operationId: createEntityMember x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/entities/{id}/addresses method: get operationId: listEntityAddresses x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/entities/{id}/addresses method: post operationId: createEntityAddress x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/entities/{id}/addresses/{chainId}/{address} method: delete operationId: deleteEntityAddress x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/entities/{id}/members/{memberId} method: patch operationId: updateEntityMember x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/entities/{id}/members/{memberId} method: delete operationId: revokeEntityMember x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /v3/entities/{id} method: get operationId: getEntity x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/entities/{id} method: patch operationId: updateEntity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/entities/{id} method: delete operationId: deleteEntity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/health method: get operationId: getHealth x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/health/detailed method: get operationId: getHealthDetailed x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/health/live method: get operationId: getHealthLive x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/health/ready method: get operationId: getHealthReady x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/metrics method: get operationId: getMetrics x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/usage/stats method: get operationId: getUsageStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/toolbox/admin/api-keys method: get operationId: getToolboxAdminApiKeys x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/admin/api-keys method: post operationId: postAdminApiKeys x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/admin/api-keys method: get operationId: getAdminApiKeys x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/admin/api-keys/{id} method: get operationId: getAdminApiKeysById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/admin/api-keys/{id} method: patch operationId: patchAdminApiKeysById x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/admin/api-keys/{id} method: delete operationId: deleteAdminApiKeysById x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /v3/admin/api-keys/{id}/usage method: get operationId: getAdminApiKeysByIdUsage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/curator/vaults method: get operationId: getCuratorVaults x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/curator/vaults/{chainId}/{address}/labels method: put operationId: putCuratorVaultsByChainIdByAddressLabels x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/protocol/stats method: get operationId: getProtocolStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/chains method: get operationId: getChains x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/chains/{chainId}/stats method: get operationId: getChainsByChainIdStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/chains/{chainId}/borrowable-vaults method: get operationId: getChainsByChainIdBorrowableVaults x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults method: get operationId: getVaults x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/batch method: post operationId: postEvkVaultBatch x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/resolve/vaults method: get operationId: getVaultResolve x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/resolve/vaults method: post operationId: postVaultResolve x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/evk/vaults/health/utilization method: get operationId: getVaultsHealthUtilization x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/health/caps method: get operationId: getVaultsHealthCaps x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address} method: get operationId: getVaultsByChainIdByAddress x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/labels method: get operationId: getVaultsByChainIdByAddressLabels x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/visibility method: get operationId: getVaultsByChainIdByAddressVisibility x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/apy method: get operationId: getVaultsByChainIdByAddressApy x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/positions method: get operationId: getVaultsByChainIdByAddressPositions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/accounts/{address}/portfolio method: get operationId: getAccountsByAddressPortfolio x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/accounts/{address}/positions method: get operationId: getAccountsByAddressPositions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/accounts/{address}/activity method: get operationId: getAccountsByAddressActivity x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/tokens method: get operationId: getTokens x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/tokens/{chainId}/{address}/price method: get operationId: getTokensByChainIdByAddressPrice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/prices method: get operationId: getPrices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/prices/history method: get operationId: getPricesHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/apys/intrinsic method: get operationId: getApysIntrinsic x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/apys/intrinsic/history method: get operationId: getApysIntrinsicHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/apys/rewards method: get operationId: getApysRewards x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/apys/rewards/history method: get operationId: getApysRewardsHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/oracles/prices method: get operationId: getOraclesPrices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/oracles/routers method: get operationId: getOraclesRouters x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/oracles/historical-adapters method: get operationId: getOraclesHistoricalAdapters x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/earn/vaults method: get operationId: getEarnVaults x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/earn/vaults/batch method: post operationId: postEarnVaultBatch x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/earn/vaults/{chainId}/{address} method: get operationId: getEarnVaultsByChainIdByAddress x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/earn/vaults/{chainId}/{address}/events method: get operationId: getEarnVaultsByChainIdByAddressEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/liquidations method: get operationId: getLiquidations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/config-history method: get operationId: getVaultsByChainIdByAddressConfigHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/collaterals method: get operationId: getVaultsByChainIdByAddressCollaterals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/ltv-history method: get operationId: getVaultsByChainIdByAddressLtvHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/cap-history method: get operationId: getVaultsByChainIdByAddressCapHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/irm-history method: get operationId: getVaultsByChainIdByAddressIrmHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/events method: get operationId: getVaultsByChainIdByAddressEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/totals method: get operationId: getVaultsByChainIdByAddressTotals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/holders method: get operationId: getVaultsByChainIdByAddressHolders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/{chainId}/{address}/debt-holders method: get operationId: getVaultsByChainIdByAddressDebtHolders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/open-interest method: get operationId: getVaultsOpenInterest x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/open-interest/by-collateral method: get operationId: getVaultsOpenInterestByCollateral x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evk/vaults/bad-debt method: get operationId: getVaultsBadDebt x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/accounts/{address}/sub-accounts method: get operationId: getAccountsByAddressSubAccounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/evc/accounts/{address}/events method: get operationId: getEvcAccountsByAddressEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/public-allocator/events method: get operationId: getPublicAllocatorEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/fee-flow/events method: get operationId: getFeeFlowEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/rewards/breakdown method: get operationId: getRewardsBreakdown x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/terms-of-use/signatures method: get operationId: getTermsOfUseSignatures x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/terms-of-use/check/{address} method: get operationId: getTermsOfUseCheckByAddress x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/graphql method: get operationId: getGraphql x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/graphql method: post operationId: postGraphql x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required