---
title: entherium_get_task
description: READ one task in full by numeric `task_id`, INCLUDING its update log — every status change, reassignment, spec-retarget and note, in time order (who / what / when).
locale: en
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/mcp/tools/entherium_get_task/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

:::note
Generated from the running server (agent capability version `2026-09-03.1`) — do not edit by hand.
:::

READ one task in full by numeric `task_id`, INCLUDING its update log — every status
change, reassignment, spec-retarget and note, in time order (who / what / when). Use it to
check a task's current state and history before acting on it. Returns the task fields plus
`activity: [{at, by, kind, verb, field, old, new, note}]`, or {"error": "task not found"}.
Needs the `manage_task` capability.

**Access:** read-only — safe to call repeatedly, changes nothing

**Available at:** `/mcp/`, `/mcp/readonly/`

_Hints declared to MCP clients (ToolAnnotations)_

| Hint | Value |
| --- | --- |
| `readOnlyHint` | true |
| `destructiveHint` | false |
| `idempotentHint` | true |
| `openWorldHint` | false |

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `task_id` | `integer` | yes | Numeric task id returned by create |


## Example call

Send inside an initialized MCP session (see [Connecting](../../connecting/)). Every parameter is shown with a typed placeholder; drop the optional ones you do not need — but for defect/task tools the QA fields are what keeps a report out of quarantine.

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "entherium_get_task",
    "arguments": {
      "task_id": 1
    }
  }
}
```

## Returns

| Field | Type | Description |
| --- | --- | --- |
| `task_id` | `integer` (optional) | Task id on the board |
| `title` | `string` (optional) |  |
| `status` | `string` (optional) | Board status of the task |
| `assignee` | `string \| null` (optional) | Assignee display name, if any |
| `spec_ref` | `string \| null` (optional) | Feature id the task targets (opaque SPEC-NNN), if any |
| `description` | `string \| null` (optional) |  |
| `updated_at` | `string \| null` (optional) | ISO-8601 time of the last change |
| `note_count` | `integer` (optional) | Number of notes logged on the task (listing only) |
| `last_note_at` | `string \| null` (optional) | ISO-8601 time of the latest note (listing only) |
| `created_at` | `string \| null` (optional) | ISO-8601 creation time |
| `closed_at` | `string \| null` (optional) | ISO-8601 close time, if closed |
| `activity` | `array of object` (optional) | Full time-ordered change log of the task |
| `activity[].at` | `string \| null` | ISO-8601 time of the event |
| `activity[].by` | `string \| null` | Actor display name |
| `activity[].kind` | `string` | Event kind (status change, reassign, note, …) |
| `activity[].verb` | `string \| null` | Human verb for the event |
| `activity[].field` | `string \| null` | Field that changed, if any |
| `activity[].old` | `object` | Previous value, if any |
| `activity[].new` | `object` | New value, if any |
| `activity[].note` | `string \| null` | Note body for note events |
| `error` | `string` (optional) | Present only when the task could not be read |

## If it fails

| Symptom | Cause | Action |
| --- | --- | --- |
| `401` | Token missing/expired | Tokens are issued by the platform owner via `POST /api/v1/auth/agent-token` (superuser-only) — ask for a re-issue. ⚠️ A new token **replaces** your grant set |
| `403` / capability error | Your token lacks the capability or the contract grant | Check `my_capabilities` first; ask the owner for the grant |
