Turso Agentic Access
Turso exposes 49 API operations that an AI agent could call, of which 24 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: 25 read, 21 write, 1 physical, and 2 safety-critical.
2 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 | /v1/auth/api-tokens/{tokenName} | safety-critical | required |
| DELETE | /v1/organizations/{organizationSlug}/api-tokens/{tokenId} | safety-critical | required |
| POST | /v1/organizations/{organizationSlug}/groups/{groupName}/transfer | physical | conditional |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/turso-platform-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: 49
by_action_class:
connected: 25
acting: 24
by_consequence:
read: 25
write: 21
physical: 1
safety-critical: 2
human_in_the_loop_required: 2
operations:
- path: /v1/organizations/{organizationSlug}/databases
method: get
operationId: listDatabases
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases
method: post
operationId: createDatabase
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: /v1/organizations/{organizationSlug}/databases/{databaseName}
method: get
operationId: getDatabase
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases/{databaseName}
method: delete
operationId: deleteDatabase
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: /v1/organizations/{organizationSlug}/databases/{databaseName}/configuration
method: get
operationId: getDatabaseConfiguration
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases/{databaseName}/configuration
method: patch
operationId: updateDatabaseConfiguration
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: /v1/organizations/{organizationSlug}/databases/{databaseName}/instances
method: get
operationId: listDatabaseInstances
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases/{databaseName}/instances/{instanceName}
method: get
operationId: getDatabaseInstance
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases/{databaseName}/auth/tokens
method: post
operationId: createDatabaseToken
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: /v1/organizations/{organizationSlug}/databases/{databaseName}/usage
method: get
operationId: getDatabaseUsage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases/{databaseName}/stats
method: get
operationId: getDatabaseStats
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/databases/{databaseName}/auth/rotate
method: post
operationId: invalidateDatabaseTokens
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: /v1/organizations/{organizationSlug}/groups
method: get
operationId: listGroups
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/groups
method: post
operationId: createGroup
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: /v1/organizations/{organizationSlug}/groups/{groupName}
method: get
operationId: getGroup
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/groups/{groupName}
method: delete
operationId: deleteGroup
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: /v1/organizations/{organizationSlug}/groups/{groupName}/configuration
method: get
operationId: getGroupConfiguration
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/groups/{groupName}/configuration
method: patch
operationId: updateGroupConfiguration
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: /v1/organizations/{organizationSlug}/groups/{groupName}/transfer
method: post
operationId: transferGroup
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: /v1/organizations/{organizationSlug}/groups/{groupName}/unarchive
method: post
operationId: unarchiveGroup
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: /v1/organizations/{organizationSlug}/groups/{groupName}/locations/{location}
method: post
operationId: addLocationToGroup
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: /v1/organizations/{organizationSlug}/groups/{groupName}/locations/{location}
method: delete
operationId: removeLocationFromGroup
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: /v1/organizations/{organizationSlug}/groups/{groupName}/update
method: post
operationId: updateGroupDatabases
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: /v1/organizations/{organizationSlug}/groups/{groupName}/auth/tokens
method: post
operationId: createGroupToken
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: /v1/organizations/{organizationSlug}/groups/{groupName}/auth/rotate
method: post
operationId: invalidateGroupTokens
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: /v1/locations
method: get
operationId: listLocations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations
method: get
operationId: listOrganizations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}
method: get
operationId: getOrganization
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}
method: patch
operationId: updateOrganization
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: /v1/organizations/{organizationSlug}/plans
method: get
operationId: listOrganizationPlans
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/invoices
method: get
operationId: listOrganizationInvoices
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/subscription
method: get
operationId: getOrganizationSubscription
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/usage
method: get
operationId: getOrganizationUsage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/members
method: get
operationId: listOrganizationMembers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/members
method: post
operationId: addOrganizationMember
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: /v1/organizations/{organizationSlug}/members/{username}
method: get
operationId: getOrganizationMember
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/members/{username}
method: patch
operationId: updateMemberRole
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: /v1/organizations/{organizationSlug}/members/{username}
method: delete
operationId: removeOrganizationMember
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: /v1/auth/validate
method: get
operationId: validateAPIToken
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/auth/api-tokens
method: get
operationId: listAPITokens
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/auth/api-tokens/{tokenName}
method: post
operationId: createAPIToken
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: /v1/auth/api-tokens/{tokenName}
method: delete
operationId: revokeAPIToken
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: /v1/organizations/{organizationSlug}/api-tokens
method: get
operationId: listOrganizationAPITokens
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/organizations/{organizationSlug}/api-tokens/{tokenId}
method: delete
operationId: revokeOrganizationAPIToken
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: /v1/organizations/{organizationSlug}/audit-logs
method: get
operationId: listOrganizationAuditLogs
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/organizations/{organizationSlug}/invites
method: get
operationId: listOrganizationInvitesV2
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/organizations/{organizationSlug}/invites
method: post
operationId: inviteOrganizationMemberV2
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: /v2/organizations/{organizationSlug}/invites/{email}
method: delete
operationId: deleteOrganizationInviteByEmailV2
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: /v1/user
method: get
operationId: getCurrentUser
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none