Laurel · Agentic Access

Laurel Agentic Access

x-agentic-access generated

Laurel exposes 364 API operations that an AI agent could call, of which 225 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: 139 read, 216 write, and 9 safety-critical.

9 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.

CompanyArtificial IntelligenceTimekeepingTime TrackingLegalLegal TechAccountingProfessional ServicesBillingPractice ManagementWork IntelligenceAnalytics
Operations: 364 Acting: 225 Human-in-the-loop: 9 Method: generated

By consequence

read 139 write 216 safety-critical 9

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
POST /api/v1/customers/{customerId}/clients/override-compliance-rules safety-critical required
POST /api/v1/customers/{customerId}/clients/override-compliance-rules/affected-count safety-critical required
PATCH /api/v1/customers/{customerId}/connections/{connectionId}/scim safety-critical required
PATCH /api/v1/customers/{customerId}/users/{userId}/entries/{entryId}/override safety-critical required
POST /api/v1/entries/{entryId}/dismiss-autostop safety-critical required
PATCH /api/v1/public/customers/{customerId}/users/{userId}/entries/{entryId}/override safety-critical required
PATCH /api/v2/customers/{customerId}/users/{userId}/entries/{entryExternalId}/override safety-critical required
POST /api/v2/timers/{timerId}/stop safety-critical required
POST /api/v3/timers/stop safety-critical required

Source

Agentic Access

Raw ↑
generated: '2026-07-19'
method: generated
source: openapi/laurel-identity-openapi-original.json, openapi/laurel-ingestion-openapi-original.json,
  openapi/laurel-time-openapi-original.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/.
notes: Classified with word-boundary matching after stripping the NestJS "Controller" token from operationIds;
  plain substring matching mis-reads "...Controller_create" as the safety keyword "control".
summary:
  operations: 364
  by_action_class:
    acting: 225
    connected: 139
  by_consequence:
    read: 139
    safety-critical: 9
    write: 216
  human_in_the_loop_required: 9
