<!--
  Full-page Markdown export (rendered HTML → GFM).
  Source: https://neotoma.io/ca/types/tasks
  Generated: 2026-04-01T11:48:42.118Z
-->
# Tasks

Obligations, deadlines, habits, and goals - tracked across sessions. Tasks in Neotoma are versioned: status changes, reassignments, and deadline shifts are recorded as observations, not overwrites.

## Store[#](#store)

Store a task with any fields that describe it. Neotoma auto-discovers the schema from the first observation - no migration required.

MCP

store\_structured({ entities: \[ { entity\_type: "task", title: "Review API rollout plan", status: "open", priority: "high", due\_date: "2026-04-15", assigned\_to: "Sarah Chen" } \], idempotency\_key: "task-review-api-rollout-1710268800" })

CLI

neotoma store --json='\[{ "entity\_type": "task", "title": "Review API rollout plan", "status": "open", "priority": "high", "due\_date": "2026-04-15", "assigned\_to": "Sarah Chen" }\]'

REST API

curl -X POST http://localhost:3080/api/store \\ -H "Content-Type: application/json" \\ -d '{ "entities": \[{ "entity\_type": "task", "title": "Review API rollout plan", "status": "open", "priority": "high", "due\_date": "2026-04-15", "assigned\_to": "Sarah Chen" }\] }'

Common fields for `task`:

| Field | Example |
| --- | --- |
| title | "Review API rollout plan" |
| status | "open" |
| priority | "high" |
| due\_date | "2026-04-15" |
| assigned\_to | "Sarah Chen" |

Fields are flexible - add any property your workflow needs. The schema evolves automatically via [progressive schema enforcement](/schema-management).

## Retrieve[#](#retrieve)

Query tasks by type, search by keyword, inspect version history, and traverse relationships.

CLI

\# List open tasks neotoma entities list --type task # Search by keyword neotoma entities search --query "API rollout" --type task # See how a task changed over time neotoma observations list --entity-id <entity\_id> # Find who a task is linked to neotoma relationships list --entity-id <entity\_id>

MCP

// Find by title retrieve\_entity\_by\_identifier({ identifier: "Review API rollout plan", entity\_type: "task" }) // List recent tasks retrieve\_entities({ entity\_type: "task", limit: 20 }) // Check observation history list\_observations({ entity\_id: "<entity\_id>" })

## What your agent can answer[#](#example-queries)

With tasks stored in Neotoma, your agent can answer questions like:

-   “What tasks are due this week?”
-   “Show the history of status changes for the API rollout task”
-   “Which tasks are assigned to Sarah?”

## What Neotoma guarantees[#](#guarantees)

Every task stored in Neotoma gets the same set of integrity guarantees:

-   Versioned history - Every change creates a new version. Previous states are always accessible.
-   Deterministic state - Same observations always produce the same entity snapshot.
-   Auditable provenance - Every field traces back to the observation that set it.
-   Schema validation - Fields conform to the discovered or defined schema.

See all [memory guarantees](/memory-guarantees) compared across memory models.

## Next steps[#](#next-steps)

-   [Install Neotoma](/install) \- get started in 5 minutes
-   [Walkthrough](/developer-walkthrough) \- full multi-session example
-   [Personal data use case](/personal-data) \- see how tasks fit into a broader workflow