CRM MCP server
The same operations as MCP tools, generated rather than hand-written, so the two cannot describe different products.
Read it →GET/v1/openapi.json
The data model, the permissions and the timeline are reachable over REST and MCP with nothing rendered in front of them. The dashboard is a client of that API, not a privileged layer above it — which is the only way to know the head really did come off.
The short version, then the version that matters — what the term means in general, and what it turns out to mean when a product is actually built that way.
The records, the business rules and the permissions are exposed as an interface any client can call, and the user interface is one such client. Nothing lives behind the screen. Removing the screen removes no capability.
Ask what happens to a feature when the browser is gone. In a bundled CRM the answer is a support ticket. Here it is nothing: the dashboard reads the same schema, calls the same operations and gets the same errors your own client does.
Most CRMs have an API. That is not the same claim. The question is whether the interface is a description of the product or an export from it.
A bundled CRMThe objects worth syncing. Newer screens land months ahead of the endpoints behind them.
Agent Native CRMEvery operation the product has, documented in one OpenAPI document served without credentials at /v1/openapi.json.
A bundled CRMPartly in the API, partly in form validation the API never sees. Two clients, two behaviours.
Agent Native CRMIn the API. Contact refusal, task claiming and stage moves are refused at the same place for every caller, dashboard included.
A bundled CRMA custom-fields table, queried differently from the standard ones and missing from half the filters.
Agent Native CRMA real column on a real table. Filters, views, activities and tasks treat it exactly like a standard field.
A bundled CRMAn SDK per language, a webhook catalogue, and a mapping layer you maintain.
Agent Native CRMOne skill file, one OpenAPI document, and an MCP server generated from the same operation table.
A bundled CRMThe data, once you have exported it. The shape of it belongs to the vendor.
Agent Native CRMThe shape too. The objects, fields, stages and vocabulary in a workspace were written into it through the API.
Every route named below is one this API serves — a test reads them back against the operation table and fails on anything invented. Read them in order and you have the argument on this page without the prose around it.
98 operations across 68 paths, generated from the same table that registers the routes. A contract test fails the build if the router serves something the document does not describe, or describes something it does not serve, so the two cannot drift apart quietly.
Read the model, then change it over the same interface. Objects get their own tables and their own natural keys, and behave like core objects for activities, tasks, lists and views. Standard fields can be hidden; nothing is destroyed.
A view is filters, a sort and an optional grouping, stored as data and rendered by the dashboard. Your client can create one, read its rows, and get the group counts computed across the whole filtered set rather than the page it is holding.
Principals, roles and keys are created and revoked over the API, which is what lets a client provision its own callers. A key is returned once and stored as a salted hash, so a lost key is re-keyed rather than looked up.
GET/v1/activities
None of these is a setting somebody switches on. Most are enforced by the API itself; the rest are enforced by the fact that the work sits in a queue until somebody takes it.
It authenticates as a principal, calls the documented operations and reads the same errors. When the API refuses something, the screen has no way around it — which means the guarantees on this page hold for every caller rather than for the ones we remembered.
Nine codes cover everything a caller can meet, each with a message and details naming what was wrong. A client can branch on them instead of matching strings, and a 409 tells you whether to retry or move on.
API calls are never rate limited and agents are never counted as seats. Plans cap stored records and activities, and GET /v1/usage reports where a workspace stands — so building against this does not get more expensive the more carefully you build.
Every id is a ULID, so ids order by creation time without a second column. Lists answer with data and a next_cursor, capped at 200 a page. Pagination is the same shape on every collection in the product.
GET/v1/openapi.json
Not a diagram of the architecture — the actual shape of the response the rest of this page is built on. Nothing in it was configured in a settings screen; every part of it is readable and writable over the same API.
Said plainly, because each of these is a thing a product described this way is usually assumed to do, and an agent that assumes it will write code that never runs.
There is a dashboard, and it is the whole product rather than an admin panel: records, board, tasks, schema, principals and billing. It exists because the people supervising agents need somewhere to look, and it is built the way any other client would be.
Reads are pull. A client that wants to know what changed polls activities with a since filter and gets an append-only stream it can resume from. Push is a reasonable thing to want and it is not built; asking for it is a feature request, not a setting.
There is no marketplace, no connector directory and no iPaaS layer. Anything that reaches another system reaches it from your side, holding its own credentials — which is also why this product does not send email or messages. A decoupled CRM decouples that too.
Answered here rather than in a call, and answered the way they would be answered in a call.
A CRM in which the data model, workflows and permissions are decoupled from the user interface and exposed over an interface any client can call. The screen becomes one consumer among several — an agent, a script, a bot or a custom app can do everything it can do.
They overlap. API-first describes how the product was built: the interface was designed before the screens. Headless describes what you get: no capability that only exists behind a UI. This product is both, and the OpenAPI document is how you check the second claim rather than take it.
This one does. Headless is a statement about where the capability lives, not about whether anything is rendered. The dashboard here is a client of the public API and has no route of its own into the data.
Yes. Read the OpenAPI document, issue a key to a principal, and call the same operations the dashboard calls. Saved views exist precisely so a client can render a list the workspace defined rather than hard-coding its own.
By reading the timeline. Activities are append-only and filterable by type, actor and a since timestamp, so a client resumes from the last one it saw. There are no outbound webhooks today.
The same product from a different angle. None of these repeats this page; each answers a question this one deliberately leaves alone.
The same operations as MCP tools, generated rather than hand-written, so the two cannot describe different products.
Read it →The same surface argued for the engineer holding it: keys you issue from code, a schema you migrate, and no SDK to keep in step.
Read it →The category argument, and the comparison with the CRM you already run.
Read it →An agent can create one with no key, no invitation and no human, and shape it through the same API you are about to hand it. Your API calls are never rate limited and agents are never counted.