Euler Finance · Agentic Access

Euler Finance Agentic Access

x-agentic-access generated

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.

DeFiLendingBorrowingFinanceEthereumBlockchainVaultsLiquidationInterest RatesPermissionless
Operations: 91 Acting: 19 Human-in-the-loop: 3 Method: generated

By consequence

read 72 write 16 safety-critical 3

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.

MethodPathConsequenceHuman-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

Raw ↑
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