27 MCP tools

27 tools for Claude. One REST API for everything else.

Claude Desktop and Claude Code use the MCP server over stdio. Your own apps use the REST API. Both read and write the same SQLite database.

Updated

Built for agents, not forms.

  1. 01

    Typed, not free text

    Every tool has a schema, so the agent sends structured claims instead of prose.

  2. 02

    Same data, two doors

    MCP for Claude, REST for your apps, both on one database.

  3. 03

    Local by default

    One SQLite file on your server, with no hosted service in between.

The tools

Everything the evidence chain needs. Nothing it doesn't.

Evidence tools · 15

Ingest, claim, cite, flag.

Fifteen tools cover the evidence chain: save artifacts, add and supersede observations, write briefs, and open or resolve conflicts.

  • ingest_artifact, get_artifact, list_artifacts
  • add_observation, supersede_observation, retract_observation
  • create_brief, create_conflict, resolve_conflict

Entity tools · 10

Contacts, companies, deals and the links between them.

Ten tools manage entities and relationships, with structured filters, full-text search, graph traversal and the event history of each record.

  • create_entity, update_entity, get_entity, search_entities, archive_entity
  • link_entities, unlink_entities, list_relationships, traverse_graph
  • get_entity_history for every change to a record

REST API

The same records over HTTP.

A JSON API on port 8787 exposes the same entities, claims and conflicts for your own apps and scripts.

  • Filter observations by entity, artifact or lifecycle
  • List conflicts by entity or status
  • Idempotency keys and agent headers on entity writes

What the 27 tools cover.

  • Entities · 5

    Create, update, get, search and archive contacts, companies and deals.

  • Relationships and history · 5

    Link, unlink, list and traverse relationships, and read each record's event history.

  • Artifacts · 3

    Ingest raw evidence and read it back.

  • Observations · 5

    Add, read, list, supersede and retract claims.

  • Briefs and conflicts · 7

    Write briefs that cite, and open, list and resolve conflicts.

  • Import and export · 2

    Move every record in or out as JSON.

Running in three steps.

  1. Clone and install

    Node and npm are all you need.

    git clone https://github.com/Attri-Inc/open-crm.git && cd open-crm && npm install
  2. Seed sample data

    Loads sample contacts, companies and deals.

    cp .env.example .env && npm run seed
  3. Connect Claude

    Run this from the open-crm folder.

    claude mcp add opencrm -e CRM_DB_PATH=$PWD/data/crm.db -- $PWD/node_modules/.bin/tsx $PWD/src/mcp.ts

Every tool, by group.

Names as registered in the MCP server.

GroupToolsCount
Entitiescreate_entity, update_entity, get_entity, search_entities, archive_entity5
Relationshipslink_entities, unlink_entities, list_relationships, traverse_graph4
Historyget_entity_history1
Artifactsingest_artifact, get_artifact, list_artifacts3
Observationsadd_observation, get_observation, list_observations, supersede_observation, retract_observation5
Briefscreate_brief, get_brief, list_briefs3
Conflictscreate_conflict, get_conflict, list_conflicts, resolve_conflict4
Dataexport_data, import_data2

Tool names and counts read from src/mcp.ts in Attri-Inc/open-crm on September 21, 2026.

Questions.

Which MCP transport does it use?

stdio. Claude Desktop and Claude Code start the server as a local process. Remote MCP isn't built yet; Attri sets it up in managed deployments.

Can an agent erase history?

Observations are superseded or retracted, not removed, and artifacts can't be edited. Entities are archived rather than deleted, over MCP and REST. import_data does replace records that share an id, so treat it as an admin tool.

Does it work with agents other than Claude?

Any MCP client that can start a stdio server can use it, and anything that speaks HTTP can use the REST API.

How do I attribute a change to a specific agent?

Send x-agent-id, x-tool-call-id and x-prompt-hash headers when you create, update or archive an entity, or link or unlink a relationship, over REST. They're stored on the event for that change.

Every fact should show its source. Start with the agents you already run.

Run OpenCRM on sample data in minutes, or have Attri deploy it inside your environment with sign-in and connectors.