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 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:

FieldExample
title"Acme Corp - SaaS License Agreement"
counterparty"Acme Corp"
status"active"
effective_date"2026-01-15"
annual_value48000

Fields are flexible - add any property your workflow needs. The schema evolves automatically via progressive schema enforcement.

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#

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#

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 compared across memory models.

Next steps#