generated: '2026-07-15' method: generated source: openapi/markforged-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: 30 by_action_class: connected: 21 acting: 9 by_consequence: read: 21 physical: 3 write: 5 safety-critical: 1 human_in_the_loop_required: 1 operations: - path: /devices method: get operationId: listDevices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /devices/{device_id} method: get operationId: getDevice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /devices/{device_id} method: post operationId: sendBuildToPrinter 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: /devices/{device_id}/queue method: get operationId: listDeviceQueue x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /devices/{device_id}/queue method: post operationId: addBuildToQueue 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: /devices/{device_id}/queue/{queued_job_id} method: get operationId: getQueuedJob x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /devices/{device_id}/queue/{queued_job_id} method: delete operationId: removeQueuedJob 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: /builds method: get operationId: listBuilds x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /builds/{build_id} method: get operationId: getBuild x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /builds/approved method: get operationId: listApprovedBuilds x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /builds/approved method: put operationId: updateApprovedBuilds 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: /builds/approved method: delete operationId: disableBuildApprovals 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: /backlog/{build_id} method: post operationId: sendBuildToBacklog 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: /job-requests/{build_id} method: post operationId: addJobRequest 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: /job-requests/{build_id} method: delete operationId: removeJobRequest 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: /print_jobs method: get operationId: listPrintJobs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /print_jobs/{print_job_id} method: get operationId: getPrintJob x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /print_jobs/{print_job_id}/scan_report method: get operationId: getPrintJobScanReport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /parts/{part_id} method: get operationId: getPart x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /parts/upload_stl method: post operationId: uploadStl 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: /parts/slice_status/{slice_job_id} method: get operationId: getSliceStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /parts/settings_presets method: get operationId: listSettingsPresets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /part_versions/{part_version_id} method: get operationId: getPartVersion x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /part_versions/{part_version_id}/download method: get operationId: getPartVersionDownload x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /printed_parts method: get operationId: listPrintedParts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /printed_parts/{printed_part_id} method: get operationId: getPrintedPart x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /printed_parts/{printed_part_id}/scan_report method: get operationId: getPrintedPartScanReport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /users method: get operationId: listUsers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /users/{user_id} method: get operationId: getUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /dashboard/custom_analytics_csv method: get operationId: getCustomAnalyticsCsv x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none