## §OIP SYSTEM ARTICLE — Google Workspace (8 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
- **GOOGLE_DRIVE_LIST** — List Google Drive files. $1=optional folder id or query (blank = root)
  when: find a file before downloading
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_DRIVE_LIST&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_DRIVE_LIST&body=%3Csee%20content%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_DRIVE_LIST
- **GOOGLE_DRIVE_GET** — Download Google Drive file content as plain text. $1=file id. Use after GOOGLE_DRIVE_LIST
  when: you need to google drive get
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_DRIVE_GET&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_DRIVE_GET&body=%3Csee%20content%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_DRIVE_GET
- **GOOGLE_SHEETS_GET** — Read a Google Sheet range as 2D JSON. $1=sheet id, $2=A1 range (e.g. Sheet1!A1:Z100)
  when: reporting tables
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_SHEETS_GET&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_SHEETS_GET&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_SHEETS_GET
- **GOOGLE_SHEETS_APPEND** — Append a row to a Google Sheet. $1=sheet id, $2=tab name, $3=JSON array of values
  when: log
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_SHEETS_APPEND&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_SHEETS_APPEND&body=%3Csee%20content%3E%7C%3Carg2%3E%7C%3Carg3%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_SHEETS_APPEND
- **GOOGLE_CALENDAR_LIST** — Upcoming Google Calendar events. $1=calendar id (or "primary"), $2=optional ISO start
  when: answer "what is on my calendar"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_CALENDAR_LIST&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_CALENDAR_LIST&body=%3Csee%20content%3E%7C%3Carg2%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_CALENDAR_LIST
- **GOOGLE_CALENDAR_CREATE** — Create a Google Calendar event. $1=calendar id, $2=title, $3=ISO start, $4=ISO end
  when: add a meeting
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_CALENDAR_CREATE&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_CALENDAR_CREATE&body=%3Csee%20content%3E%7C%3Carg2%3E%7C%3Carg3%3E%7C%3Carg4%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_CALENDAR_CREATE
- **GOOGLE_TASKS_LIST** — List Google Tasks. $1=optional task list id
  when: answer "what is on my todo list"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_TASKS_LIST&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_TASKS_LIST&body=%3Csee%20content%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_TASKS_LIST
- **GOOGLE_TASKS_ADD** — Add a Google Task. $1=optional list id, $2=title, $3=optional notes
  when: the user says "add to my todos"
  args: see content
  doc: https://miscsubjects.com/api/dispatch?key=GOOGLE_TASKS_ADD&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=GOOGLE_TASKS_ADD&body=%3Csee%20content%3E%7C%3Carg2%3E%7C%3Carg3%3E&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=GOOGLE_TASKS_ADD

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