## §OIP SYSTEM ARTICLE — Browser automation (9 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
- **BROWSER_PLAYWRIGHT** — Run a Playwright CLI command on the Mac (npx -y playwright …). g. "screenshot https://x.com /tmp/x.png". First
  when: you need to browser playwright
  args: the playwright arguments, e
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_PLAYWRIGHT&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_PLAYWRIGHT&body=%3Cthe%20playwright%20arguments%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_PLAYWRIGHT
- **BROWSER_USE** — Run the browser-use agent (AI browser driver). NOT INSTALLED YET — pip3 install --user browser-use + an API ke
  when: you need to browser use
  args: task
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_USE&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_USE&body=%3Ctask%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_USE
- **BROWSER_MARKDOWN** — Get the markdown of a URL via Cloudflare Browser Rendering. $1=account_id, $2=JSON body {url}. Returns the ren
  when: "fetch as markdown <url>" or "what does <url> say"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_MARKDOWN&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_MARKDOWN&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_MARKDOWN
- **BROWSER_SCREENSHOT** — Get a PNG screenshot of a URL via Cloudflare Browser Rendering. $1=account_id, $2=JSON body {url, screenshotOp
  when: "screenshot <url>"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_SCREENSHOT&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_SCREENSHOT&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_SCREENSHOT
- **BROWSER_PDF** — Render a URL as PDF via Cloudflare Browser Rendering. $1=account_id, $2=JSON body {url}. Returns binary PDF
  when: "save <url> as PDF"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_PDF&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_PDF&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_PDF
- **BROWSER_LINKS** — Extract all links from a URL via Cloudflare Browser Rendering. $1=account_id, $2=JSON body {url}
  when: "what links does <url> have"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_LINKS&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_LINKS&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_LINKS
- **BROWSER_SCRAPE** — Extract structured data by selectors via Cloudflare Browser Rendering. $1=account_id, $2=JSON body {url, eleme
  when: "scrape <selector> from <url>"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_SCRAPE&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_SCRAPE&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_SCRAPE
- **BROWSER_JSON** — Extract LLM-structured JSON from a URL via Cloudflare Browser Rendering. $1=account_id, $2=JSON body {url, pro
  when: "pull <fields> as json from <url>"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_JSON&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_JSON&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_JSON
- **BROWSER_FETCH** — 
  doc: https://miscsubjects.com/api/dispatch?key=BROWSER_FETCH&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=BROWSER_FETCH&body=%3Carg1%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=BROWSER_FETCH

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