{"slug":"oip-system-phone","title":"OIP system: Phone / iMessage","body":"## Phone / iMessage\n\nA generated article for one OIP shelf. It lists every operation in this API/CLI/MCP/device/model/core subsystem, links each leaf article, and gives the ledger path for proof.\n\nThis page is the operating article for one build subsystem. It is generated from live directory rows. If a task belongs to this subsystem, scan the operations below, open the matching capability article, run only the exact object named there, and verify by receipt.\n\nKind: `device`. Capabilities: `10`. Machine system map: [/api/dispatch?map=PHONE&format=markdown](https://miscsubjects.com/api/dispatch?map=PHONE&format=markdown). Root: [/a/oip](https://miscsubjects.com/a/oip).\n\n## Operations\n\n### PHONE_NOTIFY\nsend a push to Cyrus's phone via iMessage.\nUse when: an agent finished a task, hit a milestone, or needs eyes on something.\nArguments: `title|body. Multi-line body OK.`.\nHuman article: [/a/oip-capability-phone-notify](https://miscsubjects.com/a/oip-capability-phone-notify). Machine doc: [?key=PHONE_NOTIFY&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_NOTIFY&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_NOTIFY](https://miscsubjects.com/api/invocations?object_id=PHONE_NOTIFY).\n\n### PHONE_APPROVAL_CREATE\ninsert a row into `approvals` (status=pending) and notify Cyrus's phone.\nUse when: about to do something destructive (deploy, send outreach, delete, pay) — pause first.\nArguments: `action|summary|resume_key|resume_body. resume_key + body are dispatched on approve.`.\nHuman article: [/a/oip-capability-phone-approval-create](https://miscsubjects.com/a/oip-capability-phone-approval-create). Machine doc: [?key=PHONE_APPROVAL_CREATE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_APPROVAL_CREATE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_APPROVAL_CREATE](https://miscsubjects.com/api/invocations?object_id=PHONE_APPROVAL_CREATE).\n\n### PHONE_APPROVAL_RESOLVE\nupdate approvals.status to approved/denied and, on approve, dispatch the stored resume_key.\nUse when: phone tap, /admin/approvals click, or natural-language \"approve 12\".\nArguments: `approval_id|decision (approve|deny).`.\nHuman article: [/a/oip-capability-phone-approval-resolve](https://miscsubjects.com/a/oip-capability-phone-approval-resolve). Machine doc: [?key=PHONE_APPROVAL_RESOLVE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_APPROVAL_RESOLVE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_APPROVAL_RESOLVE](https://miscsubjects.com/api/invocations?object_id=PHONE_APPROVAL_RESOLVE).\n\n### PHONE_VOICE_NOTE_HANDLE\ntranscribe a phone voice memo and route the transcript through ROUTER like an iMessage.\nUse when: /api/phone/in receives action=voice_note from an iOS Shortcut.\nArguments: `voice_url.`.\nHuman article: [/a/oip-capability-phone-voice-note-handle](https://miscsubjects.com/a/oip-capability-phone-voice-note-handle). Machine doc: [?key=PHONE_VOICE_NOTE_HANDLE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_VOICE_NOTE_HANDLE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_VOICE_NOTE_HANDLE](https://miscsubjects.com/api/invocations?object_id=PHONE_VOICE_NOTE_HANDLE).\n\n### PHONE_SHARE_URL_HANDLE\nphone shared a URL via the Share Sheet — fetch its markdown and route to ROUTER as a normal turn.\nUse when: /api/phone/in receives action=share_url.\nArguments: `text|url.`.\nHuman article: [/a/oip-capability-phone-share-url-handle](https://miscsubjects.com/a/oip-capability-phone-share-url-handle). Machine doc: [?key=PHONE_SHARE_URL_HANDLE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_SHARE_URL_HANDLE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_SHARE_URL_HANDLE](https://miscsubjects.com/api/invocations?object_id=PHONE_SHARE_URL_HANDLE).\n\n### PHONE_SHARE_TEXT_HANDLE\nphone shared selected text — route straight to ROUTER as if Cyrus had typed it.\nUse when: /api/phone/in action=share_text.\nArguments: `text.`.\nHuman article: [/a/oip-capability-phone-share-text-handle](https://miscsubjects.com/a/oip-capability-phone-share-text-handle). Machine doc: [?key=PHONE_SHARE_TEXT_HANDLE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_SHARE_TEXT_HANDLE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_SHARE_TEXT_HANDLE](https://miscsubjects.com/api/invocations?object_id=PHONE_SHARE_TEXT_HANDLE).\n\n### PHONE_SHARE_IMAGE_HANDLE\nphone shared an image — store as reference + route image URL through ROUTER (ARCADS picks it up).\nUse when: /api/phone/in action=share_image or action=photo.\nArguments: `image_url|caption.`.\nHuman article: [/a/oip-capability-phone-share-image-handle](https://miscsubjects.com/a/oip-capability-phone-share-image-handle). Machine doc: [?key=PHONE_SHARE_IMAGE_HANDLE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_SHARE_IMAGE_HANDLE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_SHARE_IMAGE_HANDLE](https://miscsubjects.com/api/invocations?object_id=PHONE_SHARE_IMAGE_HANDLE).\n\n### PHONE_CLIPBOARD_HANDLE\nphone clipboard contents → ROUTER. Same shape as share_text but explicitly tagged.\nUse when: /api/phone/in action=clipboard.\nArguments: `clipboard_text.`.\nHuman article: [/a/oip-capability-phone-clipboard-handle](https://miscsubjects.com/a/oip-capability-phone-clipboard-handle). Machine doc: [?key=PHONE_CLIPBOARD_HANDLE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_CLIPBOARD_HANDLE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_CLIPBOARD_HANDLE](https://miscsubjects.com/api/invocations?object_id=PHONE_CLIPBOARD_HANDLE).\n\n### PHONE_LOCATION_HANDLE\nphone location event → ROUTER. ARGS: location_label (e.g. \"arrived: home\").\nUse when: /api/phone/in action=location, NFC tap, geofence trigger.\nArguments: `location_label.`.\nHuman article: [/a/oip-capability-phone-location-handle](https://miscsubjects.com/a/oip-capability-phone-location-handle). Machine doc: [?key=PHONE_LOCATION_HANDLE&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_LOCATION_HANDLE&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_LOCATION_HANDLE](https://miscsubjects.com/api/invocations?object_id=PHONE_LOCATION_HANDLE).\n\n### PHONE_EVENTS_TAIL\ntail the phone_events table. ARGS: limit (default 20).\nUse when: \"what did my phone send today\".\nHuman article: [/a/oip-capability-phone-events-tail](https://miscsubjects.com/a/oip-capability-phone-events-tail). Machine doc: [?key=PHONE_EVENTS_TAIL&format=markdown](https://miscsubjects.com/api/dispatch?key=PHONE_EVENTS_TAIL&format=markdown). Invocation history: [/api/invocations?object_id=PHONE_EVENTS_TAIL](https://miscsubjects.com/api/invocations?object_id=PHONE_EVENTS_TAIL).\n","register":"oip_protocol","tags":["oip","object-invocation-protocol","protocol-specification","machine-native-json","system"],"style":{"accent":"#16324f","measure":860},"claims":[{"id":"oip-c1","tier":"system","text":"The OIP article layer is generated from live directory rows, so it documents the objects that actually run the reference implementation.","who_claims":"system/oip_articles","source_ids":["oip-s3","oip-s4"]},{"id":"oip-c2","tier":"system","text":"The OIP operating path is caller to directory object to dispatch runner to invocation ledger to receipt.","who_claims":"system/oip_articles","source_ids":["oip-s1"]},{"id":"oip-c3","tier":"system","text":"Every executable capability in the reference implementation is reachable as an OIP object with a human article, a machine document, invocation history, and receipt path.","who_claims":"system/oip_articles","source_ids":["oip-s2","oip-s3"]},{"id":"oip-c4","tier":"system","text":"Tap & Go is the copy primitive: one drop carries credential, protocol, tree, search, execute, and receipt instructions without a separate token-map-bundle assembly step.","who_claims":"system/oip_articles","source_ids":["oip-s2"]},{"id":"oip-c5","tier":"system","text":"OIP receipts are the proof object for actions: they record request, response, actor, links, replay, repair, and lineage.","who_claims":"system/oip_articles","source_ids":["oip-s2","oip-s5"]}],"sources":[{"id":"oip-s1","type":"protocol","title":"BUILD_SPEC object invocation path","url":"https://miscsubjects.com/api/file/docs/BUILD_SPEC.md","summary":"Defines directory rows, dispatch, ledger, and the escalation path for changing the build.","quote":"Run anything: POST https://miscsubjects.com/api/dispatch {key, body}","claim_ids":["oip-c2"],"link_status":"ok","hash":"oipbuildspec0001"},{"id":"oip-s2","type":"protocol","title":"Object Invocation Protocol spec","url":"https://miscsubjects.com/api/file/docs/OIP.md","summary":"Defines OIP surfaces, invariant loop, receipt/replay/repair, and invocation envelopes.","quote":"identify, explain, invoke, ledger, yield","claim_ids":["oip-c3","oip-c4","oip-c5"],"link_status":"ok","hash":"oipspec00000002"},{"id":"oip-s3","type":"protocol","title":"Live OIP capability tree","url":"https://miscsubjects.com/api/dispatch?map=1&format=markdown","summary":"Public recursive capability tree.","quote":"root > shelf > system article > capability article > receipt","claim_ids":["oip-c1","oip-c3"],"link_status":"ok","hash":"oipmap0000000002"},{"id":"oip-s4","type":"protocol","title":"Directory row documentation","url":"https://miscsubjects.com/api/dispatch?key=OIP_TREE&format=markdown","summary":"Capability articles are generated from live rows.","quote":"Machine Contract","claim_ids":["oip-c1"],"link_status":"ok","hash":"oiprow0000000003"},{"id":"oip-s5","type":"protocol","title":"Invocation ledger","url":"https://miscsubjects.com/api/invocations","summary":"Append-only invocation records and receipt links.","quote":"invocations","claim_ids":["oip-c5"],"link_status":"ok","hash":"oipinvocations0005"}],"prov":{"model":"system/oip_articles","action":"generate"}}