• AI reference · Always listed

write

Write a file. Write a folder file on your task: .md or .json (templates/ also .html), body up to 200,000 characters. sites/ files change only through deploy_site. Customer emails and phone numbers go in people or records, never files. Core files (AGENTS.md, company.json, direction.md, brand.json, rules/, templates/, connectors/, move-in.md, skills/, departments/<id>.md, its roles.md and its goals.md) need the owner's yes: propose them.

Where it is

Always listed: call it by its name.

Does it need a yes?

Depends on what it changes: the everyday part runs at once, anything that reaches people or core files waits for the owner's yes. Here: folder notes and drafts are busywork; core files, skills and department pages wait for the yes.

Inputs

InputTypeNeededAbout
pathstringnoe.g. marketing/drafts/2026-10-21.md. · 1 to 200 characters
bodystringnoThe whole new file.
base_versioninteger or stringnoThe version read gave you (0 for a new file).
notestringnoWhat changed, in a few words.
starterstringnoInstead of path and body: a packed starter in the folder. For example skills/reel/references/starter.md; its files go to `to` on your machine without passing through this chat. · 1 to 200 characters
tostringnoWith starter: a new folder's full path. · 1 to 500 characters
taskintegernoThe task you hold. Needed for every write to the company folder, not for unpacking a starter. · 1 or more
run_idstringyesThe run_id from start. Pass it on every call: it keeps your task held. · 1 to 100 characters

Example

{
  "name": "write",
  "arguments": {
    "run_id": "the run_id from start"
  }
}

When it is refused

  • invalid: The input isn't right. The sentence names the field and the fix; nothing was done. Fix it and call again.
  • not_found: No such thing in this company (a task, file, person, record). Check the number or name, or list first.
  • not_allowed: Not without another step: the owner's yes, your own task held with pick_up, or a setting the owner turns on. The sentence says which.
  • taken: Someone else holds it (another AI on that task). Pick another task.
  • stale: It changed since you read it. Read it again and use the new version.
  • failed: On our side or a service's, never your input. Try again in a minute; if it keeps failing, call report_problem.