Euler Finance Agentic Access
Euler Finance exposes 91 API operations that an AI agent could call, of which 19 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 72 read, 16 write, and 3 safety-critical.
3 operations are classed safety-critical and should require human-in-the-loop approval at runtime.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
By consequence
Highest-consequence actions
The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| DELETE | /v3/admin/api-keys/{id} | safety-critical | required |
| DELETE | /v3/entities/{id}/members/{memberId} | safety-critical | required |
| POST | /v3/platform-admins/revoke | safety-critical | required |
Source
Agentic Access
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