Your agents, plugged in
An MCP server is built in. Claude (OpenAI and the rest soon) reads, searches and writes contacts and deals through the same scoped API your team uses, with an API key your owner can revoke.
Contacts, companies, deals and activities for a real place of business. MCP in, a Rust engine for the heavy lifting, sync across the office, signed webhooks out, and every row yours to export or delete. Light on the bill, warm on the eyes.
qCRM runs on Cloudflare Workers and D1 with a SQLite twin for the desktop. One Worker, one database, one price that stays small.
An MCP server is built in. Claude (OpenAI and the rest soon) reads, searches and writes contacts and deals through the same scoped API your team uses, with an API key your owner can revoke.
Dedupe, forecasts and stale-deal sweeps run in a Rust wasm engine on your machine. Your rows never leave to be analysed, and it stays fast at 100,000 contacts.
The same app ships as a desktop build with its own SQLite: works offline, syncs when it's back, and the data dir is yours.
Every write lands in a change log with a sequence number. Any client, desktop or script asks since=N and gets exactly what changed. Conflicts come back named, not lost.
Every event posts to your URLs with an HMAC signature, retried with backoff for a day, and each delivery is on record with its status code.
An org's id is a hash of its owner's account and the server secret, so URLs carry nothing a stranger can walk back to a person. Seasonal, employee, manager, owner, admin and a super admin: who can delete, invite or export is one table you can read.
One request gives an owner every row of their org as JSON. One request deletes an account, its orgs and all their rows. Privacy isn't a page here; it's two routes.
Analysis runs locally. When you choose, the engine can hand summaries to a model you run yourself. Nothing leaves without a click.
Clave, QNTBR's call tool with Whisper transcripts processed mostly on the client, will ship the way the engine does: sealed, and opened by a lease from artstewengine.
An owner makes an API key under Settings. The MCP server lists one tool per API operation, and the risky ones (deletes, members, exports) say so, so a careful agent asks first.
claude mcp add --transport http qcrm https://qcrm.qntbr.com/api/mcp \ --header "Authorization: Bearer qk_…"
No row is read without its org id in the WHERE. A contact in another org is a 404, not a 403, so ids don't leak what exists.
Email and password, with GitHub and Google when the keys are set. Cookie writes check the origin, so a stranger's page can't post as you.
Members, roles, webhooks and keys are logged with who and when. Managers read it; nobody edits it.
Deploy secrets resolve through 1Password at deploy time. The repo carries names, never values.