## §OIP SYSTEM ARTICLE — LEADS (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
- **LEADS_DISCOVER** — Find businesses likely to buy peptides wholesale or want white-label, by type and city. Free source (OpenStree
  when: start a new outreach batch for a place.
  args: $1 = segment (medspa | clinic | wellness | gym | supplement), $2 = city, $3 = max results (default 40).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_DISCOVER&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_DISCOVER&body=medspa%7CLos%20Angeles%7C40&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_DISCOVER
- **LEADS_ENRICH** — Visit one lead's website and pull the best contact email. Sets the lead to enriched or no_email.
  when: after discovery, to get an email to reach out to.
  args: $1 = lead id.
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_ENRICH&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_ENRICH&body=12&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_ENRICH
- **LEADS_DRAFT** — Write a wholesale + white-label outreach email for one lead. Saves the draft on the lead. DOES NOT SEND.
  when: after enrich, to prepare the message for Cyrus to approve.
  args: $1 = lead id, $2 = which company it comes from (default miscsubjects).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_DRAFT&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_DRAFT&body=12%7Cmiscsubjects&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_DRAFT
- **LEADS_LIST** — List leads and a count by status (new, enriched, drafted, no_email, sent).
  when: see the outreach pipeline.
  args: $1 = status filter (optional; blank = all).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_LIST&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_LIST&body=drafted&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_LIST
- **LEADS_ENRICH_BATCH** — Enrich the next batch of un-enriched leads in one call (finds emails + context). Bounded so it never fails; ca
  when: after discovery, to fill in emails and context for many leads.
  args: $1 = how many to do this call (default 8, max 10).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_ENRICH_BATCH&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_ENRICH_BATCH&body=10&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_ENRICH_BATCH
- **LEADS_RUN_CITY** — One call = discover a segment in a city, then enrich a batch. The fastest way to grow the pipeline.
  when: add a new city/segment to the pipeline.
  args: $1 = segment (medspa|clinic|wellness|gym|supplement), $2 = city, $3 = discover limit (default 40), $4 = enrich count (default 8).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_RUN_CITY&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_RUN_CITY&body=medspa%7CMiami%7C40%7C8&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_RUN_CITY
- **LEADS_DRAFT_AI** — Grok writes the outreach email for a lead, grounded in the OUTREACH_DOSSIER (brand, team, offer, article+store
  when: draft a real, personalized email instead of the plain template.
  args: $1 = lead id, $2 = brand (default LeoResearch).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_DRAFT_AI&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_DRAFT_AI&body=131%7CLeoResearch&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_DRAFT_AI
- **LEADS_SEND** — Send ONE lead's already-drafted email via miscsubjects email. Only works if the lead is 'drafted' and has an e
  when: Cyrus approved sending and wants one specific lead emailed.
  args: $1 = lead id, $2 = from local-part (default wholesale -> wholesale@miscsubjects.com).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_SEND&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_SEND&body=131%7Cwholesale&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_SEND
- **LEADS_SEND_BATCH** — Send a batch of drafted leads. HARD-GATED — refuses unless the first arg is the exact word CONFIRM. Cap 25.
  when: Cyrus explicitly authorizes a send run. Without CONFIRM it only reports how many are ready.
  args: $1 = CONFIRM (literal), $2 = how many (max 25).
  doc: https://miscsubjects.com/api/dispatch?key=LEADS_SEND_BATCH&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=LEADS_SEND_BATCH&body=CONFIRM%7C20&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=LEADS_SEND_BATCH

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