Skip to content

Task Tools


create_task

Create a new global task type (work-category label used across projects, e.g. Design, Development, Admin). Owner only.

Console-only — not reachable from Slack; use the web console.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_name, is_billable (optional, default false)

VERA checks for a case-insensitive duplicate before creating. After creation, VERA will offer to enable the task on a named project if one was mentioned.

Returns: task_id, task_name, is_billable


rename_task

Rename a task globally. The new name appears on all historical time entries immediately. Owner only.

Console-only — not reachable from Slack; use the web console.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, old_name, new_name

Returns: task_id, old_name, new_name, entries_affected


update_task

Update a task's is_billable flag. Owner only. VERA shows a before/after confirmation before calling this tool.

Console-only — not reachable from Slack; use the web console.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_id, is_billable

Archived tasks are rejected as write targets — unarchive first if needed.

Returns: task_id, task_name, is_billable


archive_task

Archive a task so it no longer appears in menus or as a write target. Historical time entries referencing it are preserved. Owner only.

Console-only — not reachable from Slack; use the web console.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_name

Hard fails if the task is currently enabled on any active project — disable it on those projects first. Use unarchive_task to restore.


unarchive_task

Restore an archived task to active status. Owner only.

Console-only — not reachable from Slack; use the web console.

Writes to: 05. Tasks

Parameters: requesting_user_slack_id, task_name


list_tasks

List all task types. Active tasks only by default.

Reads from: 05. Tasks

Parameters: requesting_user_slack_id, include_archived (optional bool)

Returns: array of { id, name, is_billable, status } for each task


set_task_discipline

Attribute a task to a discipline, so time logged against it counts toward that discipline's by-discipline reporting. Owner only.

Console-only — not reachable from Slack; use the web console.

Updates: 05. Tasks

Parameters:

ParamRequiredDescription
requesting_user_slack_id
task_id
discipline_idMust be an active discipline. Empty clears the attribution.

Many tasks can attribute to the same discipline — this is the real attribution link behind Segmentation and Estimates vs. actuals by-discipline reporting. It's a separate thing from a discipline's own suggested-task convenience field (see set_discipline_default_task on the User Tools page), which points the other direction.


set_task_notes

Set a free-text elaboration on a task, kept separate from its short name so tabular Task columns stay narrow. Shown on hover (name — notes) rather than as its own column. Owner only.

Console-only — not reachable from Slack; use the web console. Audit-silent — does not post to the audit channel.

Updates: 05. Tasks

Parameters:

ParamRequiredDescription
requesting_user_slack_id
task_id
notesFree text, max 200 characters. Empty or absent clears the notes.

Set from the per-task Edit modal on /console/tasks, separate from the rename/archive and discipline forms. Never set on task creation — like discipline, notes are added on edit once the task exists.


enable_task_for_project

Enable a task for a specific project, making it available when logging time to that project. Owner or assigned PM (PM-of-project gated — a Manager who is not the PM is denied).

Console-only — not reachable from Slack; use the web console.

Writes to: 06. Project_Tasks

Parameters: requesting_user_slack_id, project_name, task_name, budget_hours (optional), alert_threshold (optional, default 80)

Permission note (updated #1090): Now deterministic (DET). Wired in the extractor (object_nouns: ['task']), resolver (PM-of-project pmOrOwnerGate), and a server-side instant-fire gate in index.js. Non-PM manager denial is deterministic (no model turn). Missing slots fall through to the model.

Natural phrasings: "enable the Design task on CityCore", "turn on the Design task on CityCore".


disable_task_for_project

Disable a task for a specific project. Owner or assigned PM (PM-of-project gated — a Manager who is not the PM is denied).

Console-only — not reachable from Slack; use the web console.

Writes to: 06. Project_Tasks

Parameters: requesting_user_slack_id, project_name, task_name

Permission note (updated #1090): Now deterministic (DET) with a confirm gate. Wired in the extractor (object_nouns: ['task']), resolver (pmOrOwnerGate), and a confirm→fire gate in index.js. "remove the design task from X" routes here — no longer hijacked by delete_entry. Non-PM manager denial is deterministic.

Natural phrasings: "disable the Design task on CityCore", "remove the design task from CityCore", "turn off the Design task on CityCore".