update_key_result
Update a key result for the company operator and any agent owning KR progress (progress, assignment, due date, rename, measure binding). Use when work moves a Key Result and you need to log current value, reassign, rename, or bind a measure source. Prefer key_result_id — the parent objective is resolved from the KR row (no fuzzy title search). Title match is a fallback; resolution uses the EXISTING title even when renaming in the same call. A missing/archived KR returns one terminal recovery with live alternatives — do not retry the same args.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | YYYY-MM the current_value belongs to (default: this UTC month when current_value is set). Upserts monthly_history; live current becomes the latest month in history. | |
| title | No | New display title for the key result (rename) | |
| due_date | No | Due date (YYYY-MM-DD format) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| start_date | No | Start date (YYYY-MM-DD format) | |
| assigned_to | No | User ID to assign this KR to. Use "me" or "current_user" to assign to the current user. | |
| description | No | What the number is. Read back on get_okrs. | |
| objective_id | No | ID of the parent objective (optional when key_result_id is set — id resolves the parent) | |
| target_value | No | Target value to achieve. 0 is a valid monthly floor. | |
| current_value | No | THIS calendar month's actual unless month is set. Not YTD, not a future projection. FCF: get_financial_summary displayed_net_cash_flow. Amazon deposits: get_monthly_trends Amazon Sales. | |
| key_result_id | No | Stable KR id (preferred). Parent objective is looked up from the KR row across active objectives — do not re-search by fuzzy objective title. | |
| measure_source | No | Bind current progress to a live data source (auto-updated daily by the OKR health sweep). One of: stripe_active_subscribers, stripe_mrr, crm_active_leads. Pass "none" to unbind and return the KR to manual updates. | |
| objective_title | No | Title of the parent objective (optional when key_result_id is set — id resolves the parent) | |
| key_result_title | No | Title of the key result to update (use this OR key_result_id) — matched against the CURRENT title, even when also renaming |