<!--
  Full-page Markdown export (rendered HTML → GFM).
  Source: https://neotoma.io/zh/types/contracts
  Generated: 2026-04-01T11:48:44.949Z
-->
# Contracts

Agreements, clauses, and amendments - reconstructable on any date. Contracts in Neotoma capture the full lifecycle: initial terms, amendments, renewals, and terminations, each timestamped and attributed.

## Store[#](#store)

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

MCP

store\_structured({ entities: \[ { entity\_type: "contract", title: "Acme Corp - SaaS License Agreement", counterparty: "Acme Corp", status: "active", effective\_date: "2026-01-15", renewal\_date: "2027-01-15", annual\_value: 48000, currency: "USD" } \], idempotency\_key: "contract-acme-saas-2026" })

CLI

neotoma store --json='\[{ "entity\_type": "contract", "title": "Acme Corp - SaaS License Agreement", "counterparty": "Acme Corp", "status": "active", "effective\_date": "2026-01-15", "renewal\_date": "2027-01-15", "annual\_value": 48000, "currency": "USD" }\]'

REST API

curl -X POST http://localhost:3080/api/store \\ -H "Content-Type: application/json" \\ -d '{ "entities": \[{ "entity\_type": "contract", "title": "Acme Corp - SaaS License Agreement", "counterparty": "Acme Corp", "status": "active", "effective\_date": "2026-01-15", "renewal\_date": "2027-01-15", "annual\_value": 48000, "currency": "USD" }\] }'

Common fields for `contract`:

| Field | Example |
| --- | --- |
| title | "Acme Corp - SaaS License Agreement" |
| counterparty | "Acme Corp" |
| status | "active" |
| effective\_date | "2026-01-15" |
| annual\_value | 48000 |

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

## Retrieve[#](#retrieve)

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

CLI

\# List all contracts neotoma entities list --type contract # Search by counterparty neotoma entities search --query "Acme Corp" --type contract # View amendment and renewal history neotoma observations list --entity-id <entity\_id> # Find linked clauses or amendments neotoma relationships list --entity-id <entity\_id>

MCP

// Find by identifier retrieve\_entity\_by\_identifier({ identifier: "Acme Corp - SaaS License Agreement", entity\_type: "contract" }) // List active contracts retrieve\_entities({ entity\_type: "contract", limit: 20 }) // Reconstruct state at a past date retrieve\_entity\_by\_identifier({ identifier: "Acme Corp - SaaS License Agreement", entity\_type: "contract", as\_of: "2026-06-01" })

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

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

-   “What were the terms of the Acme contract when we signed?”
-   “Which contracts renew in the next 90 days?”
-   “Show all amendments to the SaaS license agreement”

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

Every contract 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
-   [Contracts use case](/contracts) \- see how contracts fit into a broader workflow