## §OIP SYSTEM ARTICLE — Forum threads (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
- **THREAD_ADD** — open a new thread (title + body + tags). status=open.
  when: Cyrus dumps a new line of thought; capture it for later iteration.
  args: title|body|tags (comma-sep, optional).
  doc: https://miscsubjects.com/api/dispatch?key=THREAD_ADD&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=THREAD_ADD&body=%3Ctitle%3E%7C%3Cbody%3E%7C%3Ctags%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=THREAD_ADD
- **THREAD_LIST** — list open threads (or by tag / status).
  args: filter (optional — open|paused|closed OR tag:<name>).
  doc: https://miscsubjects.com/api/dispatch?key=THREAD_LIST&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=THREAD_LIST&body=%3Cfilter%20(optional%20%E2%80%94%20open%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=THREAD_LIST
- **THREAD_APPEND** — append a line to an existing thread's body.
  when: Cyrus says "for that peptide thread, also …".
  args: id|line.
  doc: https://miscsubjects.com/api/dispatch?key=THREAD_APPEND&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=THREAD_APPEND&body=%3Cid%3E%7C%3Cline%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=THREAD_APPEND
- **THREAD_CLOSE** — mark a thread closed.
  args: id.
  doc: https://miscsubjects.com/api/dispatch?key=THREAD_CLOSE&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=THREAD_CLOSE&body=%3Cid%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=THREAD_CLOSE
- **THREAD_GET** — Read one thread fully.
  when: you need to read a thread
  args: id
  doc: https://miscsubjects.com/api/dispatch?key=THREAD_GET&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=THREAD_GET&body=42&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=THREAD_GET

### 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