Collaborative task list shared by the AI agent and the human reviewer; each task has an assignee baton ("human" or "agent"). RUN FIRST, EVERY SESSION: tasks(operation="list") returns open tasks assigned to the agent — approved categorize tasks in stage "record" (record each with effectiveCategory VERBATIM; the reviewer's decisions are final) plus custom tasks a human delegated. AFTER EVERY QB WRITE for a task: complete with taskNumber + qbTransactionId, or it is re-processed on the next bank-feed cycle. ESCALATE what you are not sure of with create (when: the decide step of getGuide(guideType:"transaction_recording")); a capitalization candidate above the agentMemory policy threshold (default $5,000) always goes to the reviewer. get reads the thread (the reviewer's answers); comment replies; handoff flips the baton; dismiss closes a task that is not actionable. THINGS THAT ARE NOT WHAT THEY LOOK LIKE: (1) A FULL PAGE IS NOT THE WHOLE QUEUE — when list says INCOMPLETE, finish and complete these, then list again. (2) A suggestion is not a decision: record ONLY when effectiveCategory is non-null, which only a human can grant. (3) complete on a bank-linked task writes a PERMANENT recorded marker; no tool clears it, so a wrong qbTransactionId retires work that was never recorded. (4) Dismissing a bank-linked task EXCLUDES its bank transaction (the line stops counting as open work everywhere; bankFeed(action="restore") undoes it) — dismiss means "decided not to record", not "later". To exclude a line that has no task, use bankFeed(action="exclude") directly; never create a task only to dismiss it. ERRORS: getGuide(guideType:"error_recovery", tool:"tasks").
ConnectorOAuth