Foxglove Technologies · Agentic Access

Foxglove Technologies Agentic Access

x-agentic-access generated

Foxglove Technologies exposes 73 API operations that an AI agent could call, of which 39 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: 34 read and 39 write.

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.

RoboticsObservabilityVisualizationData PlatformPhysical AIAutonomyFleet ManagementDeveloper ToolsMCAPROS
Operations: 73 Acting: 39 Human-in-the-loop: 0 Method: generated

By consequence

read 34 write 39

Source

Agentic Access

Raw ↑
generated: '2026-08-16'
method: generated
source: openapi/foxglove-technologies-openapi-original.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: 73
  by_action_class:
    connected: 34
    acting: 39
  by_consequence:
    read: 34
    write: 39
  human_in_the_loop_required: 0
operations:
- path: /devices
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - devices.list
    token:
      max-ttl: 3600
    audit: none
- path: /devices
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - devices.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /recordings
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - recordings.list
    token:
      max-ttl: 3600
    audit: none
- path: /recordings/{keyOrId}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - recordings.list
    token:
      max-ttl: 3600
    audit: none
- path: /recordings/{keyOrId}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - recordings.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /recordings/{keyOrId}/import
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - data.upload
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /sessions
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - sessions.list
    token:
      max-ttl: 3600
    audit: none
- path: /sessions
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sessions.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /sessions/{keyOrId}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - sessions.list
    token:
      max-ttl: 3600
    audit: none
- path: /sessions/{keyOrId}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sessions.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /sessions/{keyOrId}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sessions.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /actions/devices/{nameOrId}/update-property-time-interval
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - devices.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /data/imports
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - data.imports.list
    token:
      max-ttl: 3600
    audit: none
- path: /data/imports
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - data.imports.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /data/imports/{importId}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - data.imports.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /data/pending-imports
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - data.imports.pending.list
    token:
      max-ttl: 3600
    audit: none
- path: /recording-attachments
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - recordings.list
    token:
      max-ttl: 3600
    audit: none
- path: /recording-attachments/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - recordings.list
    token:
      max-ttl: 3600
    audit: none
- path: /recording-attachments/{id}/download
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - recordings.list
    token:
      max-ttl: 3600
    audit: none
- path: /data/coverage
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - data.coverage.list
    token:
      max-ttl: 3600
    audit: none
- path: /data/import-errors
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - data.imports.pending.list
    token:
      max-ttl: 3600
    audit: none
- path: /data/stream
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - data.stream
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /data/upload
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - data.upload
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /data/topics
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - data.topics.list
    token:
      max-ttl: 3600
    audit: none
- path: /devices/{nameOrId}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - devices.list
    token:
      max-ttl: 3600
    audit: none
- path: /devices/{nameOrId}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - devices.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /devices/{nameOrId}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - devices.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /devices/{nameOrId}/property-time-intervals
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - devices.list
    token:
      max-ttl: 3600
    audit: none
- path: /devices/{nameOrId}/property-time-intervals/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - devices.list
    token:
      max-ttl: 3600
    audit: none
- path: /extension-upload
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - extensions.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /extensions
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - extensions.list
    token:
      max-ttl: 3600
    audit: none
- path: /extensions/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - extensions.list
    token:
      max-ttl: 3600
    audit: none
- path: /extensions/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - extensions.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /events
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - events.list
    token:
      max-ttl: 3600
    audit: none
- path: /events
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - events.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /events/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - events.list
    token:
      max-ttl: 3600
    audit: none
- path: /events/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - events.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /events/{id}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - events.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /event-types
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - eventTypes.list
    token:
      max-ttl: 3600
    audit: none
- path: /event-types
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - eventTypes.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /event-types/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - eventTypes.list
    token:
      max-ttl: 3600
    audit: none
- path: /event-types/{id}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - eventTypes.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /event-types/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - eventTypes.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /lake-files
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - data.stream
    token:
      max-ttl: 3600
    audit: none
- path: /layouts
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - layouts.list
    token:
      max-ttl: 3600
    audit: none
- path: /layouts
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - layouts.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /layouts/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - layouts.list
    token:
      max-ttl: 3600
    audit: none
- path: /layouts/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - layouts.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /layouts/{id}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - layouts.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /layouts/{id}/restore
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - layouts.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /custom-properties
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - properties.list
    token:
      max-ttl: 3600
    audit: none
- path: /custom-properties
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - properties.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /custom-properties/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - properties.list
    token:
      max-ttl: 3600
    audit: none
- path: /custom-properties/{id}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - properties.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /custom-properties/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - properties.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /sites
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - sites.list
    token:
      max-ttl: 3600
    audit: none
- path: /sites
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sites.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /sites/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - sites.list
    token:
      max-ttl: 3600
    audit: none
- path: /sites/{id}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sites.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /sites/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sites.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /site-inbox-notification-tokens
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - sites.list
    token:
      max-ttl: 3600
    audit: none
- path: /site-inbox-notification-tokens
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sites.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /site-inbox-notification-tokens/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - sites.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /device-tokens
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - deviceTokens.list
    token:
      max-ttl: 3600
    audit: none
- path: /device-tokens
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - deviceTokens.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /device-tokens/{id}
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - deviceTokens.list
    token:
      max-ttl: 3600
    audit: none
- path: /device-tokens/{id}
  method: patch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - deviceTokens.update
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /device-tokens/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - deviceTokens.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /site-tokens
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - siteTokens.list
    token:
      max-ttl: 3600
    audit: none
- path: /site-tokens
  method: post
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - siteTokens.create
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /site-tokens/{id}
  method: delete
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - siteTokens.delete
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /site-bucket-notifications
  method: post
  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: /projects
  method: get
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - projects.list
    token:
      max-ttl: 3600
    audit: none