The three write patterns
Data rows have three write tools — pick by whether you’re editing, inserting, or upserting:
Full parameter detail is in Row Write Tools.
Readable ≠ writable
A field appearing indata_view_list is not proof you can write it. Some columns are read-only projections, labels, or computed values even though they’re visible.
Live example — on products:
products.product_familyaccepts an update (dry_runreturns VALID).products.product_family_labelis rejected with"No updatable columns provided".
dry_run: true first for any unfamiliar or sensitive field instead of probing with a real write. A dry-run tells you VALID or the exact rejection with no side effect.
Richer per-field capability flags (a machine-readable “writable” marker on each column) are on the roadmap. Until then, a
dry_run is the reliable way to learn whether a specific column accepts writes.The dry-run convention
dry_run previews a write — it validates (and where supported, shows the planned change) without committing. It is available on:
- Data writes —
data_row_update,data_row_create,data_row_save agent_updateagent_schedule_manage- Mission draft & control tools (see Mission Recipes)
dry_run to commit. After committing, verify — re-read the row or re-run the query to confirm the new value landed.
Replacement vs additive
Some updates add to a set; others replace the whole set. Getting this wrong silently deletes data. The same caution applies to any array or object field on any update tool: treat an update array as a full replacement unless the tool explicitly says it merges. When you only mean to add or remove one item, read the current set first, or use the dedicated additive tool if one exists.The human gate
Some actions must be decided by a person. You may prepare and preview them, but you may not decide them.agent_runcreates a pending approval — it does not silently execute the agent. Present it and wait.approval_resolveandmission_approve_stepmay be called only when the human actually decided. Never approve on your own judgment or because it “seems fine”.mission_cancel,mission_pause,mission_resume, andmission_budget_increasefollow preview → confirm: show what the action will do, get the human’s explicit go-ahead, then commit.
