Give your AI business tools that show their work

An open-source CRM, ledger and AI audit trail. Connect the ones you need to your AI assistant, and every answer points to the source it came from.

Apache 2.0 · Works with Claude, Cursor, VS Code and other MCP clients

Three separate tools. Connect one, or all three.

OpenCRM · sample data

When sources disagree, a person decides.

Sample data. The explorer is part of a deployment Attri runs; the MCP server and REST API are the open-source repo.

A bad posting is refused, with the reason.

Sample books. The explorer is part of a deployment Attri runs; the MCP server and SQLite ledger are the open-source repo.

Every AI session, traced to a person.

Sample data. Claude today; other AI platforms on request.

The problem

Your AI now writes to business systems. Those systems were built for people clicking screens.

They keep the answer, not the source

A field stores a value. When an agent writes it, nobody can see which email or document it came from.

The newest write wins

When two sources disagree, the later one overwrites the earlier one, and the reason for the first value is gone.

Nobody can see what the AI did

Staff and agents use AI across the business with no record of who asked what, on which work, at what cost.

How it works

Your AI calls the tools. The tools keep the record.

Your AI app

Claude Desktop · Claude Code · Cursor · VS Code · Gemini CLI

MCP · stdio
OpenCRM27 MCP tools · TypeScriptSQLite file
OpenLedger15 MCP tools · PythonSQLite file
OpenWatch14 MCP tools · PythonSQLite file
  • ingest_artifact→ email · 3 Sep stored
  • add_observation→ close_date cites the email
  • post_transaction→ refused: debits ≠ credits
  • get_cost_breakdown→ spend by person, this month
  • create_conflict→ two close dates kept open
  • reverse_transaction→ #0118 reverses #0117
  • get_session_detail→ 7f3a.jsonl at byte 48,211
  • get_trial_balance→ debits − credits = 0.00
01

Pick the tools you need

Each tool is a separate open-source project. Start with one; add the others when you need them.

02

Connect them to your AI

Each tool is one entry in your MCP client's config: Claude Desktop, Claude Code, Cursor, VS Code or Gemini CLI. Browser apps like ChatGPT and claude.ai need the tools hosted.

03

Ask

Your AI calls the tools it needs. Every answer cites the email, journal line or log entry behind it.

Setup for every AI app

The tools

The tools. Each one is its own open-source project. Use one, or all three.

When does the renewal close?

Two sources disagree: 15 Oct in the 3 Sep email, 1 Nov on the 9 Sep call. I opened a conflict for review.

via OpenCRM MCP

A CRM where every fact shows its source.

Remembers
Customers, deals and every email or call transcript behind them.
Answers
“What do we know about this account, and which source says so?”
  • TypeScript
  • SQLite
  • 27 MCP tools

Post the $250 cash sale, $248 to revenue.

Refused: debits $250.00 != credits $248.00. Nothing was posted.

via OpenLedger MCP

Books your AI can write to, and can't break.

Remembers
Accounts and double-entry transactions, with an audit row for every write.
Answers
“What did we post, does it balance, and who reversed what?”
  • Python
  • SQLite
  • 15 MCP tools

Which session caused yesterday's cost spike?

Session 7f3a by a.rivera. Source: 7f3a.jsonl at byte 48,211.

via OpenWatch MCP

See what your team did with AI.

Remembers
AI sessions, prompts, tool calls and spend, each tied to a person. Claude today; other AI platforms on request.
Answers
“Who used AI on what, what did it cost, and where is the record?”
  • Python
  • SQLite
  • 14 MCP tools

What's next. Each will be its own open-source project, published when it runs.

  • OperationsIn development

    OpenERP

    Enterprise resource planning your AI can operate.

  • PeopleIn development

    OpenHR

    People, roles and employment history, with each change traced to its source.

  • Agent identityIn development

    OpenAgent

    A register of the agents you run: what each was allowed to do, and what it did.

  • ComplianceIn development

    OpenComply

    Requirements and control evidence, mapped to SOC 2, ISO 42001, GDPR and the EU AI Act.

  • IncidentsIn development

    OpenDesk

    Alerts, logs and deploys turned into an incident record your AI can work through.

  • Agent evalsExploring

    OpenEval

    Every test run kept as a record: what passed, on which version.

  • KnowledgeExploring

    OpenKB

    A knowledge base where every fact carries its source, version and approver.

  • Your domain

    Need one we haven't listed?

    If your AI is starting to write to a system of record, tell us which one.

    Tell Attri

Together

Ask across tools. One question, the calls it takes, and where each answer came from.

Which renewals have an open conflict, and has their revenue been posted?

  1. OpenCRMlist_conflicts
    2 open: Northwind close_date, Keystone budgetemail · 3 Sep, call · 9 Sep
  2. OpenLedgersearch_transactions
    Northwind posted #0204; Keystone not postedjournal #0204

Two renewals have open conflicts. Northwind's revenue is posted (#0204); Keystone's is not, and its budget is still disputed.

What did the team spend on Claude last month, and is it booked?

  1. OpenWatchget_cost_breakdown
    $1,842.60 across 14 peopleusage log · Aug
  2. OpenLedgersearch_transactions
    Software expense #0311, $1,842.60journal #0311

$1,842.60 across 14 people, and it's booked: #0311 to software expense, matching to the cent.

Which Claude sessions this week mentioned the Keystone account?

  1. OpenCRMsearch_entities
    Keystone Labs · accountentity ent_0032
  2. OpenWatchsearch_messages
    3 sessions by 2 peoplec91e.jsonl, 0b7d.jsonl

