{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/screenpipe/main/json-schema/screenpipe-frame-context-response-schema.json", "title": "FrameContextResponse", "description": "Response type for frame context endpoint (accessibility-first, OCR fallback)", "x-generated": "2026-09-28", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/screenpipe-frames-api-openapi.yml#/components/schemas/FrameContextResponse", "type": "object", "properties": { "frame_id": { "type": "integer" }, "text": { "type": [ "string", "null" ] }, "nodes": { "type": "array", "items": { "$ref": "#/$defs/AccessibilityNode" } }, "urls": { "type": "array", "items": { "type": "string" } }, "text_source": { "type": "string" } }, "required": [ "frame_id", "text", "nodes", "urls", "text_source" ], "$defs": { "AccessibilityNode": { "description": "A node from the accessibility tree", "type": "object", "properties": { "role": { "type": "string" }, "text": { "type": "string" }, "depth": { "type": "integer" }, "bounds": { "$ref": "#/$defs/AccessibilityNodeBounds" }, "properties": { "type": [ "object", "null" ] } }, "required": [ "role", "text", "depth" ] }, "AccessibilityNodeBounds": { "description": "Bounding box for an accessibility node (0-1 normalized to monitor)", "type": "object", "properties": { "left": { "type": "number" }, "top": { "type": "number" }, "width": { "type": "number" }, "height": { "type": "number" } }, "required": [ "left", "top", "width", "height" ] } } }