Update a goal
goalslot_update_goalUpdate an existing goal's fields, including status (ACTIVE, COMPLETED, PAUSED), title, deadline, category, and target hours. Logged hours are adjusted only through time entries, not here.
Instructions
WRITES. Updates fields on an existing goal, including its status. There is deliberately no way to set loggedHours here. Logged hours are accumulated from time entries; to change them, add or correct a time entry with log_time. There is no archived status. PAUSED is how the user shelves a goal without deleting it. Deleting a goal is not available as a tool at all; tell the user to run the CLI if they want one gone. Only send the fields that should change.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | New hex color such as #3B82F6. | |
| title | No | New goal name. | |
| goalId | Yes | Goal id from list_goals. Never construct or guess an id. | |
| status | No | Goal status. One of ACTIVE, COMPLETED, PAUSED. There is no archived state; PAUSED is how a goal is shelved. | |
| category | No | A category value string, not a display name and not an id. It must be one of the values from get_context.categories[].value, for example DEEP_WORK or LEARNING. An unknown value does not error, it silently produces an uncategorized record, so read get_context first. | |
| deadline | No | New deadline for the goal. Calendar date as YYYY-MM-DD, for example 2026-08-25, interpreted in the user's timezone (get_context.timezone). Never include a time or a Z suffix. Use get_context.today rather than assuming what today is. | |
| description | No | New longer description. | |
| targetHours | No | New target in HOURS, minimum 1. |