{
  "protocol": "OIP",
  "version": "0.6",
  "kind": "ask",
  "question": "...",
  "count": 0,
  "best": null,
  "matches": [],
  "compose": "Multiple targets (e.g. text 3 people)? Repeat the call once PER target — one invoke each, one receipt each. Don't cram a list into one call unless the row's args say it takes one. Multi-step (make an image THEN text it)? Do the steps in order, feeding each result into the next.",
  "json_and_post_free": "Needs a JSON body or looks 'POST-only'? You don't need POST. url-encode the JSON into &body= (?invoke=KEY&body=<encoded JSON>), or use the row's pipe args (a|b|c). Every write is a GET row — edit a prompt: DIR_PATCH body=KEY|{\"content\":\"...\"}; write/revise an article: PROTOCOL_WRITE body=<encoded JSON>; ingest: ARTICLE_INGEST body=slug|text.",
  "reply_contract": "OUTPUT RULE — after you invoke ANYTHING, your reply to the user IS the proof, never \"sent it\": for each action paste one line — \"✓ <what you did> — receipt: <the confirm/receipt URL from that invoke's proof.say_to_user>\" (or \"✗ <what> FAILED: <reason>\" when the response has ran:false / can_act:false / ok:false). N actions → N lines, N receipts. Never claim an action you have no receipt for; never fabricate a URL, count, or outcome.",
  "note": "No capability matched. GET /api/dispatch?registry=1 for the full list, or refine the words.",
  "registry": "https://miscsubjects.com/api/dispatch?registry=1"
}