{
 "entries": [
  {
   "detail_url": "/v1/discover?id=v1.adb&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.adb.json",
   "title": "adb",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.adb.json",
   "prerequisites": ["Check v1.adb supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "How to help the owner turn on ADB for Bridgit, and what to do once it's on (Markdown)",
     "path": "/v1/adb/setup",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-adb-setup.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-adb-setup.json",
     "requires_power": null,
     "tool": "adb_setup"
    },
    {
     "summary": "ADB setup progress: developer options, wireless debugging, paired, grants",
     "path": "/v1/adb/status",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-adb-status.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-adb-status.json",
     "requires_power": null,
     "tool": "adb_status"
    },
    {
     "summary": "Run a shell command as Android's shell user (agents with Agent Super Powers)",
     "path": "/v1/adb/shell",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-adb-shell.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-adb-shell.json",
     "requires_power": "SUPER",
     "tool": "adb_shell"
    },
    {
     "summary": "Give Bridgit every useful permission and access through ADB (agents with Agent Super Powers)",
     "path": "/v1/adb/grant",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-adb-grant.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-adb-grant.json",
     "requires_power": "SUPER",
     "tool": "adb_grant"
    },
    {
     "summary": "System-wide Android logcat snapshot; requires Agent Super Powers, adb grant, private build and the owner's ADB switch",
     "path": "/v1/adb/logcat",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-adb-logcat.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-adb-logcat.json",
     "requires_power": "SUPER",
     "tool": "adb_logcat"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.adb",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.adb"]
  },
  {
   "detail_url": "/v1/discover?id=v1.app_device_access&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.app_device_access.json",
   "title": "app device access",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.app_device_access.json",
   "prerequisites": ["Check v1.app_device_access supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Read selectively assigned external devices for installed applets",
     "path": "/v1/applet-devices",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-applet-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-applet-devices.json",
     "requires_power": null,
     "tool": "applet_devices_get"
    },
    {
     "summary": "Replace one visible device's applet assignments; separate from enrollment",
     "path": "/v1/applet-devices",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-applet-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-applet-devices.json",
     "requires_power": null,
     "tool": "applet_devices_post"
    },
    {
     "summary": "Legacy alias of GET /v1/applet-devices",
     "path": "/v1/app-devices",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-app-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-app-devices.json",
     "requires_power": null,
     "tool": "app_devices_get"
    },
    {
     "summary": "Legacy alias of POST /v1/applet-devices",
     "path": "/v1/app-devices",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-app-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-app-devices.json",
     "requires_power": null,
     "tool": "app_devices_post"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.app_device_access",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.app_device_access"]
  },
  {
   "detail_url": "/v1/discover?id=v1.camera&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.camera.json",
   "title": "camera",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.camera.json",
   "prerequisites": ["Check v1.camera supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [
    "pet-monitor",
    "room-change-watcher"
   ],
   "operations": [
    {
     "summary": "Take a photo now",
     "path": "/v1/camera/snapshot",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-snapshot.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-snapshot.json",
     "requires_power": null,
     "tool": "camera_snapshot"
    },
    {
     "summary": "Open the camera ahead of a photo, so your next snapshot fires in about 0.3 s",
     "path": "/v1/camera/arm",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-arm.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-arm.json",
     "requires_power": null,
     "tool": "camera_arm"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.camera",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.camera"]
  },
  {
   "detail_url": "/v1/discover?id=v1.captures&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.captures.json",
   "title": "captures",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.captures.json",
   "prerequisites": ["Check v1.captures supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Where your captures go: your choice and what the owner allows (SEC-13)",
     "path": "/v1/captures/storage",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-captures-storage.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-captures-storage.json",
     "requires_power": null,
     "tool": "captures_storage_get"
    },
    {
     "summary": "Choose where your captures go, in any combination: memory, phone files, upload; and how long memory keeps them (within the owner's limits)",
     "path": "/v1/captures/storage",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-captures-storage.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-captures-storage.json",
     "requires_power": null,
     "tool": "captures_storage_set"
    },
    {
     "summary": "Your kept captures (photos, screenshots, recordings, clips), newest first: where each is and until when",
     "path": "/v1/captures",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-captures.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-captures.json",
     "requires_power": null,
     "tool": "captures_list"
    },
    {
     "summary": "One kept capture: from memory, or from its phone file after memory let it go",
     "path": "/v1/captures/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-captures-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-captures-id.json",
     "requires_power": null,
     "tool": "captures_get"
    },
    {
     "summary": "Forget a capture: drops the memory copy and deletes its phone file (uploads can't be recalled)",
     "path": "/v1/captures/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-captures-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-captures-id.json",
     "requires_power": null,
     "tool": "captures_delete"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.captures",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.captures"]
  },
  {
   "detail_url": "/v1/discover?id=v1.clipboard&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.clipboard.json",
   "title": "clipboard",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.clipboard.json",
   "prerequisites": ["Check v1.clipboard supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Queue a five-minute owner approval; never copies until owner taps Copy",
     "path": "/v1/clipboard",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-clipboard.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-clipboard.json",
     "requires_power": null,
     "tool": "clipboard_post"
    },
    {
     "summary": "Your clipboard request: pending, copied, denied or expired",
     "path": "/v1/clipboard/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-clipboard-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-clipboard-id.json",
     "requires_power": null,
     "tool": "clipboard_get"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.clipboard",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.clipboard"]
  },
  {
   "detail_url": "/v1/discover?id=v1.controls&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.controls.json",
   "title": "controls",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.controls.json",
   "prerequisites": ["Check v1.controls supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Set Do Not Disturb, with optional restoration",
     "path": "/v1/phone/dnd",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-phone-dnd.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-phone-dnd.json",
     "requires_power": null,
     "tool": "phone_dnd"
    },
    {
     "summary": "Change ringer or volume",
     "path": "/v1/phone/sound",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-phone-sound.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-phone-sound.json",
     "requires_power": null,
     "tool": "phone_sound"
    },
    {
     "summary": "Set brightness or automatic brightness",
     "path": "/v1/phone/brightness",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-phone-brightness.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-phone-brightness.json",
     "requires_power": null,
     "tool": "phone_brightness"
    },
    {
     "summary": "Turn battery saver on or off (needs a one-time USB grant, see /phone/battery controls) or set the screen timeout, with optional restoration",
     "path": "/v1/phone/power",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-phone-power.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-phone-power.json",
     "requires_power": null,
     "tool": "phone_power"
    },
    {
     "summary": "Restore pending timed phone changes, preserving subsequent manual changes",
     "path": "/v1/phone/undo",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-phone-undo.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-phone-undo.json",
     "requires_power": null,
     "tool": "phone_undo"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.controls",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.controls"]
  },
  {
   "detail_url": "/v1/discover?id=v1.downloads&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.downloads.json",
   "title": "downloads",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.downloads.json",
   "prerequisites": ["Check v1.downloads supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Your downloads transfers, retained 30 days on the phone",
     "path": "/v1/downloads",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-downloads.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-downloads.json",
     "requires_power": null,
     "tool": "downloads_list"
    },
    {
     "summary": "Read your selected transfer bytes",
     "path": "/v1/downloads/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-downloads-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-downloads-id.json",
     "requires_power": null,
     "tool": "downloads_get"
    },
    {
     "summary": "Delete your transfer",
     "path": "/v1/downloads/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-downloads-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-downloads-id.json",
     "requires_power": null,
     "tool": "downloads_delete"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.downloads",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.downloads"]
  },
  {
   "detail_url": "/v1/discover?id=v1.feedback&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.feedback.json",
   "title": "feedback",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.feedback.json",
   "prerequisites": ["Check v1.feedback supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Bug reports and feature requests: the ones you filed, or every report for agents in Bridgit Fixer Mode",
     "path": "/v1/feedback",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-feedback.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-feedback.json",
     "requires_power": null,
     "tool": "feedback_list"
    },
    {
     "summary": "Your own key for the Bridgit team's feedback backend: file reports, check their status and verify fixes there directly. Agent reporting always goes directly to the servers (FBK-15)",
     "path": "/v1/feedback/team-key",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-feedback-team-key.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-feedback-team-key.json",
     "requires_power": null,
     "tool": "feedback_team_key"
    },
    {
     "summary": "One report with its status history, team note and what you can send back; agents in Fixer Mode also get images, context and the attached log (and their first read marks a new report seen)",
     "path": "/v1/feedback/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-feedback-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-feedback-id.json",
     "requires_power": null,
     "tool": "feedback_get"
    },
    {
     "summary": "Move a report: in_progress, fixed, wont_fix or duplicate (agents in Bridgit Fixer Mode; FBK-11a)",
     "path": "/v1/feedback/{id}/status",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-feedback-id-status.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-feedback-id-status.json",
     "requires_power": "FIXER",
     "tool": "feedback_status"
    },
    {
     "summary": "Follow up on a report you filed: a note (\"still happens on 1.7.2\"), and once it's marked fixed, won't fix or duplicate, outcome works (closes it) or still_broken (reopens it)",
     "path": "/v1/feedback/{id}/followup",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-feedback-id-followup.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-feedback-id-followup.json",
     "requires_power": null,
     "tool": "feedback_followup"
    },
    {
     "summary": "Legacy phone-local reporting (any agent; images only in Bridgit Fixer Mode). Control agents should report directly to Bridgit servers: https://bridgit.cc/learn/bugs.md. Send every bug and every feature request, however small, even if you doubt we can or will do it: we'd rather triage too many than miss one",
     "path": "/v1/feedback",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-feedback.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-feedback.json",
     "requires_power": null,
     "tool": "feedback_file"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.feedback",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.feedback"]
  },
  {
   "detail_url": "/v1/discover?id=v1.files&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.files.json",
   "title": "files",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.files.json",
   "prerequisites": ["Check v1.files supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Your files transfers, retained 30 days on the phone",
     "path": "/v1/files",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-files.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-files.json",
     "requires_power": null,
     "tool": "files_list"
    },
    {
     "summary": "Read your selected transfer bytes",
     "path": "/v1/files/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-files-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-files-id.json",
     "requires_power": null,
     "tool": "files_get"
    },
    {
     "summary": "Delete your transfer",
     "path": "/v1/files/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-files-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-files-id.json",
     "requires_power": null,
     "tool": "files_delete"
    },
    {
     "summary": "Receive a file on the phone (25 MB maximum)",
     "path": "/v1/files",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-files.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-files.json",
     "requires_power": null,
     "tool": "files_receive"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.files",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.files"]
  },
  {
   "detail_url": "/v1/discover?id=v1.flashlight&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.flashlight.json",
   "title": "flashlight",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.flashlight.json",
   "prerequisites": ["Check v1.flashlight supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Whether the torch is on",
     "path": "/v1/flashlight",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-flashlight.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-flashlight.json",
     "requires_power": null,
     "tool": "flashlight_get"
    },
    {
     "summary": "Set torch with mandatory auto-off",
     "path": "/v1/flashlight",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-flashlight.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-flashlight.json",
     "requires_power": null,
     "tool": "flashlight_post"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.flashlight",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.flashlight"]
  },
  {
   "detail_url": "/v1/discover?id=v1.gallery&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.gallery.json",
   "title": "gallery",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.gallery.json",
   "prerequisites": ["Check v1.gallery supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": ["receipt-scanner"],
   "operations": [
    {
     "summary": "Newest gallery images (metadata only)",
     "path": "/v1/gallery/recent",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-gallery-recent.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-gallery-recent.json",
     "requires_power": null,
     "tool": "gallery_recent"
    },
    {
     "summary": "One gallery image, sized for you",
     "path": "/v1/gallery/photo/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-gallery-photo-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-gallery-photo-id.json",
     "requires_power": null,
     "tool": "gallery_photo"
    },
    {
     "summary": "The newest image of a type; with since and wait, waits for the next one",
     "path": "/v1/image/last",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-image-last.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-image-last.json",
     "requires_power": null,
     "tool": "image_last"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.gallery",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.gallery"]
  },
  {
   "detail_url": "/v1/discover?id=v1.gallery_video&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.gallery_video.json",
   "title": "gallery video",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.gallery_video.json",
   "prerequisites": ["Check v1.gallery_video supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Accessible videos and metadata",
     "path": "/v1/gallery/videos/recent",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-gallery-videos-recent.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-gallery-videos-recent.json",
     "requires_power": null,
     "tool": "gallery_videos_recent"
    },
    {
     "summary": "Accessible video raw, or a JPEG frame",
     "path": "/v1/gallery/video/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-gallery-video-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-gallery-video-id.json",
     "requires_power": null,
     "tool": "gallery_video"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.gallery_video",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.gallery_video"]
  },
  {
   "detail_url": "/v1/discover?id=v1.health_connect&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.health_connect.json",
   "title": "health connect",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.health_connect.json",
   "prerequisites": ["Check v1.health_connect supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Read-only steps, sleep or heart-rate source records (maximum 100)",
    "path": "/v1/health/records",
    "method": "GET",
    "documentation": "https://bridgit.cc/learn/operations/get-v1-health-records.json",
    "operation_url": "https://bridgit.cc/learn/operations/get-v1-health-records.json",
    "requires_power": null,
    "tool": "health_records"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.health_connect",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.health_connect"]
  },
  {
   "detail_url": "/v1/discover?id=v1.interactions&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.interactions.json",
   "title": "interactions",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.interactions.json",
   "prerequisites": ["Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [
    "pet-monitor",
    "receipt-scanner",
    "voice-notebook",
    "room-change-watcher",
    "daily-briefing-panel",
    "external-device-dashboard"
   ],
   "operations": [
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.interactions",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v1.interactions"]
  },
  {
   "detail_url": "/v1/discover?id=v1.judgment&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.judgment.json",
   "title": "judgment",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.judgment.json",
   "prerequisites": ["Check v1.judgment supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Ask Jev typed questions about text/JSON, or Clef about one retained sound/wake-word clip (audio is sent to the decision backend); run matching conditional actions",
    "path": "/v1/judgment",
    "method": "POST",
    "documentation": "https://bridgit.cc/learn/operations/post-v1-judgment.json",
    "operation_url": "https://bridgit.cc/learn/operations/post-v1-judgment.json",
    "requires_power": null,
    "tool": "judgment"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.judgment",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "decide",
   "capability_ids": ["v1.judgment"]
  },
  {
   "detail_url": "/v1/discover?id=v1.lan_camera&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.lan_camera.json",
   "title": "lan camera",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.lan_camera.json",
   "prerequisites": ["Check v1.lan_camera supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Owner-configured local cameras (no credentials)",
     "path": "/v1/lan-cameras",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-cameras.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-cameras.json",
     "requires_power": null,
     "tool": "lan_cameras"
    },
    {
     "summary": "Decode a fresh frame directly from a local camera",
     "path": "/v1/lan-cameras/snapshot",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-snapshot.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-snapshot.json",
     "requires_power": null,
     "tool": "lan_cameras_snapshot"
    },
    {
     "summary": "Small relative pan / tilt, only if advertised by the camera",
     "path": "/v1/lan-cameras/move",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-move.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-move.json",
     "requires_power": null,
     "tool": "lan_cameras_move"
    },
    {
     "summary": "Refresh enrolled camera capabilities without recording audio, playing a sound or moving motors",
     "path": "/v1/lan-cameras/probe",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-probe.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-probe.json",
     "requires_power": null,
     "tool": "lan_cameras_probe"
    },
    {
     "summary": "Reference framing defaults, hard limits and retention",
     "path": "/v1/lan-cameras/framing/config",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing-config.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing-config.json",
     "requires_power": null,
     "tool": "lan_cameras_framing_config_get"
    },
    {
     "summary": "Set bounded reference-framing defaults (Fixer Mode)",
     "path": "/v1/lan-cameras/framing/config",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-framing-config.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-framing-config.json",
     "requires_power": "FIXER",
     "tool": "lan_cameras_framing_config_post"
    },
    {
     "summary": "Find a reference-like target, center with bounded PTZ and hold aim; sends images to Jev",
     "path": "/v1/lan-cameras/framing",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-framing.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-framing.json",
     "requires_power": null,
     "tool": "lan_cameras_framing_post"
    },
    {
     "summary": "Your retained reference-framing operations",
     "path": "/v1/lan-cameras/framing",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing.json",
     "requires_power": null,
     "tool": "lan_cameras_framing_get"
    },
    {
     "summary": "Your operation's camera, confidence, progress, stop result and framing limits",
     "path": "/v1/lan-cameras/framing/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing-id.json",
     "requires_power": null,
     "tool": "lan_cameras_framing_status"
    },
    {
     "summary": "Cancel your framing operation and request camera Stop",
     "path": "/v1/lan-cameras/framing/{id}/cancel",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-framing-id-cancel.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-framing-id-cancel.json",
     "requires_power": null,
     "tool": "lan_cameras_framing_cancel"
    },
    {
     "summary": "Latest uncropped frame of your operation, subject to current camera/app access",
     "path": "/v1/lan-cameras/framing/{id}/photo",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing-id-photo.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-framing-id-photo.json",
     "requires_power": null,
     "tool": "lan_cameras_framing_photo"
    },
    {
     "summary": "Probe controls for this camera's active ONVIF video profile",
     "path": "/v1/lan-cameras/{id}/controls",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-id-controls.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-cameras-id-controls.json",
     "requires_power": null,
     "tool": "lan_cameras_controls"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.lan_camera",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.lan_camera"]
  },
  {
   "detail_url": "/v1/discover?id=v1.lan_camera_audio&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.lan_camera_audio.json",
   "title": "lan camera audio",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.lan_camera_audio.json",
   "prerequisites": ["Check v1.lan_camera_audio supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Record the enrolled camera microphone, never the Android microphone",
    "path": "/v1/lan-cameras/audio/record",
    "method": "POST",
    "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-audio-record.json",
    "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-audio-record.json",
    "requires_power": null,
    "tool": "lan_cameras_audio_record"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.lan_camera_audio",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v1.lan_camera_audio"]
  },
  {
   "detail_url": "/v1/discover?id=v1.lan_camera_speaker&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.lan_camera_speaker.json",
   "title": "lan camera speaker",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.lan_camera_speaker.json",
   "prerequisites": ["Check v1.lan_camera_speaker supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Send a bounded supplied audio clip to a supported enrolled camera speaker",
     "path": "/v1/lan-cameras/audio/play",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-audio-play.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-audio-play.json",
     "requires_power": null,
     "tool": "lan_cameras_audio_play"
    },
    {
     "summary": "Verify and privately store or clear this camera's separate Tapo cloud-password credential",
     "path": "/v1/lan-cameras/talk-account",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-talk-account.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-cameras-talk-account.json",
     "requires_power": null,
     "tool": "lan_cameras_talk_account"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.lan_camera_speaker",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v1.lan_camera_speaker"]
  },
  {
   "detail_url": "/v1/discover?id=v1.lan_control&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.lan_control.json",
   "title": "lan control",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.lan_control.json",
   "prerequisites": ["Check v1.lan_control supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": ["external-device-dashboard"],
   "operations": [
    {
     "summary": "This agent's enrolled devices and adapter/action schemas",
     "path": "/v1/lan/devices",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-devices.json",
     "requires_power": null,
     "tool": "lan_devices"
    },
    {
     "summary": "Run a fixed supported action on this agent's enrolled device",
     "path": "/v1/lan/devices/action",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-devices-action.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-devices-action.json",
     "requires_power": null,
     "tool": "lan_devices_action"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.lan_control",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.lan_control"]
  },
  {
   "detail_url": "/v1/discover?id=v1.lan_discovery&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.lan_discovery.json",
   "title": "lan discovery",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.lan_discovery.json",
   "prerequisites": ["Check v1.lan_discovery supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Remembered devices on the current LAN; no scan",
     "path": "/v1/lan/discovered",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-discovered.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-discovered.json",
     "requires_power": null,
     "tool": "lan_discovered"
    },
    {
     "summary": "Bundled discovery coverage, brand logos and control-agent instructions; no network scan",
     "path": "/v1/lan/catalog",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-catalog.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-catalog.json",
     "requires_power": null,
     "tool": "lan_catalog"
    },
    {
     "summary": "A passive bundled manufacturer logo; never a remote lookup",
     "path": "/v1/lan/brands/{id}/logo",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-brands-id-logo.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-brands-id-logo.json",
     "requires_power": null,
     "tool": "lan_brands_logo"
    },
    {
     "summary": "Bounded discovery on the Android host's direct local network",
     "path": "/v1/lan/discover",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-discover.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-discover.json",
     "requires_power": null,
     "tool": "lan_discover"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.lan_discovery",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.lan_discovery"]
  },
  {
   "detail_url": "/v1/discover?id=v1.lan_enrollment&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.lan_enrollment.json",
   "title": "lan enrollment",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.lan_enrollment.json",
   "prerequisites": ["Check v1.lan_enrollment supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Verify a supported device with authorized credentials and enroll it for this agent",
     "path": "/v1/lan/devices/enroll",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-devices-enroll.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-devices-enroll.json",
     "requires_power": null,
     "tool": "lan_devices_enroll"
    },
    {
     "summary": "Forget this agent's enrollment and stored credentials",
     "path": "/v1/lan/devices/remove",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-devices-remove.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-devices-remove.json",
     "requires_power": null,
     "tool": "lan_devices_remove"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.lan_enrollment",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.lan_enrollment"]
  },
  {
   "detail_url": "/v1/discover?id=v1.location&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.location.json",
   "title": "location",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.location.json",
   "prerequisites": ["Check v1.location supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Where the phone is now, with altitude, speed, heading and the compass",
    "path": "/v1/location",
    "method": "GET",
    "documentation": "https://bridgit.cc/learn/operations/get-v1-location.json",
    "operation_url": "https://bridgit.cc/learn/operations/get-v1-location.json",
    "requires_power": null,
    "tool": "location"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.location",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.location"]
  },
  {
   "detail_url": "/v1/discover?id=v1.log&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.log.json",
   "title": "log",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.log.json",
   "prerequisites": ["Check v1.log supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Read the log; with order=asc&since=<id>&wait=55 it follows new entries",
     "path": "/v1/log",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-log.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-log.json",
     "requires_power": null,
     "tool": "log_read"
    },
    {
     "summary": "One log entry",
     "path": "/v1/log/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-log-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-log-id.json",
     "requires_power": null,
     "tool": "log_entry"
    },
    {
     "summary": "Counts, errors and p50/p95 time per agent and endpoint",
     "path": "/v1/log/stats",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-log-stats.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-log-stats.json",
     "requires_power": null,
     "tool": "log_stats"
    },
    {
     "summary": "Every matching entry as JSONL or CSV; direct HTTP streams without a total size cap; MCP/relay envelopes capped at 8 MiB",
     "path": "/v1/log/export",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-log-export.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-log-export.json",
     "requires_power": null,
     "tool": "log_export"
    },
    {
     "summary": "Snapshot of Android logcat visible to Bridgit's app UID; requires Fixer Mode",
     "path": "/v1/log/device",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-log-device.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-log-device.json",
     "requires_power": "FIXER",
     "tool": "log_device"
    },
    {
     "summary": "Android 11+ Bridgit process exits, crashes and ANRs; Fixer Mode; Android-managed history",
     "path": "/v1/log/exits",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-log-exits.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-log-exits.json",
     "requires_power": "FIXER",
     "tool": "log_exits"
    },
    {
     "summary": "Write a note to the agent channel",
     "path": "/v1/log",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-log.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-log.json",
     "requires_power": null,
     "tool": "log_note"
    },
    {
     "summary": "Deprecated alias of /v1/log?channel=audit (removed in v3)",
     "path": "/v1/audit",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-audit.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-audit.json",
     "requires_power": null,
     "tool": "audit"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.log",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.log"]
  },
  {
   "detail_url": "/v1/discover?id=v1.mic&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.mic.json",
   "title": "mic",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.mic.json",
   "prerequisites": ["Check v1.mic supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": ["voice-notebook"],
   "operations": [{
    "summary": "Record an audio clip",
    "path": "/v1/mic/record",
    "method": "POST",
    "documentation": "https://bridgit.cc/learn/operations/post-v1-mic-record.json",
    "operation_url": "https://bridgit.cc/learn/operations/post-v1-mic-record.json",
    "requires_power": null,
    "tool": "mic_record"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.mic",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.mic"]
  },
  {
   "detail_url": "/v1/discover?id=v1.notifications&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.notifications.json",
   "title": "notifications",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.notifications.json",
   "prerequisites": ["Check v1.notifications supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Up to 100 active notification texts since service connected; RAM only",
    "path": "/v1/notifications",
    "method": "GET",
    "documentation": "https://bridgit.cc/learn/operations/get-v1-notifications.json",
    "operation_url": "https://bridgit.cc/learn/operations/get-v1-notifications.json",
    "requires_power": null,
    "tool": "notifications"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.notifications",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v1.notifications"]
  },
  {
   "detail_url": "/v1/discover?id=v1.ocr&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.ocr.json",
   "title": "ocr",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.ocr.json",
   "prerequisites": ["Check v1.ocr supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": ["receipt-scanner"],
   "operations": [{
    "summary": "Recognize Latin-script text locally; no image upload",
    "path": "/v1/ocr",
    "method": "POST",
    "documentation": "https://bridgit.cc/learn/operations/post-v1-ocr.json",
    "operation_url": "https://bridgit.cc/learn/operations/post-v1-ocr.json",
    "requires_power": null,
    "tool": "ocr"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.ocr",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "process",
   "capability_ids": ["v1.ocr"]
  },
  {
   "detail_url": "/v1/discover?id=v1.outbound&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.outbound.json",
   "title": "outbound",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.outbound.json",
   "prerequisites": ["Check v1.outbound supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Every call this phone made to a server off the device: destination, purpose, which agent caused it, the data categories sent, bytes, status, time, and a redacted preview of what was sent and received",
     "path": "/v1/outbound",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-outbound.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-outbound.json",
     "requires_power": null,
     "tool": "outbound_list"
    },
    {
     "summary": "Analysis of what left the phone, in one call: a plain-language headline, totals, trends by hour or day, the biggest destinations, agents and calls, destinations first seen in the window, failures, and for each destination the data categories, purposes and agents it received",
     "path": "/v1/outbound/summary",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-outbound-summary.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-outbound-summary.json",
     "requires_power": null,
     "tool": "outbound_summary"
    },
    {
     "summary": "One outbound entry with its previews",
     "path": "/v1/outbound/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-outbound-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-outbound-id.json",
     "requires_power": null,
     "tool": "outbound_entry"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.outbound",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.outbound"]
  },
  {
   "detail_url": "/v1/discover?id=v1.owner_features&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.owner_features.json",
   "title": "owner features",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.owner_features.json",
   "prerequisites": ["Check v1.owner_features supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Owner feature coverage, approval actions and security boundaries",
     "path": "/v1/owner/features",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-owner-features.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-owner-features.json",
     "requires_power": null,
     "tool": "owner_features"
    },
    {
     "summary": "Native and agent-built applets visible to this agent",
     "path": "/v1/applets",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-applets.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-applets.json",
     "requires_power": null,
     "tool": "applets"
    },
    {
     "summary": "Pet monitor status, models, camera, today's totals and recent readings",
     "path": "/v1/applets/dog-monitor",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-applets-dog-monitor.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-applets-dog-monitor.json",
     "requires_power": null,
     "tool": "applets_dog_monitor"
    },
    {
     "summary": "Pet monitor readings and daily summaries, without taking new photos",
     "path": "/v1/applets/dog-monitor/history",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-applets-dog-monitor-history.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-applets-dog-monitor-history.json",
     "requires_power": null,
     "tool": "applets_dog_monitor_history"
    },
    {
     "summary": "Pet monitor's existing latest frame; never opens the camera",
     "path": "/v1/applets/dog-monitor/frame",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-applets-dog-monitor-frame.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-applets-dog-monitor-frame.json",
     "requires_power": null,
     "tool": "applets_dog_monitor_frame"
    },
    {
     "summary": "Required downloads and bundled/system dependencies",
     "path": "/v1/resources",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-resources.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-resources.json",
     "requires_power": null,
     "tool": "resources"
    },
    {
     "summary": "Your resource download/check/delete jobs",
     "path": "/v1/resource-jobs",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-resource-jobs.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-resource-jobs.json",
     "requires_power": null,
     "tool": "resource_jobs_list"
    },
    {
     "summary": "One of your resource jobs",
     "path": "/v1/resource-jobs/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-resource-jobs-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-resource-jobs-id.json",
     "requires_power": null,
     "tool": "resource_jobs_get"
    },
    {
     "summary": "Cancel your resource job; SDK-managed transfers may continue after the waiter is cancelled",
     "path": "/v1/resource-jobs/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-resource-jobs-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-resource-jobs-id.json",
     "requires_power": null,
     "tool": "resource_jobs_cancel"
    },
    {
     "summary": "Remote viewing and photo-sharing policy status",
     "path": "/v1/remote-view",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-remote-view.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-remote-view.json",
     "requires_power": null,
     "tool": "remote_view"
    },
    {
     "summary": "Your callback configuration without its secret",
     "path": "/v1/callback",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-callback.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-callback.json",
     "requires_power": null,
     "tool": "callback"
    },
    {
     "summary": "Your alert/callback delivery status and permitted destination ids",
     "path": "/v1/delivery",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-delivery.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-delivery.json",
     "requires_power": null,
     "tool": "delivery"
    },
    {
     "summary": "Supplemental owner settings, model-key presence and consent requirements",
     "path": "/v1/owner/settings",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-owner-settings.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-owner-settings.json",
     "requires_power": null,
     "tool": "owner_settings"
    },
    {
     "summary": "Propose an exact owner change; it executes only after this agent has the separate owner.configuration grant AND the owner approves it on the phone",
     "path": "/v1/owner/configure",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-owner-configure.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-owner-configure.json",
     "requires_power": null,
     "tool": "owner_configure"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.owner_features",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.owner_features"]
  },
  {
   "detail_url": "/v1/discover?id=v1.phone&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.phone.json",
   "title": "phone",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.phone.json",
   "prerequisites": ["Check v1.phone supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Battery, network, screen and sound status, with as_of",
     "path": "/v1/phone/status",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-phone-status.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-phone-status.json",
     "requires_power": null,
     "tool": "phone_status"
    },
    {
     "summary": "Full battery report: percent, status, plug type, health, temperature, voltage, cycles, current, time to full, estimated_runtime (time to empty at recent usage while unplugged; status, remaining/lower/upper seconds, observation window and drain rate; learning until 10 minutes and 2% drain), battery saver, which power settings agents may change, and the battery.* events",
     "path": "/v1/phone/battery",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-phone-battery.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-phone-battery.json",
     "requires_power": null,
     "tool": "phone_battery"
    },
    {
     "summary": "Screen and lock context; likely=in_use or unknown, with the rule",
     "path": "/v1/phone/context",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-phone-context.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-phone-context.json",
     "requires_power": null,
     "tool": "phone_context"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.phone",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.phone"]
  },
  {
   "detail_url": "/v1/discover?id=v1.ring&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.ring.json",
   "title": "ring",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.ring.json",
   "prerequisites": ["Check v1.ring supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Ring and vibrate within Android sound restrictions",
     "path": "/v1/phone/ring",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-phone-ring.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-phone-ring.json",
     "requires_power": null,
     "tool": "phone_ring_post"
    },
    {
     "summary": "Stop ringing and vibration",
     "path": "/v1/phone/ring",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-phone-ring.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-phone-ring.json",
     "requires_power": null,
     "tool": "phone_ring_delete"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.ring",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v1.ring"]
  },
  {
   "detail_url": "/v1/discover?id=v1.schedule&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.schedule.json",
   "title": "schedule",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.schedule.json",
   "prerequisites": ["Check v1.schedule supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": ["daily-briefing-panel"],
   "operations": [
    {
     "summary": "Your exact approved and pending action manifests for inspection or resubmission",
     "path": "/v1/schedule/manifest",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule-manifest.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule-manifest.json",
     "requires_power": null,
     "tool": "schedule_manifest"
    },
    {
     "summary": "Hand the phone an action manifest once: any action it can take (any /v1 call you're allowed, plus download, play, show, send and delete of saved files), each with its own schedule. The owner approves each new manifest once on the phone; then it runs by itself and results arrive as schedule.* events",
     "path": "/v1/schedule",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-schedule.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-schedule.json",
     "requires_power": null,
     "tool": "schedule_set"
    },
    {
     "summary": "Your manifest: what's approved, what's waiting for the owner, each action's next run and last result, and your saved files",
     "path": "/v1/schedule",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule.json",
     "requires_power": null,
     "tool": "schedule_get"
    },
    {
     "summary": "Run one approved action now, outside its timetable (its 'after' chain doesn't follow)",
     "path": "/v1/schedule/run/{id}",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-schedule-run-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-schedule-run-id.json",
     "requires_power": null,
     "tool": "schedule_run"
    },
    {
     "summary": "Pause or resume your approved actions",
     "path": "/v1/schedule/pause",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-schedule-pause.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-schedule-pause.json",
     "requires_power": null,
     "tool": "schedule_pause"
    },
    {
     "summary": "Remove your manifest (approved and waiting) and, unless keep_assets=true, your saved files",
     "path": "/v1/schedule",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-schedule.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-schedule.json",
     "requires_power": null,
     "tool": "schedule_remove"
    },
    {
     "summary": "Files your actions saved (downloads and kept results), up to 100 / 100 MB, kept 30 days",
     "path": "/v1/schedule/assets",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule-assets.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule-assets.json",
     "requires_power": null,
     "tool": "schedule_assets_list"
    },
    {
     "summary": "One saved file's bytes, e.g. a photo a scheduled action took",
     "path": "/v1/schedule/assets/{name}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule-assets-name.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule-assets-name.json",
     "requires_power": null,
     "tool": "schedule_asset_get"
    },
    {
     "summary": "Delete one saved file",
     "path": "/v1/schedule/assets/{name}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-schedule-assets-name.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-schedule-assets-name.json",
     "requires_power": null,
     "tool": "schedule_asset_delete"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.schedule",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": ["v1.schedule"]
  },
  {
   "detail_url": "/v1/discover?id=v1.screen&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.screen.json",
   "title": "screen",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.screen.json",
   "prerequisites": ["Check v1.screen supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "What's on the owner's screen right now (D17, no prompt once they've turned it on)",
    "path": "/v1/screen/capture",
    "method": "POST",
    "documentation": "https://bridgit.cc/learn/operations/post-v1-screen-capture.json",
    "operation_url": "https://bridgit.cc/learn/operations/post-v1-screen-capture.json",
    "requires_power": null,
    "tool": "screen_capture"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.screen",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.screen"]
  },
  {
   "detail_url": "/v1/discover?id=v1.screen_share&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.screen_share.json",
   "title": "screen share",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.screen_share.json",
   "prerequisites": ["Check v1.screen_share supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Request owner-approved MediaProjection screen access",
     "path": "/v1/screen/grant",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-screen-grant.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-screen-grant.json",
     "requires_power": null,
     "tool": "screen_grant_post"
    },
    {
     "summary": "Your screen requests and active grant",
     "path": "/v1/screen/grants",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-screen-grants.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-screen-grants.json",
     "requires_power": null,
     "tool": "screen_grants"
    },
    {
     "summary": "Capture a JPEG using your active owner-approved grant",
     "path": "/v1/screen/share/capture",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-screen-share-capture.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-screen-share-capture.json",
     "requires_power": null,
     "tool": "screen_share_capture"
    },
    {
     "summary": "End your screen-sharing grant",
     "path": "/v1/screen/grant",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-screen-grant.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-screen-grant.json",
     "requires_power": null,
     "tool": "screen_grant_delete"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.screen_share",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.screen_share"]
  },
  {
   "detail_url": "/v1/discover?id=v1.sensors&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.sensors.json",
   "title": "sensors",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.sensors.json",
   "prerequisites": ["Check v1.sensors supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Supported fresh sensor values or explicit unavailable status",
    "path": "/v1/sensors",
    "method": "GET",
    "documentation": "https://bridgit.cc/learn/operations/get-v1-sensors.json",
    "operation_url": "https://bridgit.cc/learn/operations/get-v1-sensors.json",
    "requires_power": null,
    "tool": "sensors"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.sensors",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.sensors"]
  },
  {
   "detail_url": "/v1/discover?id=v1.settings&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.settings.json",
   "title": "settings",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.settings.json",
   "prerequisites": ["Check v1.settings supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Every Bridgit setting and the phone settings it manages: value, type, range, and whether you may change it (SET-01)",
     "path": "/v1/settings",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-settings.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-settings.json",
     "requires_power": null,
     "tool": "settings_get"
    },
    {
     "summary": "Change settings (agents with Agent Super Powers, once the owner turns on App settings); every change is checked first, so one bad change changes nothing (SET-02)",
     "path": "/v1/settings",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-settings.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-settings.json",
     "requires_power": null,
     "tool": "settings_post"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.settings",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.settings"]
  },
  {
   "detail_url": "/v1/discover?id=v1.shares&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.shares.json",
   "title": "shares",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.shares.json",
   "prerequisites": ["Check v1.shares supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Your shares transfers, retained 30 days on the phone",
     "path": "/v1/shares",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-shares.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-shares.json",
     "requires_power": null,
     "tool": "shares_list"
    },
    {
     "summary": "Read your selected transfer bytes",
     "path": "/v1/shares/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-shares-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-shares-id.json",
     "requires_power": null,
     "tool": "shares_get"
    },
    {
     "summary": "Delete your transfer",
     "path": "/v1/shares/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-shares-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-shares-id.json",
     "requires_power": null,
     "tool": "shares_delete"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.shares",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v1.shares"]
  },
  {
   "detail_url": "/v1/discover?id=v1.sounds&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.sounds.json",
   "title": "sounds",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.sounds.json",
   "prerequisites": ["Check v1.sounds supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Listen for any sounds: whether the phone tells you when the room gets loud (8.23)",
     "path": "/v1/sounds",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-sounds.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-sounds.json",
     "requires_power": null,
     "tool": "sounds"
    },
    {
     "summary": "The audio of a sound (up to 10 s, from just before it started), when the owner lets sounds send audio (kept in memory 10 minutes unless you chose longer with POST /v1/captures/storage; also GET /v1/captures/{id})",
     "path": "/v1/sounds/clip/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-sounds-clip-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-sounds-clip-id.json",
     "requires_power": null,
     "tool": "sounds_clip"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.sounds",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.sounds"]
  },
  {
   "detail_url": "/v1/discover?id=v1.speaker&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.speaker.json",
   "title": "speaker",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.speaker.json",
   "prerequisites": ["Check v1.speaker supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Play audio on the phone's speaker: send audio/* bytes as the body, or {\"url\"} (public https)",
     "path": "/v1/speaker/play",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-speaker-play.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-speaker-play.json",
     "requires_power": null,
     "tool": "speaker_play"
    },
    {
     "summary": "Read text aloud on the phone (its own text-to-speech)",
     "path": "/v1/speaker/say",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-speaker-say.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-speaker-say.json",
     "requires_power": null,
     "tool": "speaker_say"
    },
    {
     "summary": "What's playing, and your queued sounds",
     "path": "/v1/speaker",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-speaker.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-speaker.json",
     "requires_power": null,
     "tool": "speaker_status"
    },
    {
     "summary": "Stop your audio and clear your queue",
     "path": "/v1/speaker",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-speaker.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-speaker.json",
     "requires_power": null,
     "tool": "speaker_stop"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.speaker",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v1.speaker"]
  },
  {
   "detail_url": "/v1/discover?id=v1.status&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.status.json",
   "title": "status",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.status.json",
   "prerequisites": ["Check v1.status supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Your display name and artwork",
     "path": "/v1/agent/profile",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-agent-profile.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-agent-profile.json",
     "requires_power": null,
     "tool": "agent_profile_get"
    },
    {
     "summary": "Update your self-supplied name and artwork",
     "path": "/v1/agent/profile",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-agent-profile.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-agent-profile.json",
     "requires_power": null,
     "tool": "agent_profile_post"
    },
    {
     "summary": "Is Bridgit up, and which agent you are",
     "path": "/v1/health",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-health.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-health.json",
     "requires_power": null,
     "tool": "health"
    },
    {
     "summary": "Host and owner-configured external devices, supported actions and access status",
     "path": "/v1/devices",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-devices.json",
     "requires_power": null,
     "tool": "devices"
    },
    {
     "summary": "What's switched on and ready, and why not",
     "path": "/v1/capabilities",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-capabilities.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-capabilities.json",
     "requires_power": null,
     "tool": "capabilities"
    },
    {
     "summary": "Find capabilities and recipes for an intent without executing them",
     "path": "/v1/discover",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-discover.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-discover.json",
     "requires_power": null,
     "tool": "discover"
    },
    {
     "summary": "Report an explicit catalog selection or bounded self-reported feedback; never verified evidence",
     "path": "/v1/discover/report",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-discover-report.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-discover-report.json",
     "requires_power": null,
     "tool": "discover_report"
    },
    {
     "summary": "This guide, generated live (Markdown)",
     "path": "/v1/guide",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-guide.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-guide.json",
     "requires_power": null,
     "tool": "guide"
    },
    {
     "summary": "The demo to offer right after pairing: a five-minute first-run tour run from cards on the phone, then a menu of more demos picked by a few questions (Markdown)",
     "path": "/v1/demo",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-demo.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-demo.json",
     "requires_power": null,
     "tool": "demo"
    },
    {
     "summary": "Complete interaction samples for every kind (notice, question, html, text): the POST /v1/interactions body, the reply and the answer it produces (JSON). For cards that decide or watch (Jev, Clef, the free camera change check), read https://bridgit.cc/learn/decisions.md",
     "path": "/v1/samples",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-samples.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-samples.json",
     "requires_power": null,
     "tool": "samples"
    },
    {
     "summary": "OpenAPI 3.1 description of every endpoint",
     "path": "/v1/openapi.json",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-openapi-json.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-openapi-json.json",
     "requires_power": null,
     "tool": null
    },
    {
     "summary": "What's new in the API since a revision you know (API-14)",
     "path": "/v1/changes",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-changes.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-changes.json",
     "requires_power": null,
     "tool": "changes"
    },
    {
     "summary": "The `bridgit` command-line helper (Python, no secrets inside)",
     "path": "/v1/tools/bridgit",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-tools-bridgit.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-tools-bridgit.json",
     "requires_power": null,
     "tool": null
    },
    {
     "summary": "Deprecated: the old address of GET /v1/tools/bridgit, same helper",
     "path": "/v1/tools/bridget",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-tools-bridget.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-tools-bridget.json",
     "requires_power": null,
     "tool": null
    },
    {
     "summary": "Fetch your key with a 6-digit code shown on the phone (alternative to the setup prompt)",
     "path": "/v1/pair",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-pair.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-pair.json",
     "requires_power": null,
     "tool": null
    },
    {
     "summary": "Model Context Protocol (Streamable HTTP, JSON replies): every endpoint you can use is an MCP tool",
     "path": "/v1/mcp",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-mcp.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-mcp.json",
     "requires_power": null,
     "tool": null
    },
    {
     "summary": "Tell the owner which model you are and what runs you; shown on your agent card (AGT-16)",
     "path": "/v1/me",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-me.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-me.json",
     "requires_power": null,
     "tool": "me"
    },
    {
     "summary": "Whether the owner has verified their email. Bridgit works for 24 hours from the first agent call; after that, until they do, only the status endpoints (such as health, me, owner email, capabilities, guide, demo, samples, openapi, changes) and feedback keep working, plus the control tools capabilities, events, operation.get and feedback.create; every other call answers email_required",
     "path": "/v1/owner/email",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-owner-email.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-owner-email.json",
     "requires_power": null,
     "tool": "owner_email_get"
    },
    {
     "summary": "Give the owner's email address: bridgit.cc emails them a link, and tapping it verifies the address (the same address gets email alerts). Works during and after the 24 hours; not once an address is verified (the owner changes it on the phone)",
     "path": "/v1/owner/email",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-owner-email.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-owner-email.json",
     "requires_power": null,
     "tool": "owner_email_post"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.status",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.status"]
  },
  {
   "detail_url": "/v1/discover?id=v1.tour&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.tour.json",
   "title": "tour",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.tour.json",
   "prerequisites": ["Check v1.tour supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Your running City tour, if the owner started one with you (D30)",
     "path": "/v1/tour",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-tour.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-tour.json",
     "requires_power": null,
     "tool": "tour_get"
    },
    {
     "summary": "A photo the owner took with Take photo on your tour (n from tour.photo), sized for you",
     "path": "/v1/tour/photo/{n}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-tour-photo-n.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-tour-photo-n.json",
     "requires_power": null,
     "tool": "tour_photo"
    },
    {
     "summary": "End your City tour",
     "path": "/v1/tour",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-tour.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-tour.json",
     "requires_power": null,
     "tool": "tour_end"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.tour",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v1.tour"]
  },
  {
   "detail_url": "/v1/discover?id=v1.usage&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.usage.json",
   "title": "usage",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.usage.json",
   "prerequisites": ["Check v1.usage supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "App foreground time from Android usage buckets (maximum seven days)",
    "path": "/v1/usage",
    "method": "GET",
    "documentation": "https://bridgit.cc/learn/operations/get-v1-usage.json",
    "operation_url": "https://bridgit.cc/learn/operations/get-v1-usage.json",
    "requires_power": null,
    "tool": "usage"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.usage",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v1.usage"]
  },
  {
   "detail_url": "/v1/discover?id=v1.video&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.video.json",
   "title": "video",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.video.json",
   "prerequisites": ["Check v1.video supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "summary": "Record an MP4, returned raw (HTTP: 40 MB maximum; MCP: 6 MB, may stop early)",
    "path": "/v1/camera/video",
    "method": "POST",
    "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-video.json",
    "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-video.json",
    "requires_power": null,
    "tool": "camera_video"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.video",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.video"]
  },
  {
   "detail_url": "/v1/discover?id=v1.wakewords&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.wakewords.json",
   "title": "wakewords",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.wakewords.json",
   "prerequisites": ["Check v1.wakewords supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "summary": "Wake words: whether the phone is listening, and the wake words the owner gave you (CAP-47)",
     "path": "/v1/listen",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-listen.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-listen.json",
     "requires_power": null,
     "tool": "listen"
    },
    {
     "summary": "The audio after a wake word, when the owner set that wake word to send it (kept in memory 10 minutes unless you chose longer with POST /v1/captures/storage; also GET /v1/captures/{id})",
     "path": "/v1/listen/clip/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-listen-clip-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-listen-clip-id.json",
     "requires_power": null,
     "tool": "listen_clip"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.wakewords",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.wakewords"]
  },
  {
   "detail_url": "/v1/discover?id=v1.watches&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.watches.json",
   "title": "watches",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.watches.json",
   "prerequisites": ["Check v1.watches supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [
    "pet-monitor",
    "room-change-watcher"
   ],
   "operations": [
    {
     "summary": "Call me back when ...: the phone reads the data you pick (location, motion, a camera photo, ...) on an interval, asks Clef or Jev (paid) your question about the last few readings, and calls you back when the answer matches. With a photo, a free change check on the phone skips the paid call while the picture stays the same; model none is local only. Designing one (which model, the change check, a worked door-camera example, cost): https://bridgit.cc/learn/decisions.md",
     "path": "/v1/watches",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-watches.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-watches.json",
     "requires_power": null,
     "tool": "watches_start"
    },
    {
     "summary": "Your running watches, with their last check",
     "path": "/v1/watches",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches.json",
     "requires_power": null,
     "tool": "watches_list"
    },
    {
     "summary": "One running watch: its spec, the last 10 checks with Jev's answers, and the last state sent",
     "path": "/v1/watches/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches-id.json",
     "requires_power": null,
     "tool": "watches_get"
    },
    {
     "summary": "Stop a watch (you get a watch.ended event with reason deleted)",
     "path": "/v1/watches/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-watches-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-watches-id.json",
     "requires_power": null,
     "tool": "watches_stop"
    },
    {
     "summary": "A tally watch's counts: today, the last 7 days, what's going on now, typical gaps, rules, and the episodes",
     "path": "/v1/watches/{id}/tally",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches-id-tally.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches-id-tally.json",
     "requires_power": null,
     "tool": "watches_tally"
    },
    {
     "summary": "Pause or resume your watch without losing its tally; expiry is unchanged",
     "path": "/v1/watches/{id}/pause",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-watches-id-pause.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-watches-id-pause.json",
     "requires_power": null,
     "tool": "watches_pause"
    }
   ],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.watches",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "decide",
   "capability_ids": ["v1.watches"]
  },
  {
   "detail_url": "/v1/discover?id=v1.weather&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v1.weather.json",
   "title": "weather",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v1.weather.json",
   "prerequisites": ["Check v1.weather supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": ["daily-briefing-panel"],
   "operations": [{
    "summary": "Weather where the phone is (or at a lat/lon you give): conditions now, the next hours and the next 24 hours, from MET Norway. Schedule it like any call: {\"do\":{\"call\":\"GET /v1/weather\"}}",
    "path": "/v1/weather",
    "method": "GET",
    "documentation": "https://bridgit.cc/learn/operations/get-v1-weather.json",
    "operation_url": "https://bridgit.cc/learn/operations/get-v1-weather.json",
    "requires_power": null,
    "tool": "weather"
   }],
   "boundaries": "Documented public API; owner switches, grants and runtime checks still apply.",
   "examples_url": null,
   "id": "v1.weather",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v1.weather"]
  },
  {
   "detail_url": "/v1/discover?id=v2.camera.snapshot&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.camera.snapshot.json",
   "title": "Camera snapshots",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.camera.snapshot.json",
   "prerequisites": ["Check v2.camera.snapshot supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_device_action",
    "documentation": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "required_arguments": [
     "idempotency_key",
     "type"
    ],
    "tool": "device.action"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.camera.snapshot",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v2.camera.snapshot"]
  },
  {
   "detail_url": "/v1/discover?id=v2.microphone.clip&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.microphone.clip.json",
   "title": "Microphone clips",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.microphone.clip.json",
   "prerequisites": ["Check v2.microphone.clip supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_device_action",
    "documentation": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "required_arguments": [
     "idempotency_key",
     "type"
    ],
    "tool": "device.action"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.microphone.clip",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v2.microphone.clip"]
  },
  {
   "detail_url": "/v1/discover?id=v2.gallery.read&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.gallery.read.json",
   "title": "Gallery images",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.gallery.read.json",
   "prerequisites": ["Check v2.gallery.read supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.gallery.read",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v2.gallery.read"]
  },
  {
   "detail_url": "/v1/discover?id=v2.interactions&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.interactions.json",
   "title": "Questions and notices",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.interactions.json",
   "prerequisites": ["Check v2.interactions supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_feedback_create",
     "documentation": "https://bridgit.cc/learn/operations/v2-feedback.create.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-feedback.create.json",
     "required_arguments": [
      "idempotency_key",
      "text"
     ],
     "tool": "feedback.create"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_interaction_cancel",
     "documentation": "https://bridgit.cc/learn/operations/v2-interaction.cancel.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-interaction.cancel.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "interaction.cancel"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_interaction_create",
     "documentation": "https://bridgit.cc/learn/operations/v2-interaction.create.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-interaction.create.json",
     "required_arguments": [
      "idempotency_key",
      "title"
     ],
     "tool": "interaction.create"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_interaction_get",
     "documentation": "https://bridgit.cc/learn/operations/v2-interaction.get.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-interaction.get.json",
     "required_arguments": ["id"],
     "tool": "interaction.get"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_interaction_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-interaction.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-interaction.list.json",
     "required_arguments": [],
     "tool": "interaction.list"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_note_create",
     "documentation": "https://bridgit.cc/learn/operations/v2-note.create.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-note.create.json",
     "required_arguments": [
      "idempotency_key",
      "text"
     ],
     "tool": "note.create"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.interactions",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v2.interactions"]
  },
  {
   "detail_url": "/v1/discover?id=v2.events.read&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.events.read.json",
   "title": "Agent events",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.events.read.json",
   "prerequisites": ["Check v2.events.read supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_events",
    "documentation": "https://bridgit.cc/learn/operations/v2-events.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-events.json",
    "required_arguments": [],
    "tool": "events"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.events.read",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v2.events.read"]
  },
  {
   "detail_url": "/v1/discover?id=v2.files&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.files.json",
   "title": "Files and shares",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.files.json",
   "prerequisites": ["Check v2.files supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_file_get",
     "documentation": "https://bridgit.cc/learn/operations/v2-file.get.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-file.get.json",
     "required_arguments": ["id"],
     "tool": "file.get"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_file_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-file.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-file.list.json",
     "required_arguments": [],
     "tool": "file.list"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_file_put",
     "documentation": "https://bridgit.cc/learn/operations/v2-file.put.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-file.put.json",
     "required_arguments": [
      "idempotency_key",
      "name",
      "mime",
      "data_base64"
     ],
     "tool": "file.put"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.files",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v2.files"]
  },
  {
   "detail_url": "/v1/discover?id=v2.audio.speak&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.audio.speak.json",
   "title": "Speech and audio",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.audio.speak.json",
   "prerequisites": ["Check v2.audio.speak supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_device_action",
    "documentation": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "required_arguments": [
     "idempotency_key",
     "type"
    ],
    "tool": "device.action"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.audio.speak",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v2.audio.speak"]
  },
  {
   "detail_url": "/v1/discover?id=v2.screen.observe&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.screen.observe.json",
   "title": "Screen observation",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.screen.observe.json",
   "prerequisites": ["Check v2.screen.observe supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_screen_observe",
    "documentation": "https://bridgit.cc/learn/operations/v2-screen.observe.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-screen.observe.json",
    "required_arguments": [],
    "tool": "screen.observe"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.screen.observe",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v2.screen.observe"]
  },
  {
   "detail_url": "/v1/discover?id=v2.screen.control&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.screen.control.json",
   "title": "Private app control",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.screen.control.json",
   "prerequisites": ["Check v2.screen.control supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_screen_wait",
     "documentation": "https://bridgit.cc/learn/operations/v2-screen.wait.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-screen.wait.json",
     "required_arguments": [
      "session_id",
      "expect"
     ],
     "tool": "screen.wait"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_session_heartbeat",
     "documentation": "https://bridgit.cc/learn/operations/v2-session.heartbeat.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-session.heartbeat.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "session.heartbeat"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_session_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-session.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-session.list.json",
     "required_arguments": [],
     "tool": "session.list"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_session_request",
     "documentation": "https://bridgit.cc/learn/operations/v2-session.request.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-session.request.json",
     "required_arguments": [
      "idempotency_key",
      "apps",
      "purpose"
     ],
     "tool": "session.request"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_session_stop",
     "documentation": "https://bridgit.cc/learn/operations/v2-session.stop.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-session.stop.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "session.stop"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_ui_action",
     "documentation": "https://bridgit.cc/learn/operations/v2-ui.action.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-ui.action.json",
     "required_arguments": [
      "idempotency_key",
      "session_id",
      "fence",
      "observation_id",
      "type"
     ],
     "tool": "ui.action"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_ui_sequence",
     "documentation": "https://bridgit.cc/learn/operations/v2-ui.sequence.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-ui.sequence.json",
     "required_arguments": [
      "idempotency_key",
      "session_id",
      "fence",
      "steps"
     ],
     "tool": "ui.sequence"
    }
   ],
   "boundaries": "Private build only; owner grants and session/transport requirements apply. See control guide.",
   "examples_url": null,
   "id": "v2.screen.control",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v2.screen.control"]
  },
  {
   "detail_url": "/v1/discover?id=v2.notifications.read&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.notifications.read.json",
   "title": "Selected app notifications",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.notifications.read.json",
   "prerequisites": ["Check v2.notifications.read supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_notification_list",
    "documentation": "https://bridgit.cc/learn/operations/v2-notification.list.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-notification.list.json",
    "required_arguments": [],
    "tool": "notification.list"
   }],
   "boundaries": "Private build only; owner grants and session/transport requirements apply. See control guide.",
   "examples_url": null,
   "id": "v2.notifications.read",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v2.notifications.read"]
  },
  {
   "detail_url": "/v1/discover?id=v2.notifications.reply&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.notifications.reply.json",
   "title": "Notification replies",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.notifications.reply.json",
   "prerequisites": ["Check v2.notifications.reply supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_notification_reply",
    "documentation": "https://bridgit.cc/learn/operations/v2-notification.reply.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-notification.reply.json",
    "required_arguments": [
     "idempotency_key",
     "id",
     "fingerprint",
     "text"
    ],
    "tool": "notification.reply"
   }],
   "boundaries": "Private build only; owner grants and session/transport requirements apply. See control guide.",
   "examples_url": null,
   "id": "v2.notifications.reply",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v2.notifications.reply"]
  },
  {
   "detail_url": "/v1/discover?id=v2.intents&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.intents.json",
   "title": "App and productivity drafts",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.intents.json",
   "prerequisites": ["Check v2.intents supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_device_action",
    "documentation": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "required_arguments": [
     "idempotency_key",
     "type"
    ],
    "tool": "device.action"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.intents",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v2.intents"]
  },
  {
   "detail_url": "/v1/discover?id=v2.phone.control&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.phone.control.json",
   "title": "Phone controls",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.phone.control.json",
   "prerequisites": ["Check v2.phone.control supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_device_action",
    "documentation": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-device.action.json",
    "required_arguments": [
     "idempotency_key",
     "type"
    ],
    "tool": "device.action"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.phone.control",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "act",
   "capability_ids": ["v2.phone.control"]
  },
  {
   "detail_url": "/v1/discover?id=v2.location&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.location.json",
   "title": "Location fixes",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.location.json",
   "prerequisites": ["Check v2.location supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_location_fix",
    "documentation": "https://bridgit.cc/learn/operations/v2-location.fix.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-location.fix.json",
    "required_arguments": [],
    "tool": "location.fix"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.location",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v2.location"]
  },
  {
   "detail_url": "/v1/discover?id=v2.sensors&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.sensors.json",
   "title": "Sensor readings",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.sensors.json",
   "prerequisites": ["Check v2.sensors supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_sensors_read",
    "documentation": "https://bridgit.cc/learn/operations/v2-sensors.read.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-sensors.read.json",
    "required_arguments": [],
    "tool": "sensors.read"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.sensors",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "sense",
   "capability_ids": ["v2.sensors"]
  },
  {
   "detail_url": "/v1/discover?id=v2.images.ocr&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.images.ocr.json",
   "title": "Local text recognition",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.images.ocr.json",
   "prerequisites": ["Check v2.images.ocr supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_images_ocr",
    "documentation": "https://bridgit.cc/learn/operations/v2-images.ocr.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-images.ocr.json",
    "required_arguments": [],
    "tool": "images.ocr"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.images.ocr",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "process",
   "capability_ids": ["v2.images.ocr"]
  },
  {
   "detail_url": "/v1/discover?id=v2.images.barcode&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.images.barcode.json",
   "title": "Barcode recognition",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.images.barcode.json",
   "prerequisites": ["Check v2.images.barcode supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_images_barcode",
    "documentation": "https://bridgit.cc/learn/operations/v2-images.barcode.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-images.barcode.json",
    "required_arguments": [],
    "tool": "images.barcode"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.images.barcode",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "process",
   "capability_ids": ["v2.images.barcode"]
  },
  {
   "detail_url": "/v1/discover?id=v2.translation&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.translation.json",
   "title": "Local translation",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.translation.json",
   "prerequisites": ["Check v2.translation supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_translation_download",
     "documentation": "https://bridgit.cc/learn/operations/v2-translation.download.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-translation.download.json",
     "required_arguments": [
      "idempotency_key",
      "source",
      "target"
     ],
     "tool": "translation.download"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_translation_run",
     "documentation": "https://bridgit.cc/learn/operations/v2-translation.run.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-translation.run.json",
     "required_arguments": [
      "source",
      "target",
      "text"
     ],
     "tool": "translation.run"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.translation",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "process",
   "capability_ids": ["v2.translation"]
  },
  {
   "detail_url": "/v1/discover?id=v2.speech.transcribe&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.speech.transcribe.json",
   "title": "Owner-started dictation",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.speech.transcribe.json",
   "prerequisites": ["Check v2.speech.transcribe supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_speech_transcribe",
    "documentation": "https://bridgit.cc/learn/operations/v2-speech.transcribe.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-speech.transcribe.json",
    "required_arguments": ["idempotency_key"],
    "tool": "speech.transcribe"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.speech.transcribe",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "process",
   "capability_ids": ["v2.speech.transcribe"]
  },
  {
   "detail_url": "/v1/discover?id=v2.alerts&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.alerts.json",
   "title": "Approved recipient alerts",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.alerts.json",
   "prerequisites": ["Check v2.alerts supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_alert_cancel",
     "documentation": "https://bridgit.cc/learn/operations/v2-alert.cancel.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-alert.cancel.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "alert.cancel"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_alert_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-alert.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-alert.list.json",
     "required_arguments": [],
     "tool": "alert.list"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_alert_trigger",
     "documentation": "https://bridgit.cc/learn/operations/v2-alert.trigger.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-alert.trigger.json",
     "required_arguments": [
      "idempotency_key",
      "destinations",
      "text"
     ],
     "tool": "alert.trigger"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.alerts",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "interact",
   "capability_ids": ["v2.alerts"]
  },
  {
   "detail_url": "/v1/discover?id=v2.workflows&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.workflows.json",
   "title": "Local workflows",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.workflows.json",
   "prerequisites": ["Check v2.workflows supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_applet_event",
     "documentation": "https://bridgit.cc/learn/operations/v2-applet.event.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-applet.event.json",
     "required_arguments": [
      "idempotency_key",
      "workflow_id",
      "event_id",
      "payload"
     ],
     "tool": "applet.event"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_application_event",
     "documentation": "https://bridgit.cc/learn/operations/v2-application.event.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-application.event.json",
     "required_arguments": [
      "idempotency_key",
      "workflow_id",
      "event_id",
      "payload"
     ],
     "tool": "application.event"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_workflow_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-workflow.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-workflow.list.json",
     "required_arguments": [],
     "tool": "workflow.list"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_workflow_pause",
     "documentation": "https://bridgit.cc/learn/operations/v2-workflow.pause.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-workflow.pause.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "workflow.pause"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_workflow_propose",
     "documentation": "https://bridgit.cc/learn/operations/v2-workflow.propose.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-workflow.propose.json",
     "required_arguments": [
      "idempotency_key",
      "name",
      "trigger",
      "steps"
     ],
     "tool": "workflow.propose"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_workflow_run",
     "documentation": "https://bridgit.cc/learn/operations/v2-workflow.run.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-workflow.run.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "workflow.run"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_workflow_validate",
     "documentation": "https://bridgit.cc/learn/operations/v2-workflow.validate.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-workflow.validate.json",
     "required_arguments": [
      "name",
      "trigger",
      "steps"
     ],
     "tool": "workflow.validate"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.workflows",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": ["v2.workflows"]
  },
  {
   "detail_url": "/v1/discover?id=v2.monitoring&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.monitoring.json",
   "title": "Camera monitoring",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.monitoring.json",
   "prerequisites": ["Check v2.monitoring supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_stream_frame",
     "documentation": "https://bridgit.cc/learn/operations/v2-stream.frame.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-stream.frame.json",
     "required_arguments": ["id"],
     "tool": "stream.frame"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_stream_start",
     "documentation": "https://bridgit.cc/learn/operations/v2-stream.start.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-stream.start.json",
     "required_arguments": ["idempotency_key"],
     "tool": "stream.start"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_stream_status",
     "documentation": "https://bridgit.cc/learn/operations/v2-stream.status.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-stream.status.json",
     "required_arguments": ["id"],
     "tool": "stream.status"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_stream_stop",
     "documentation": "https://bridgit.cc/learn/operations/v2-stream.stop.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-stream.stop.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "stream.stop"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.monitoring",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": ["v2.monitoring"]
  },
  {
   "detail_url": "/v1/discover?id=v2.peripherals&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.peripherals.json",
   "title": "Bluetooth, USB and NFC",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.peripherals.json",
   "prerequisites": ["Check v2.peripherals supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_peripheral_action",
     "documentation": "https://bridgit.cc/learn/operations/v2-peripheral.action.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-peripheral.action.json",
     "required_arguments": [
      "idempotency_key",
      "type"
     ],
     "tool": "peripheral.action"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_peripheral_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-peripheral.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-peripheral.list.json",
     "required_arguments": [],
     "tool": "peripheral.list"
    }
   ],
   "boundaries": "Private build only; owner grants and session/transport requirements apply. See control guide.",
   "examples_url": null,
   "id": "v2.peripherals",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v2.peripherals"]
  },
  {
   "detail_url": "/v1/discover?id=v2.owner.configuration&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.owner.configuration.json",
   "title": "Owner feature configuration requests",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.owner.configuration.json",
   "prerequisites": ["Check v2.owner.configuration supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [{
    "path": "/v2/call",
    "method": "POST",
    "mcp_tool": "bridgit_owner_configure",
    "documentation": "https://bridgit.cc/learn/operations/v2-owner.configure.json",
    "operation_url": "https://bridgit.cc/learn/operations/v2-owner.configure.json",
    "required_arguments": [
     "idempotency_key",
     "action",
     "options"
    ],
    "tool": "owner.configure"
   }],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.owner.configuration",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v2.owner.configuration"]
  },
  {
   "detail_url": "/v1/discover?id=v2.diagnostics&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.diagnostics.json",
   "title": "Device diagnostics",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.diagnostics.json",
   "prerequisites": ["Check v2.diagnostics supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_capabilities",
     "documentation": "https://bridgit.cc/learn/operations/v2-capabilities.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-capabilities.json",
     "required_arguments": [],
     "tool": "capabilities"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_diagnostics",
     "documentation": "https://bridgit.cc/learn/operations/v2-diagnostics.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-diagnostics.json",
     "required_arguments": [],
     "tool": "diagnostics"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_operation_cancel",
     "documentation": "https://bridgit.cc/learn/operations/v2-operation.cancel.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-operation.cancel.json",
     "required_arguments": [
      "idempotency_key",
      "id"
     ],
     "tool": "operation.cancel"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_operation_get",
     "documentation": "https://bridgit.cc/learn/operations/v2-operation.get.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-operation.get.json",
     "required_arguments": ["id"],
     "tool": "operation.get"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_operation_list",
     "documentation": "https://bridgit.cc/learn/operations/v2-operation.list.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-operation.list.json",
     "required_arguments": [],
     "tool": "operation.list"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_phone_context",
     "documentation": "https://bridgit.cc/learn/operations/v2-phone.context.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-phone.context.json",
     "required_arguments": [],
     "tool": "phone.context"
    },
    {
     "path": "/v2/call",
     "method": "POST",
     "mcp_tool": "bridgit_phone_status",
     "documentation": "https://bridgit.cc/learn/operations/v2-phone.status.json",
     "operation_url": "https://bridgit.cc/learn/operations/v2-phone.status.json",
     "required_arguments": [],
     "tool": "phone.status"
    }
   ],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.diagnostics",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "extend",
   "capability_ids": ["v2.diagnostics"]
  },
  {
   "detail_url": "/v1/discover?id=v2.audit.read&detail=full",
   "kind": "capability",
   "documentation": "https://bridgit.cc/learn/capabilities/v2.audit.read.json",
   "title": "Own activity history",
   "public_detail_url": "https://bridgit.cc/learn/capabilities/v2.audit.read.json",
   "prerequisites": ["Check v2.audit.read supported, enabled, granted and ready; execute only with all required authorization."],
   "combinations": [],
   "operations": [],
   "boundaries": "Public control tool; inspect its schema and /v2/capabilities. Owner approval may be required.",
   "examples_url": null,
   "id": "v2.audit.read",
   "state": {
    "ready": null,
    "blockers": ["check_v2_capabilities"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "remember",
   "capability_ids": ["v2.audit.read"]
  },
  {
   "detail_url": "/v1/discover?id=pet-monitor&detail=full",
   "kind": "recipe",
   "documentation": "https://bridgit.cc/recipes/pet-monitor/",
   "title": "Pet activity monitor",
   "public_detail_url": "https://bridgit.cc/recipes/pet-monitor/recipe.json",
   "prerequisites": [
    "Check v1.watches supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.camera supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."
   ],
   "combinations": [
    "v1.watches",
    "v1.camera",
    "v1.interactions"
   ],
   "operations": [
    {
     "summary": "Take a photo now",
     "path": "/v1/camera/snapshot",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-snapshot.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-snapshot.json",
     "requires_power": null,
     "tool": "camera_snapshot"
    },
    {
     "summary": "Open the camera ahead of a photo, so your next snapshot fires in about 0.3 s",
     "path": "/v1/camera/arm",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-arm.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-arm.json",
     "requires_power": null,
     "tool": "camera_arm"
    },
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    },
    {
     "summary": "Call me back when ...: the phone reads the data you pick (location, motion, a camera photo, ...) on an interval, asks Clef or Jev (paid) your question about the last few readings, and calls you back when the answer matches. With a photo, a free change check on the phone skips the paid call while the picture stays the same; model none is local only. Designing one (which model, the change check, a worked door-camera example, cost): https://bridgit.cc/learn/decisions.md",
     "path": "/v1/watches",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-watches.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-watches.json",
     "requires_power": null,
     "tool": "watches_start"
    },
    {
     "summary": "Your running watches, with their last check",
     "path": "/v1/watches",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches.json",
     "requires_power": null,
     "tool": "watches_list"
    },
    {
     "summary": "One running watch: its spec, the last 10 checks with Jev's answers, and the last state sent",
     "path": "/v1/watches/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches-id.json",
     "requires_power": null,
     "tool": "watches_get"
    },
    {
     "summary": "Stop a watch (you get a watch.ended event with reason deleted)",
     "path": "/v1/watches/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-watches-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-watches-id.json",
     "requires_power": null,
     "tool": "watches_stop"
    },
    {
     "summary": "A tally watch's counts: today, the last 7 days, what's going on now, typical gaps, rules, and the episodes",
     "path": "/v1/watches/{id}/tally",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches-id-tally.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches-id-tally.json",
     "requires_power": null,
     "tool": "watches_tally"
    },
    {
     "summary": "Pause or resume your watch without losing its tally; expiry is unchanged",
     "path": "/v1/watches/{id}/pause",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-watches-id-pause.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-watches-id-pause.json",
     "requires_power": null,
     "tool": "watches_pause"
    }
   ],
   "boundaries": "Public composition is a generic watch, not the native Pet Monitor. It does not inherit native camera selection, dual-model comparisons, pet history/portal, microphone classifier, camera search or feeding. Samples show visible activity only. A missed pet is unknown coverage; cached classifications are reused evidence, not new model observations.",
   "examples_url": "https://bridgit.cc/recipes/pet-monitor/recipe.json",
   "id": "pet-monitor",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": [
    "v1.watches",
    "v1.camera",
    "v1.interactions"
   ]
  },
  {
   "detail_url": "/v1/discover?id=receipt-scanner&detail=full",
   "kind": "recipe",
   "documentation": "https://bridgit.cc/recipes/receipt-scanner/",
   "title": "Receipt scanner",
   "public_detail_url": "https://bridgit.cc/recipes/receipt-scanner/recipe.json",
   "prerequisites": [
    "Check v1.ocr supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.gallery supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."
   ],
   "combinations": [
    "v1.ocr",
    "v1.gallery",
    "v1.interactions"
   ],
   "operations": [
    {
     "summary": "Newest gallery images (metadata only)",
     "path": "/v1/gallery/recent",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-gallery-recent.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-gallery-recent.json",
     "requires_power": null,
     "tool": "gallery_recent"
    },
    {
     "summary": "One gallery image, sized for you",
     "path": "/v1/gallery/photo/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-gallery-photo-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-gallery-photo-id.json",
     "requires_power": null,
     "tool": "gallery_photo"
    },
    {
     "summary": "The newest image of a type; with since and wait, waits for the next one",
     "path": "/v1/image/last",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-image-last.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-image-last.json",
     "requires_power": null,
     "tool": "image_last"
    },
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    },
    {
     "summary": "Recognize Latin-script text locally; no image upload",
     "path": "/v1/ocr",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-ocr.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-ocr.json",
     "requires_power": null,
     "tool": "ocr"
    }
   ],
   "boundaries": "OCR text is not a verified accounting record. This recipe does not pay, submit expenses, or infer a currency. gallery_id 42 is a synthetic fixture: substitute the image ID returned by the owner-authorized gallery listing. No camera capture occurs on opening the template.",
   "examples_url": "https://bridgit.cc/recipes/receipt-scanner/recipe.json",
   "id": "receipt-scanner",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": [
    "v1.ocr",
    "v1.gallery",
    "v1.interactions"
   ]
  },
  {
   "detail_url": "/v1/discover?id=voice-notebook&detail=full",
   "kind": "recipe",
   "documentation": "https://bridgit.cc/recipes/voice-notebook/",
   "title": "Voice notebook",
   "public_detail_url": "https://bridgit.cc/recipes/voice-notebook/recipe.json",
   "prerequisites": [
    "Check v1.mic supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."
   ],
   "combinations": [
    "v1.mic",
    "v1.interactions"
   ],
   "operations": [
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    },
    {
     "summary": "Record an audio clip",
     "path": "/v1/mic/record",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-mic-record.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-mic-record.json",
     "requires_power": null,
     "tool": "mic_record"
    }
   ],
   "boundaries": "Not an always-listening notebook. It captures only a bounded clip on a deliberate tap. On-device recognition availability depends on Android and installed language resources. Empty transcript is not silence evidence.",
   "examples_url": "https://bridgit.cc/recipes/voice-notebook/recipe.json",
   "id": "voice-notebook",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": [
    "v1.mic",
    "v1.interactions"
   ]
  },
  {
   "detail_url": "/v1/discover?id=room-change-watcher&detail=full",
   "kind": "recipe",
   "documentation": "https://bridgit.cc/recipes/room-change-watcher/",
   "title": "Room change watcher",
   "public_detail_url": "https://bridgit.cc/recipes/room-change-watcher/recipe.json",
   "prerequisites": [
    "Check v1.watches supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.camera supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."
   ],
   "combinations": [
    "v1.watches",
    "v1.camera",
    "v1.interactions"
   ],
   "operations": [
    {
     "summary": "Take a photo now",
     "path": "/v1/camera/snapshot",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-snapshot.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-snapshot.json",
     "requires_power": null,
     "tool": "camera_snapshot"
    },
    {
     "summary": "Open the camera ahead of a photo, so your next snapshot fires in about 0.3 s",
     "path": "/v1/camera/arm",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-camera-arm.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-camera-arm.json",
     "requires_power": null,
     "tool": "camera_arm"
    },
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    },
    {
     "summary": "Call me back when ...: the phone reads the data you pick (location, motion, a camera photo, ...) on an interval, asks Clef or Jev (paid) your question about the last few readings, and calls you back when the answer matches. With a photo, a free change check on the phone skips the paid call while the picture stays the same; model none is local only. Designing one (which model, the change check, a worked door-camera example, cost): https://bridgit.cc/learn/decisions.md",
     "path": "/v1/watches",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-watches.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-watches.json",
     "requires_power": null,
     "tool": "watches_start"
    },
    {
     "summary": "Your running watches, with their last check",
     "path": "/v1/watches",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches.json",
     "requires_power": null,
     "tool": "watches_list"
    },
    {
     "summary": "One running watch: its spec, the last 10 checks with Jev's answers, and the last state sent",
     "path": "/v1/watches/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches-id.json",
     "requires_power": null,
     "tool": "watches_get"
    },
    {
     "summary": "Stop a watch (you get a watch.ended event with reason deleted)",
     "path": "/v1/watches/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-watches-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-watches-id.json",
     "requires_power": null,
     "tool": "watches_stop"
    },
    {
     "summary": "A tally watch's counts: today, the last 7 days, what's going on now, typical gaps, rules, and the episodes",
     "path": "/v1/watches/{id}/tally",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-watches-id-tally.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-watches-id-tally.json",
     "requires_power": null,
     "tool": "watches_tally"
    },
    {
     "summary": "Pause or resume your watch without losing its tally; expiry is unchanged",
     "path": "/v1/watches/{id}/pause",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-watches-id-pause.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-watches-id-pause.json",
     "requires_power": null,
     "tool": "watches_pause"
    }
   ],
   "boundaries": "A changed image is not an intrusion, person count, danger or proof that something happened outside the frame. The latest state and recent checks are bounded; controller must persist event history it needs.",
   "examples_url": "https://bridgit.cc/recipes/room-change-watcher/recipe.json",
   "id": "room-change-watcher",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": [
    "v1.watches",
    "v1.camera",
    "v1.interactions"
   ]
  },
  {
   "detail_url": "/v1/discover?id=daily-briefing-panel&detail=full",
   "kind": "recipe",
   "documentation": "https://bridgit.cc/recipes/daily-briefing-panel/",
   "title": "Daily briefing panel",
   "public_detail_url": "https://bridgit.cc/recipes/daily-briefing-panel/recipe.json",
   "prerequisites": [
    "Check v1.schedule supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.weather supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."
   ],
   "combinations": [
    "v1.schedule",
    "v1.weather",
    "v1.interactions"
   ],
   "operations": [
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    },
    {
     "summary": "Your exact approved and pending action manifests for inspection or resubmission",
     "path": "/v1/schedule/manifest",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule-manifest.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule-manifest.json",
     "requires_power": null,
     "tool": "schedule_manifest"
    },
    {
     "summary": "Hand the phone an action manifest once: any action it can take (any /v1 call you're allowed, plus download, play, show, send and delete of saved files), each with its own schedule. The owner approves each new manifest once on the phone; then it runs by itself and results arrive as schedule.* events",
     "path": "/v1/schedule",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-schedule.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-schedule.json",
     "requires_power": null,
     "tool": "schedule_set"
    },
    {
     "summary": "Your manifest: what's approved, what's waiting for the owner, each action's next run and last result, and your saved files",
     "path": "/v1/schedule",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule.json",
     "requires_power": null,
     "tool": "schedule_get"
    },
    {
     "summary": "Run one approved action now, outside its timetable (its 'after' chain doesn't follow)",
     "path": "/v1/schedule/run/{id}",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-schedule-run-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-schedule-run-id.json",
     "requires_power": null,
     "tool": "schedule_run"
    },
    {
     "summary": "Pause or resume your approved actions",
     "path": "/v1/schedule/pause",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-schedule-pause.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-schedule-pause.json",
     "requires_power": null,
     "tool": "schedule_pause"
    },
    {
     "summary": "Remove your manifest (approved and waiting) and, unless keep_assets=true, your saved files",
     "path": "/v1/schedule",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-schedule.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-schedule.json",
     "requires_power": null,
     "tool": "schedule_remove"
    },
    {
     "summary": "Files your actions saved (downloads and kept results), up to 100 / 100 MB, kept 30 days",
     "path": "/v1/schedule/assets",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule-assets.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule-assets.json",
     "requires_power": null,
     "tool": "schedule_assets_list"
    },
    {
     "summary": "One saved file's bytes, e.g. a photo a scheduled action took",
     "path": "/v1/schedule/assets/{name}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-schedule-assets-name.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-schedule-assets-name.json",
     "requires_power": null,
     "tool": "schedule_asset_get"
    },
    {
     "summary": "Delete one saved file",
     "path": "/v1/schedule/assets/{name}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-schedule-assets-name.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-schedule-assets-name.json",
     "requires_power": null,
     "tool": "schedule_asset_delete"
    },
    {
     "summary": "Weather where the phone is (or at a lat/lon you give): conditions now, the next hours and the next 24 hours, from MET Norway. Schedule it like any call: {\"do\":{\"call\":\"GET /v1/weather\"}}",
     "path": "/v1/weather",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-weather.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-weather.json",
     "requires_power": null,
     "tool": "weather"
    }
   ],
   "boundaries": "The local schedule cannot template arbitrary API responses into rich HTML. A fresh multi-source digest needs controller code to gather, summarize and publish a new card. This complete starter is a reminder plus on-demand weather panel. Calendar/mail aggregation is an optional separately authorized integration.",
   "examples_url": "https://bridgit.cc/recipes/daily-briefing-panel/recipe.json",
   "id": "daily-briefing-panel",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": [
    "v1.schedule",
    "v1.weather",
    "v1.interactions"
   ]
  },
  {
   "detail_url": "/v1/discover?id=external-device-dashboard&detail=full",
   "kind": "recipe",
   "documentation": "https://bridgit.cc/recipes/external-device-dashboard/",
   "title": "External device dashboard",
   "public_detail_url": "https://bridgit.cc/recipes/external-device-dashboard/recipe.json",
   "prerequisites": [
    "Check v1.lan_control supported, enabled, granted and ready; execute only with all required authorization.",
    "Check v1.interactions supported, enabled, granted and ready; execute only with all required authorization."
   ],
   "combinations": [
    "v1.lan_control",
    "v1.interactions"
   ],
   "operations": [
    {
     "summary": "Send the owner a notice, a question (buttons, text reply, choice, links), an HTML card or a live text panel. Prefer a native question for simple choices, normal priority and no speech. Sending isn't seeing or answering: wait with GET /v1/interactions/{id}?wait=55 (or one /v1/events loop for several)",
     "path": "/v1/interactions",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_send"
    },
    {
     "summary": "Your interactions, newest first",
     "path": "/v1/interactions",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions.json",
     "requires_power": null,
     "tool": "interactions_list"
    },
    {
     "summary": "One of your interactions; with wait, holds until the owner answers or closes it",
     "path": "/v1/interactions/{id}",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_get"
    },
    {
     "summary": "Cancel one of your interactions",
     "path": "/v1/interactions/{id}",
     "method": "DELETE",
     "documentation": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "operation_url": "https://bridgit.cc/learn/operations/delete-v1-interactions-id.json",
     "requires_power": null,
     "tool": "interactions_cancel"
    },
    {
     "summary": "Your events, oldest first: answers, closes, expiries, switch changes. Repeated phone answers emit interaction.answered with resubmission=true and previous_answer; agents decide whether to accept the change. An answer given after the question expired comes as interaction.answered with late=true. action.executed: one of your HTML cards ran Bridgit.act (interaction_id, method, path, status, ok, error)",
     "path": "/v1/events",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-events.json",
     "requires_power": null,
     "tool": "events"
    },
    {
     "summary": "Add text to your live text panel (an interaction of kind text); it scrolls on the phone as it arrives",
     "path": "/v1/text/stream",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-text-stream.json",
     "requires_power": null,
     "tool": "text_stream"
    },
    {
     "summary": "Send a signed test event to the callback URL the owner set for you (EVT-05/06)",
     "path": "/v1/callback/test",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-callback-test.json",
     "requires_power": null,
     "tool": "callback_test"
    },
    {
     "summary": "This agent's enrolled devices and adapter/action schemas",
     "path": "/v1/lan/devices",
     "method": "GET",
     "documentation": "https://bridgit.cc/learn/operations/get-v1-lan-devices.json",
     "operation_url": "https://bridgit.cc/learn/operations/get-v1-lan-devices.json",
     "requires_power": null,
     "tool": "lan_devices"
    },
    {
     "summary": "Run a fixed supported action on this agent's enrolled device",
     "path": "/v1/lan/devices/action",
     "method": "POST",
     "documentation": "https://bridgit.cc/learn/operations/post-v1-lan-devices-action.json",
     "operation_url": "https://bridgit.cc/learn/operations/post-v1-lan-devices-action.json",
     "requires_power": null,
     "tool": "lan_devices_action"
    }
   ],
   "boundaries": "Listing does not test devices: availability=not_checked is not online. Discovery is partial and unverified; enrollment is separate. No enrollment credentials are embedded. No relay switch, motor, light or other physical action is run by the template.",
   "examples_url": "https://bridgit.cc/recipes/external-device-dashboard/recipe.json",
   "id": "external-device-dashboard",
   "state": {
    "ready": null,
    "blockers": ["device_state_unknown"],
    "enabled": null,
    "supported": null,
    "granted": null
   },
   "detail": "full",
   "category": "run",
   "capability_ids": [
    "v1.lan_control",
    "v1.interactions"
   ]
  }
 ],
 "provenance": {
  "installed": "Use authenticated device health/capabilities; public catalog contains no private inventory.",
  "sources": [
   "Endpoints.all",
   "Commands",
   "Capabilities.all",
   "ToolSchemas",
   "website/content/builder/recipes.json"
  ],
  "kind": "source_generated",
  "released": "Check public updater manifest; source documentation is not release evidence."
 },
 "documentation_revision": 10,
 "api_revision": 58,
 "installed_api_revision": null,
 "categories": [
  "sense",
  "process",
  "decide",
  "run",
  "remember",
  "interact",
  "act",
  "extend"
 ],
 "start_here": "https://bridgit.cc/learn/catalog-index.json",
 "export_kind": "bulk"
}
