generated: '2026-07-15' method: generated source: openapi/opentrons-http-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: 29 by_action_class: connected: 17 acting: 12 by_consequence: read: 17 write: 9 safety-critical: 3 human_in_the_loop_required: 3 operations: - path: /health method: get operationId: getHealth x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /protocols method: post operationId: uploadProtocol 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: /protocols method: get operationId: getProtocols x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /protocols/{protocolId} method: get operationId: getProtocol x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /protocols/{protocolId} method: delete operationId: deleteProtocol 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: /protocols/{protocolId}/analyses method: post operationId: analyzeProtocol 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: /protocols/{protocolId}/analyses method: get operationId: getProtocolAnalyses x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /protocols/{protocolId}/analyses/{analysisId} method: get operationId: getProtocolAnalysis x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /runs method: post operationId: createRun 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: /runs method: get operationId: getRuns x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /runs/{runId} method: get operationId: getRun x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /runs/{runId} method: delete operationId: deleteRun 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: /runs/{runId} method: patch operationId: updateRun 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: /runs/{runId}/actions method: post operationId: createRunAction 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: /runs/{runId}/commands method: post operationId: createRunCommand 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: /runs/{runId}/commands method: get operationId: getRunCommands x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /runs/{runId}/commands/{commandId} method: get operationId: getRunCommand x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /commands method: post operationId: createCommand 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: /commands method: get operationId: getCommands x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /commands/{commandId} method: get operationId: getCommand x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /modules method: get operationId: getModules x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /instruments method: get operationId: getInstruments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deck_configuration method: get operationId: getDeckConfiguration x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /deck_configuration method: put operationId: setDeckConfiguration 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: /system/time method: get operationId: getSystemTime x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /system/time method: put operationId: setSystemTime 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: /robot/control/estopStatus method: get operationId: getEstopStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /robot/control/acknowledgeEstopDisengage method: put operationId: acknowledgeEstopDisengage 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: /robot/door/status method: get operationId: getDoorStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none