Three sessions by j.chen and m.okafor. Each one opens at the message that named Keystone.

Before the renewal call: what's disputed, what's been paid, and who has been working on it?

  1. OpenCRMlist_conflicts
    budget: $250k vs $210kemail · 3 Sep, notes · 5 Sep
  2. OpenLedgerget_account_ledger
    2 invoices paid, $84,000journal #0187, #0233
  3. OpenWatchsearch_messages
    a.rivera, 4 sessions7f3a.jsonl

The budget is disputed ($250k in the email, $210k in the notes). $84,000 is paid across two invoices. a.rivera has four sessions on it this week.

Sample data. The tool names are real.

Compared with today

A form trusts the person typing. These tools check the AI writing.

Business software was built for people clicking screens. When an AI does the writing, the record has to say where each fact came from and refuse what doesn't add up.

Business software today

Built for people typing into forms

  • Stores the valueWhere it came from isn't part of the record.
  • The newest write winsWhen two sources disagree, one value is left standing.
  • Edits in placeA correction replaces the old number.
  • Checks live in the formAn AI writing through an API skips them.
  • AI use is invisibleNo record of who asked what, on which work.

Open Tooling

Built for your AI to write to

  • Stores the claim and its sourceEvery observation cites the artifact it came from.
  • Disagreements stay openBoth claims are kept until a person resolves them.
  • Corrections are reversalsThe original stays; a new entry undoes it.
  • Rules checked on every writeAn unbalanced posting is refused, whoever sends it.
  • Every AI session tied to a personPrompts, tool calls and spend, with the log line behind them.

Use cases

Where teams start. Pick the question your team has to answer.

Legal teams

Where did every fact in this brief come from?

Your team drafts with AI now. Every fact in a draft has to hold up when someone asks where it came from, and two sources often disagree.

  • Your AI files the source ingest_artifact
  • Each fact links to its source add_observation
  • Disagreements stay open create_conflict
See how it works for legal
Your AI

What notice period did we agree for termination, and where does it come from?

  1. search_entitiesOpenCRM
  2. list_observationsOpenCRM
  3. create_conflictOpenCRM

Two sources disagree: 30 days in the signed agreement, 60 days in the 12 Aug email. I opened a conflict so someone can confirm which applies.

Finance teams

Can an AI post to the books without breaking them?

Letting an AI write to the books is only safe if the books refuse bad entries on their own, and keep a record of every change.

  • Every posting is checked post_transaction
  • Mistakes are reversed, not edited reverse_transaction
  • Every write is audited get_audit_log
See how it works for finance
Your AI

Post the March software invoice: $1,200 to software expense, paid from operating cash.

  1. list_accountsOpenLedger
  2. post_transactionOpenLedger

Posted: debit Software $1,200.00, credit Cash $1,200.00. It balances, and the audit row was written with it.

Compliance and risk teams

Which staff used AI on this work, and can we prove it?

Staff use AI across the business. When someone asks who did what, on which work, you need a record, not a recollection.

  • Sessions are recorded on each machine list_sessions
  • Chat activity is synced get_compliance_activities
  • Every event keeps its address get_session_detail
See how it works for compliance
Your AI

Who used Claude on the Q3 audit files this week?

  1. search_messagesOpenWatch
  2. list_sessionsOpenWatch

Two people, three sessions. Each one links to its source log and byte offset.

Run it

Two ways to run it

The tools are free. Running them for a whole team, inside a regulated business, is the work Attri does.

Run it yourself

Free
  • Clone the repositories and run them on your machine
  • Connect them to Claude Desktop, Claude Code, Cursor, VS Code or Gemini CLI
  • Data stays in SQLite files you control

Attri runs it for your team

Managed
  • Deployed and operated inside your own cloud account
  • Login and permissions added in front (none of the tools ships its own)
  • Remote access, so everyone can use them from browser apps like claude.ai and ChatGPT
  • Connectors to your systems, and retention rules

Login and permissions

None of the tools ships its own login. We put yours in front, so each person sees what they should.

Access from browser apps

claude.ai and ChatGPT only connect to hosted tools. We host them so the whole team can use them from the browser.

Your cloud account

Everything runs in an account you own. We operate it; you keep the keys.

Connectors and retention

Links into the systems your team already uses, and rules for how long records are kept.

Open source

Read the code. Run it today. Each tool installs from its own README.

git clone https://github.com/Attri-Inc/open-crm.git
cd open-crm
npm install
cp .env.example .env
npm run seed
27
MCP tools
TypeScript
Language
Apache 2.0
License
git clone https://github.com/Attri-Inc/open-ledger.git
cd open-ledger
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python scripts/seed.py
15
MCP tools
Python
Language
Apache 2.0
License
git clone https://github.com/Attri-Inc/openwatch.git
cd openwatch
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
python scripts/seed.py
14
MCP tools
Python
Language
Apache 2.0
License

The seed step loads sample data. Your own data, login and connectors come with an Attri deployment.

Who it's for

Who it's for. The person who sets it up, and the person who has to sign off on it.

You set it up

Engineers and AI leads

  • Clone it, load the sample data and connect it to your AI
  • Read every line: TypeScript and Python you run yourself
  • Fork it and change it; Apache 2.0
View on GitHub

Start with one tool. Connect it to your AI today.

Clone it from GitHub and add it to your MCP client. When your team needs it hosted, with login, talk to Attri.