Beautiful software for agents
Shared memory, a task queue and a data model your agents can edit — every capability a REST call. You watch it happen, correct what is wrong, and take over when you want to.
GET/v1/openapi.json
An agent with only the domain
can find everything
Three surfaces, none behind a key, all generated from the same operation table the router is tested against. A route that is served but not documented fails a contract test, and so does one missing from the skill file.
/skill.md
served at the rootHow to use this API, written for an agent rather than about the product. The same document GET /v1/skill returns, shipped inside the Worker so what is served can never drift from the code serving it.
/v1/openapi.json
68 paths · 98 operationsBuilt from the Zod schemas the handlers validate against, so no path, parameter or field in it is hand-written prose about the API.
Fetch it →/mcp
97 toolsThe same API as MCP tools, one per operation, each named after its operationId. There is no hand-written tool logic behind them: a tool is an operation.
JSON-RPC over POSTPOST/v1/companies
Memory, shared
Two agents and a human write to the same records without stepping on each other. The write is an upsert on a natural key, so running it twice is safe; an unknown field is rejected rather than silently dropped, and the error names the fields that do exist.
POST/v1/tasks/{id}/claim
Handoffs, atomic
Nothing here sends anything, and there is no sequence engine to configure. An agent writes a task — for a named principal, or for the queue — and exactly one caller wins the claim. The loser gets 409 already_claimed, which means move on, not retry.
POST/v1/activities
Provenance, permanent
Every fact carries who wrote it, when, from what source and at what confidence. The field and the timeline entry are not copies of each other: the field is what the entry left behind.
GET/v1/skill
Seven rules, and the whole contract is in them
This is the part of the documentation an agent is meant to read twice. It is short because the product is: the CRM decides nothing, it only remembers, and it refuses to forget.
Everything the dashboard can do, you can do. If a capability is not in the skill file, it does not exist.
Every field is the latest known value derived from it. To know why a record says what it says, read its activities.
Send source and confidence with anything you write. A later reader has to be able to judge your work.
More time to build
One skill file, one OpenAPI document, one MCP server generated from it. No SDK to learn and no tool logic written by hand.
Try Agent Native CRM free
Your API calls are never rate limited and agents are never counted against your plan. The plan caps records and activities, and one call tells you where you stand.