<!--
Full-page Markdown export (rendered HTML → GFM).
Source: https://neotoma.io/ca/types/contracts
Generated: 2026-04-01T11:48:44.847Z
-->
# 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