updateTask
Update a task, or many tasks in one call. A task is the same kind of record as an improvement (one with is_task=true), so this is a thin alias over updateImprovement: every field on updateImprovement is supported, including checklist, acceptance_criteria, dates, owner, percent_complete, parentIte...
This record as markdown: /tools/io-stablebaseline-sb/updatetask.md
What updateTask does on Stable Baseline
AI agents use updateTask to create or update resources in Stable Baseline, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Stable Baseline environment.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | — | Changing the type converts the task and its id takes the new type's prefix, keeping its number (TAS-12 becomes STY-12 as a user_story): the answer's note then g |
items | array | — | Optional bulk form: update up to 200 tasks in one call, each entry { taskId, versionTimestamp, ...the fields to change } with the same fields as a single call. |
title | string | — | |
fields | array | — | Optional. Answer with only these fields instead of the whole task, for example ["id", "versionTimestamp"]. Any of the task's own fields (snake_case or camelCase |
planId | string | — | Optional. Narrows a friendly-id lookup (such as TAS-55) to one plan, given as the plan's UUID or friendly id (such as PLN-3): the task must be in that plan. It |
status | string | — | |
taskId | string | — | Required unless you send items. The task's UUID or friendly id (such as TAS-55). |
plan_id | string | — | Link to plan. Null to unlink. |
urgency | string | — | |
why_now | string | — | |
end_date | string | — | YYYY-MM-DD. |
metadata | object | — | Free-form JSON. MERGES into the stored object key by key: keys you don't send are left alone, and sending a key with value null deletes it. Send metadata_replac |
Parameters from the server's own tool schema.
Why updateTask is rated Medium
An AI agent can call updateTask faster than any human can review: one bad instruction and it creates or modifies resources in Stable Baseline by the hundred, each call as confident as the last.
Risk signalsHigh parameter count (144 properties) · Bulk/mass operation — affects multiple targets
Attacks that exploit this kind of access
The rule that runs updateTask safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Stable Baseline, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For updateTask, this is the rule to start with:
updateTask stays usable, but capped: an agent stuck in a loop can't make hundreds of changes a minute. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect Stable Baseline, apply this rule, and every updateTask call is checked against it from then on.
Questions about updateTask
Update a task, or many tasks in one call. A task is the same kind of record as an improvement (one with is_task=true), so this is a thin alias over updateImprovement: every field on updateImprovement is supported, including checklist, acceptance_criteria, dates, owner, percent_complete, parentItemId (the story or requirement it belongs to in the work hierarchy), linkedRecords (the database rows it links: a list replaces them, { add, remove } changes some), etc. versionTimestamp (optimistic locking) is the task's updated_at in epoch milliseconds, and you rarely need a getTask call for it: listTasks and getPlan (items[].versionTimestamp) return it for every task in a plan at once, and every write returns the task's new one. Pass fields (for example ["id", "versionTimestamp"]) for a short answer instead of the whole task. To change many tasks (a plan-wide re-date, say), send items: up to 200 entries of { taskId, versionTimestamp, ...changes } per call (more than 200: split them into several calls of up to 200), each checked and written on its own and answered with one row per entry plus a summary. Statuses are captured / in_progress / blocked / done / rejected / deferred, and FOUR of those are CLOSED: blocked, done, rejected, deferred. Entering one needs its comment (blocked_comment / rejection_comment / completion_comment); leaving one for an open status needs reopened_comment, including blocked -> in_progress, which surprises people because blocked does not sound terminal. metadata MERGES into what is stored (null on a key deletes it); pass metadata_replace:true to overwrite the object wholesale. To edit checklist items: call getTask, modify the checklist array (preserving each row's id to keep its attribution stamps), and pass the full array back here; array order is the sort order. Assignment: pass owner_id=<uuid> to assign to a user, owner_team_id=<uuid> to assign to a team (mutually exclusive: a task has one owner, a user or a team, never both). To unassign, pass owner_id=null AND owner_team_id=null. To switch owner kind, send the new value AND null the old one in the SAME call. It is categorised as a Write tool in the Stable Baseline MCP Server, which means it can create or modify data. Consider rate limits to prevent runaway writes.
updateTask accepts 12 parameters: type, items, title, fields, planId, status, taskId, plan_id, urgency, why_now, end_date, metadata. The full parameter table on this page comes from the server's own tool schema.
Register the Stable Baseline MCP server in PolicyLayer and add a rule for updateTask: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Stable Baseline. Nothing to install.
updateTask is a Write tool with medium risk. Write tools should be rate-limited to prevent accidental bulk modifications.
Yes. Add a rate_limit block to the updateTask rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for updateTask. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
updateTask is provided by the Stable Baseline MCP server (https://api.stablebaseline.io/functions/v1/cloud-serve/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Stable Baseline, and thousands of servers like it.
This server
Across the catalogue