How CREW25 fits together
The pieces you can integrate with, and the one concept everything hangs off.
Organisations
Every account in CREW25 belongs to one or more organisations. An organisation is a trades
business: its people, its customers, its jobs and its money. All data is scoped to a single
organisation. An API key belongs to one organisation, and GET /api/v1/organisation returns its
public id (org_a1b2c3d4e5f6a7b8), which webhook payloads also carry. An app connected to the
MCP server also works in one organisation, chosen when the person approves it.
The surfaces
| Surface | What it is | Integrate by |
|---|---|---|
| API | Your organisation's records, read from your server (beta, small so far) | API keys |
| Webhooks | Events about people, jobs, quotes and invoices, pushed as they happen | Webhooks |
| MCP server | CREW25's agent tools, for Claude, ChatGPT, Cursor or your own automation | MCP |
| Office workspace | Where the organisation runs jobs, quotes, the schedule, hours and margin | Not publicly integrable |
| Mobile apps | What crews use on site, on iPhone and Android | Not publicly integrable |
Environments
There is one production environment. There is no sandbox yet — if you are building something that changes real records, ask us to set up a test organisation rather than working in a live one.
Running the monorepo locally, the API is at http://localhost:5500.
A note on stability
Everything documented here is declared in a manifest in the codebase, and a test asserts that each
documented route still exists. If a page says an endpoint is stable, breaking it requires a
deprecation window and a changelog entry. Endpoints not listed on this hub
carry no promise at all, however reachable they look.