OIP capability: BLOOIO_SEND_MESSAGE
BLOOIO_SEND_MESSAGE
This is one executable OIP object. It is the leaf where prose stops and exact invocation begins.
Low-level Blooio send. ADVANCED — needs a channel_id (ch_..., from list_channels) plus to/text.
Parent system: Blooio (messaging). Root: /a/oip. Machine doc: /api/dispatch?key=BLOOIO_SEND_MESSAGE&format=markdown. Invocation history: /api/invocations?object_id=BLOOIO_SEND_MESSAGE.
Invoke
Example: to text Cyrus use SEND_BY_CHANNEL — [SEND_BY_CHANNEL]blooio|+14155480666|hi[/SEND_BY_CHANNEL]
Run URL: https://miscsubjects.com/api/dispatch?invoke=BLOOIO_SEND_MESSAGE&body=blooio%7C%2B14155480666%7Chi&share=<TOKEN>
Auth: none. Risk: low.
Machine contract
- Read this article first; do not infer the row shape from memory.
- If acting with a URL-only tool, open run_now after replacing placeholder args.
- If the call returns ran:false or proof.ok:false, read the receipt and repair the failed invocation instead of narrating success.
- If the token denies the call, report the denial exactly; do not switch to a broader action unless the owner supplied a broader token.
Troubleshooting
- unknown key - Use the did_you_mean links or ask URL; never guess another key.
- argument/body mismatch - Read inputs/example_args here, then retry with repairs: inv_ID so lineage closes.
- expired or corrupted token - Report token_expired/token_corrupted from the response; owner mints a fresh scoped link.
- tool returned ok:false / exit nonzero - Do not call it sent. Read the receipt, correct the body, fire a repair.
Receipt loop
After any action, open the receipt. If it is wrong, repair it with POST /api/dispatch {key, body, repairs:"inv_ID"}. If you need to repeat the exact recorded call, replay it with POST /api/dispatch {replay:"inv_ID"}.
Full generated capability doc
§SELF — miscsubjects capability (paste without context)
Principle: Self-explaining payload — no external context required. This _self block is the capability: what it is, how to run it, how to change it, and where to look next. Path: OIP > BLOOIO > BLOOIO_SEND_MESSAGE Capability: BLOOIO_SEND_MESSAGE — Low-level Blooio send. ADVANCED — needs a channel_id (ch_..., from list_channels) plus to/text. When to use: only when you ALREADY have a channel_id. To just text Cyrus, use SEND_BY_CHANNEL instead. RUN NOW (open this URL): https://miscsubjects.com/api/dispatch?invoke=BLOOIO_SEND_MESSAGE&body=blooio%7C%2B14155480666%7Chi&share=<TOKEN> Example call: to text Cyrus use SEND_BY_CHANNEL — [SEND_BY_CHANNEL]blooio|+14155480666|hi[/SEND_BY_CHANNEL]
- type · runner: tool · fn · blooio
- run it: Open run_now (URL, fires the example), or POST https://miscsubjects.com/api/dispatch {"key":"BLOOIO_SEND_MESSAGE","body":"blooio|+14155480666|hi"}. From the router: to text Cyrus use SEND_BY_CHANNEL — [SEND_BY_CHANNEL]blooio|+14155480666|hi[/SEND_BY_CHANNEL]
- inputs: {"type":"object","properties":{"channel_id":{"type":"string","description":"Channel id (ch_...) to send from. Required."},"to":{"type":"string","description":"Recipient phone (E.164) or email. Comma-separate or use array for multiple."},"text":{"type":"string","description":"Message text (optional if attachments/content given)."},"attachments":{"type":"array","items":{"type":"string"},"description":"Public URLs of images/videos/files to attach."},"content":{"type":"object","description":"Advanced: full v4 content object ({type:'text'|'media'|'multipart'|'rich_link', ...}). Overrides text/attachments."},"reply_to":{"type":"string","description":"Message id to reply to (threaded reply)."},"effect":{"type":"string","description":"iMessage screen/bubble effect for text (Blooio)."},"link_preview":{"type":"object","description":"Link preview override for a text URL ({ imageUrl?, title? })."},"dry_run":{"type":"boolean","description":"Validate and route only; do not send."},"idempotencyKey":{"type":"string","description":"Optional key for safe retries."}},"required":["channel_id","to"],"additionalProperties":false}
- outputs: { ok, result, invocation, yield, _self } — result is this object's output; yield is tokens/cost/material; invocation is the ledgered record.
- auth · risk: none · low
Machine Contract
- Read this article first; do not infer the row shape from memory.
- If acting with a URL-only tool, open run_now after replacing placeholder args.
- If the call returns ran:false or proof.ok:false, read the receipt and repair the failed invocation instead of narrating success.
- If the token denies the call, report the denial exactly; do not switch to a broader action unless the owner supplied a broader token.
Invocation, Ledger, Repair
- root tree: https://miscsubjects.com/api/dispatch?map=1&format=markdown
- parent system article: https://miscsubjects.com/api/dispatch?map=BLOOIO&format=markdown
- append-only ledger: https://miscsubjects.com/api/invocations?object_id=BLOOIO_SEND_MESSAGE
- receipt pattern: https://miscsubjects.com/api/dispatch?receipt=inv_ID&share=<TOKEN>
- replay: POST /api/dispatch {"replay":"inv_ID"}
- repair: POST /api/dispatch {"key":"BLOOIO_SEND_MESSAGE","body":"corrected args","repairs":"inv_ID"}
Troubleshooting
- unknown key — Use the did_you_mean links or ask URL; never guess another key. · https://miscsubjects.com/api/dispatch?ask=BLOOIO_SEND_MESSAGE
- argument/body mismatch — Read inputs/example_args here, then retry with repairs: inv_ID so lineage closes. · https://miscsubjects.com/api/dispatch?key=BLOOIO_SEND_MESSAGE
- expired or corrupted token — Report token_expired/token_corrupted from the response; owner mints a fresh scoped link. · https://miscsubjects.com/api/dispatch?explain=1&share=<TOKEN>
- tool returned ok:false / exit nonzero — Do not call it sent. Read the receipt, correct the body, fire a repair. · https://miscsubjects.com/api/dispatch?receipt=inv_ID&share=<TOKEN>
Logical proof (verify each step)
- Every capability is an invokable object with its own _self — this block. → https://miscsubjects.com/api/dispatch?key=BLOOIO_SEND_MESSAGE
- You run it by POSTing to /api/dispatch; in a model turn the router tag is [BLOOIO_SEND_MESSAGE]args[/BLOOIO_SEND_MESSAGE]. → https://miscsubjects.com/api/dispatch?registry=1
- Every invocation is ledgered with actor, cost, and material/waste. → https://miscsubjects.com/api/invocations?object_id=BLOOIO_SEND_MESSAGE
- You can ask the build for capabilities in plain language. → https://miscsubjects.com/api/dispatch?ask=Low-level%20Blooio%20send.%20ADVANCED%20%E2%80%94%20needs%20
- The whole build is one self-describing map, with the terminal key. → https://miscsubjects.com/api/dispatch?build=1
Where to look next
- registry — Every capability, self-describing · https://miscsubjects.com/api/dispatch?registry=1
- ask — Ask the build what to use, in plain language · https://miscsubjects.com/api/dispatch?ask=<question>
- history — This capability's invocation history — its edges · https://miscsubjects.com/api/invocations?object_id=BLOOIO_SEND_MESSAGE
- build — The whole build as one map (terminal key) · https://miscsubjects.com/api/dispatch?build=1
Self-explaining. Not project knowledge — fetch specifics from the links above.