operations:
- path: /api/v1/tenants
  method: post
  operationId: TenantController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/tenants
  method: get
  operationId: TenantController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/tenants/{tenantId}
  method: get
  operationId: TenantController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/tenants/{tenantId}
  method: patch
  operationId: TenantController_updateOneById_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/permissions
  method: get
  operationId: PermissionController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/permissions/{permissionId}
  method: get
  operationId: PermissionController_getOne_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/ably/auth
  method: get
  operationId: AblyController_auth_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/clients/on-credentials-exchange
  method: post
  operationId: ClientController_onCredentialsExchange_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/clients
  method: post
  operationId: ClientController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/clients
  method: get
  operationId: ClientController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/clients/{clientId}
  method: get
  operationId: ClientController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/clients/{clientId}
  method: patch
  operationId: ClientController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/clients/{clientId}
  method: delete
  operationId: ClientController_delete_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers
  method: post
  operationId: CustomerController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers
  method: get
  operationId: CustomerController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/lookup
  method: get
  operationId: CustomerController_lookup_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}
  method: get
  operationId: CustomerController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}
  method: patch
  operationId: CustomerController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/tenant
  method: get
  operationId: CustomerController_getTenant_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/identities
  method: post
  operationId: CustomerController_createNewCustomerIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/connections
  method: post
  operationId: CustomerController_createConnection_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/connections/{connectionId}
  method: patch
  operationId: CustomerController_updateConnection_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/connections/{connectionId}
  method: delete
  operationId: CustomerController_deleteConnection_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/connections/{connectionId}/scim
  method: patch
  operationId: CustomerController_updateConnectionScim_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/connections/{connectionId}/domains
  method: put
  operationId: CustomerController_updateConnectionDomains_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/region
  method: get
  operationId: CustomerController_getCustomerRegion_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/clients
  method: get
  operationId: CustomerClientController_getCustomerClients_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/clients
  method: post
  operationId: CustomerClientController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/clients/{clientId}
  method: get
  operationId: CustomerClientController_getCustomerClientById_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/clients/{clientId}
  method: delete
  operationId: CustomerClientController_deleteCustomerClientById_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/managed-clients
  method: get
  operationId: CustomerManagedClientController_getCustomerManagedClients_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/managed-clients
  method: post
  operationId: CustomerManagedClientController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/managed-clients/{clientId}
  method: delete
  operationId: CustomerManagedClientController_deleteCustomerManagedClientById_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/data-retention-audits
  method: post
  operationId: DataRetentionAuditController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/data-retention-audits
  method: get
  operationId: DataRetentionAuditController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/data-retention-audits/{auditId}
  method: get
  operationId: DataRetentionAuditController_getOne_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /healthcheck
  method: get
  operationId: HealthCheckController_getHeathStatus
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/impersonation-events
  method: post
  operationId: ImpersonationEventController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/impersonation-events
  method: get
  operationId: ImpersonationEventController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/impersonation-events/{eventId}
  method: get
  operationId: ImpersonationEventController_getOne_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/twilio/phone-lookups
  method: get
  operationId: TwilioController_getPhoneDetails_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/roles
  method: get
  operationId: RoleController_getAll_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/roles/{roleId}
  method: get
  operationId: RoleController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users
  method: get
  operationId: CustomerUserController_search_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v2/customers/{customerId}/users
  method: get
  operationId: CustomerUserController_searchV2_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users-lite
  method: get
  operationId: CustomerUserController_searchLite_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/by-ids
  method: get
  operationId: CustomerUserController_getUsersByIds_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/lookup
  method: get
  operationId: CustomerUserController_lookupUser_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/batch/lookup
  method: post
  operationId: CustomerUserController_lookupUsersBatch_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/translate-timekeeper-ids
  method: post
  operationId: CustomerUserController_translateTimekeeperIdsToUserIds_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/lookup/identity
  method: post
  operationId: CustomerUserController_lookupUserIdentityType_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v2/customers/{customerId}/users/lookup/identity
  method: get
  operationId: CustomerUserController_lookupUserByIdentity_v2
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/{userId}/identities
  method: get
  operationId: CustomerUserController_lookupUserIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/{userId}/identities
  method: post
  operationId: CustomerUserController_createNewUserIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/identities
  method: put
  operationId: CustomerUserController_updateUserIdentity_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/super-delegate
  method: patch
  operationId: CustomerUserController_setUserSuperDelegateStatus_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}
  method: get
  operationId: CustomerUserController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/{userId}
  method: patch
  operationId: CustomerUserController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}
  method: delete
  operationId: CustomerUserController_delete_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v2/customers/{customerId}/users/{userId}
  method: patch
  operationId: CustomerUserController_updateV2_v2
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/status
  method: patch
  operationId: CustomerUserController_updateStatus_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/identities/bulk
  method: post
  operationId: CustomerUserController_createBulkUserIdentities_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/email-aliases
  method: post
  operationId: CustomerUserController_createEmailAliases_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/email-aliases
  method: delete
  operationId: CustomerUserController_deleteEmailAlias_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/{userId}/email-aliases
  method: get
  operationId: CustomerUserController_getEmailAliases_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/customers/{customerId}/users/import
  method: post
  operationId: CustomerUserController_deprecatedImport_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v2/customers/{customerId}/users/import
  method: post
  operationId: CustomerUserController_importV2_v2
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/customers/{customerId}/users/batch/import
  method: post
  operationId: CustomerUserController_postUserData_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v2/customers/{customerId}/users/batch/import
  method: post
  operationId: CustomerUserController_postUserDataV2_v2
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/delegators
  method: get
  operationId: DelegatorController_search_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/users
  method: post
  operationId: UserController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/users/lookup
  method: get
  operationId: UserController_lookup_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/users/on-auth
  method: post
  operationId: UserController_onAuth_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/users/on-broker-auth
  method: post
  operationId: UserController_onBrokerAuth_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/users/current
  method: get
  operationId: UserController_findCurrentUser_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/users/current
  method: patch
  operationId: UserController_updateCurrent_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/users/{userId}
  method: get
  operationId: UserController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups
  method: get
  operationId: UserGroupController_list_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups
  method: post
  operationId: UserGroupController_create_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/user-groups/by-external-id/{externalId}
  method: put
  operationId: UserGroupController_upsertByExternalId_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/user-groups/by-external-id/{externalId}
  method: delete
  operationId: UserGroupController_deleteByExternalId_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/user-groups/for-user/{userId}
  method: get
  operationId: UserGroupController_listForUser_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups/{userGroupId}
  method: get
  operationId: UserGroupController_get_v1
  source: openapi/laurel-identity-openapi-original.json
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /api/v1/user-groups/{userGroupId}
  method: patch
  operationId: UserGroupController_update_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/v1/user-groups/{userGroupId}
  method: delete
  operationId: UserGroupController_delete_v1
  source: openapi/laurel-identity-openapi-original.json
  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: /api/

# --- truncated at 32 KB (142 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/laurel/refs/heads/main/agentic-access/laurel-agentic-access.yml

Work with this as data

Every access contract here is available over the APIs.io API and to AI agents over MCP. Agentic Access is not yet its own endpoint on the v1 API. Reach it through catalog search and the tag graph, or the MCP server.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for agentic access

3 MCP tools reach this
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
Search the catalog
curl "https://apis.io/api/v1/search?q=laurel-agentic-access&limit=10"
Everything under a tag
curl "https://apis.io/api/v1/tags/laurel-agentic-access"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.