## §OIP SYSTEM ARTICLE — IMESSAGE (5 operations)
A 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.

### Read Order
- scan operations
- open a leaf doc
- run via run_now or POST /api/dispatch
- open receipt
- repair/replay if needed

### Operations
- **IMESSAGE_SEND** — Send an iMessage as the Mac Messages.app Apple ID (native identity, not Blooio).
  when: text someone as the custodian's iPhone/Mac identity.
  args: $1 = handle (phone or email), $2 = text
  doc: https://miscsubjects.com/api/dispatch?key=IMESSAGE_SEND&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=IMESSAGE_SEND&body=%2B<owner line, not public>%7Chello&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=IMESSAGE_SEND
- **IMESSAGE_CHATS** — List native iMessage conversations on this Mac.
  args: $1 = limit (default 40)
  doc: https://miscsubjects.com/api/dispatch?key=IMESSAGE_CHATS&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=IMESSAGE_CHATS&body=20&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=IMESSAGE_CHATS
- **IMESSAGE_THREAD** — Read one native iMessage thread by handle or chat_identifier.
  args: $1 = handle, $2 = limit
  doc: https://miscsubjects.com/api/dispatch?key=IMESSAGE_THREAD&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=IMESSAGE_THREAD&body=%2B<owner line, not public>%7C20&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=IMESSAGE_THREAD
- **IMESSAGE_SEARCH** — Search native iMessage history on this Mac (chat.db). Returns snippets, not the database.
  args: $1 = query, $2 = limit
  doc: https://miscsubjects.com/api/dispatch?key=IMESSAGE_SEARCH&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=IMESSAGE_SEARCH&body=invoice%7C20&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=IMESSAGE_SEARCH
- **IMESSAGE_WATCH** — Native iMessage watch cursor — messages with ROWID greater than $1.
  args: $1 = since rowid, $2 = limit
  doc: https://miscsubjects.com/api/dispatch?key=IMESSAGE_WATCH&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=IMESSAGE_WATCH&body=677000%7C20&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=IMESSAGE_WATCH

### Troubleshooting
- If a row's example has placeholders, replace only the placeholder values and preserve separators.
- If a call fails, open its receipt and repair it with POST /api/dispatch {key, body, repairs:'inv_ID'}.
- If token scope denies this system, ask the owner for a row:/rows:/pfx: token scoped to the exact operation set.

Back to the tree: https://miscsubjects.com/api/dispatch?map=1&format=markdown