• AI reference · Always listed
propose
Ask for the owner's yes. Use this for what needs the owner's yes; it runs once, after it. file_change and file_delete need base_version (0 if new). Brand and look changes: a file_change to brand.json. No placeholders ([NAME], TODO). Not for: one email to one person (email_person).
Where it is
Always listed: call it by its name.
Does it need a yes?
Needs the owner's yes: it makes a yes card, and nothing happens until the owner taps yes. Here: a proposal for the owner's yes.
Inputs
| Input | Type | Needed | About |
|---|---|---|---|
number | integer | yes | The task number, e.g. 12. · 1 or more |
kind | "email" | "post" | "file_change" | "file_delete" | "people_import" | "invoice_import" | "site_publish" | "post_move" | "department_on" | "company_new" | "record_delete" | "record_put" | "message" | yes | |
title | string | yes | What the owner says yes to, in a few words. |
payload | object | yes | Limits: email subject 200, text 50,000, send_at within 400 days; post text 5,000, title 100, 10 https media_urls (accounts: departments/marketing.md); imports 5,000 rows. Bulk email needs the business address in rules/company-details.md. Give the owner site_publish's goes_live_at. post_move: a future time; sequence: kind email; management and systems are always on. (? optional) email {to, subject, text, separately?, send_at?} or a newsletter {audience: "newsletter", subject, text, send_at?}; post {accounts, text, when, title?, media_urls?, content_item_id?, content_item_version?} (content_item_id and content_item_version both or neither); file_change {path, body, base_version}; file_delete {path, base_version}; people_import {source, count, samples, rows, consent?}; invoice_import {source, count, samples, rows}; site_publish {site, version}; post_move {proposal_id, when}; department_on {department}; company_new {name}; record_delete {module, key, why}; record_put {module, records, why, department?}; message {channel, account_id, people?, conversation_id?, from?, text?, template?}. |
sequence | string | no | funnel-<key>:<n> or lessons:<key>. |
more_after | boolean | no | More follows. |
run_id | string | yes | The run_id from start. Pass it on every call: it keeps your task held. · 1 to 100 characters |
Example
{
"name": "propose",
"arguments": {
"number": 12,
"kind": "email",
"title": "Follow up with Ana",
"payload": {},
"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.