Lean Technologies Agentic Access
Lean Technologies exposes 51 API operations that an AI agent could call, of which 14 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: 37 read, 7 write, and 7 physical.
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 | /customers/v1/{customer_id}/payment-sources/{payment_source_id} | physical | conditional |
| POST | /payments/account-on-file | physical | conditional |
| POST | /payments/v1/intents | physical | conditional |
| POST | /payouts/refunds | physical | conditional |
| PUT | /payouts/refunds | physical | conditional |
| POST | /payouts/v1/payment | physical | conditional |
| POST | /payouts/v1/payment/destinations | physical | conditional |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/lean-authentication-api-openapi.yml, openapi/lean-banks-api-openapi.yml, openapi/lean-customers-api-openapi.yml,
openapi/lean-data-api-openapi.yml, openapi/lean-entities-api-openapi.yml, openapi/lean-insights-api-openapi.yml,
openapi/lean-payment-sources-api-openapi.yml, openapi/lean-payments-api-openapi.yml, openapi/lean-payouts-api-openapi.yml,
openapi/lean-refunds-api-openapi.yml, openapi/lean-verifications-api-openapi.yml
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: 51
by_action_class:
acting: 14
connected: 37
by_consequence:
write: 7
read: 37
physical: 7
human_in_the_loop_required: 0
operations:
- path: /oauth2/token
method: post
operationId: generateAccessToken
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: /banks/v1/
method: get
operationId: listBanks
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1
method: post
operationId: createCustomer
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: /customers/v1
method: get
operationId: listCustomers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/{customer_id}
method: get
operationId: getCustomerById
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/app-user-id/{app_user_id}
method: get
operationId: getCustomerByAppUserId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts
method: get
operationId: getAccounts
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/transactions
method: get
operationId: getTransactions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/balances
method: get
operationId: getBalances
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/beneficiaries
method: get
operationId: getBeneficiaries
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/direct-debits
method: get
operationId: getDirectDebits
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/scheduled-payments
method: get
operationId: getScheduledPayments
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/standing-orders
method: get
operationId: getStandingOrders
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/accounts/{account_id}/identities
method: get
operationId: getAccountIdentities
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/identity
method: get
operationId: getIdentity
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/refreshes
method: post
operationId: triggerDataRefresh
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: /data/v2/refreshes
method: get
operationId: getDataRefreshes
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /data/v2/refreshes/{refresh_id}
method: get
operationId: getDataRefreshStatus
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/{customer_id}/entities
method: get
operationId: getEntitiesForCustomer
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/{customer_id}/entities/{entity_id}
method: get
operationId: getEntityById
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/entities
method: get
operationId: retrieveEntitiesForDateRange
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /insights/v2/income
method: post
operationId: computeIncome
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: /insights/v2/expenses
method: get
operationId: getExpenses
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /insights/v2/assets/cashflows
method: get
operationId: getCashflows
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/{customer_id}/payment-sources
method: get
operationId: listCustomerPaymentSources
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/{customer_id}/payment-sources/{payment_source_id}
method: get
operationId: getPaymentSourceById
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /customers/v1/{customer_id}/payment-sources/{payment_source_id}
method: delete
operationId: deletePaymentSource
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /payments/v1/intents
method: post
operationId: createPaymentIntent
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /payments/v1/intents
method: get
operationId: listPaymentIntents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payments/v1/intents/{intent_id}
method: get
operationId: getPaymentByIntentId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payments/v1/{payment_id}
method: get
operationId: getPaymentByPaymentId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payments/account-on-file
method: post
operationId: initiateAofPayment
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /consents/account-on-file
method: post
operationId: createAofConsent
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: /consents/v1
method: get
operationId: listCustomerConsents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /consents/{consent_id}
method: get
operationId: getConsentDetails
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /consents/{consent_id}/balance
method: get
operationId: fetchConsentBalance
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /consents/{consent_id}/history
method: get
operationId: getConsentHistory
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/v1/payment
method: post
operationId: createPayoutPayment
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /payouts/v1/payments
method: get
operationId: listPayouts
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/v1/payments/{payment_id}/history
method: get
operationId: getPayoutPaymentHistory
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/v1/{payment_id}
method: get
operationId: getPayout
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/v1/intents/{payment_intent_id}
method: get
operationId: getPayoutIntent
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/v1/payment/destinations
method: post
operationId: createPayoutDestination
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /payouts/v1/payment/destinations
method: get
operationId: listPayoutDestinations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/v1/payment/destinations/{destination_id}
method: get
operationId: getPayoutDestination
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/refunds
method: get
operationId: listRefunds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /payouts/refunds
method: post
operationId: createRefund
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /payouts/refunds
method: put
operationId: processRefunds
x-agentic-access:
action-class: acting
consequence: physical
subject: required
audience: null
token:
max-ttl: 300
exchange: true
purpose-required: true
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /payouts/refunds/reasons
method: get
operationId: getRefundReasons
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /verifications/v1/accounts
method: post
operationId: verifyAccount
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: /insights/v1/name-verification
method: post
operationId: verifyName
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