Transactions

Payments, receipts, invoices, and ledger entries - versioned, not overwritten. Financial records in Neotoma maintain full provenance: every correction, reconciliation, and status change is a new observation.

Store#

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

MCP

store_structured({ entities: [ { entity_type: "transaction", description: "Monthly hosting - AWS", amount: -284.50, currency: "USD", date: "2026-03-01", category: "infrastructure", account: "business-checking" } ], idempotency_key: "txn-aws-march-2026" })

CLI

neotoma store --json='[{ "entity_type": "transaction", "description": "Monthly hosting - AWS", "amount": -284.50, "currency": "USD", "date": "2026-03-01", "category": "infrastructure", "account": "business-checking" }]'

REST API

curl -X POST http://localhost:3080/api/store \ -H "Content-Type: application/json" \ -d '{ "entities": [{ "entity_type": "transaction", "description": "Monthly hosting - AWS", "amount": -284.50, "currency": "USD", "date": "2026-03-01", "category": "infrastructure", "account": "business-checking" }] }'

Common fields for transaction:

FieldExample
description"Monthly hosting - AWS"
amount-284.50
currency"USD"
date"2026-03-01"
category"infrastructure"

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

Retrieve#

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

CLI

# List recent transactions neotoma entities list --type transaction # Search by description neotoma entities search --query "AWS" --type transaction # Trace corrections and reconciliation history neotoma observations list --entity-id <entity_id> # Find linked invoices or receipts neotoma relationships list --entity-id <entity_id>

MCP

// Search by keyword retrieve_entity_by_identifier({ identifier: "Monthly hosting - AWS", entity_type: "transaction" }) // List transactions retrieve_entities({ entity_type: "transaction", limit: 50 }) // Timeline view list_timeline_events({ entity_type: "transaction", start_date: "2026-03-01", end_date: "2026-03-31" })

What your agent can answer#

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

  • “How much did we spend on infrastructure in March?”
  • “Show all corrections to the AWS hosting charge”
  • “Which transactions are linked to the Acme Corp account?”

What Neotoma guarantees#

Every transaction 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#