Build on the records your team already uses.

A REST API and an MCP server for other AI tools, both in development, and webhooks through Automation today. A key can do no more than the person who owns it.

Webhooks in Automation are built. The public API and MCP connector are in development; API keys work only with the CyrilSites CLI today.

# In development: overdue invoices, as the key’s owner
curl "https://app.getcyril.com/api/finance/invoices?status=overdue&limit=2" \
  -H "Authorization: Bearer $CYRIL_API_KEY"
{
  "data": [
    { "number": "ROWA-0998", "status": "overdue",
      "currency": "USD", "total": "50595.00", "amountPaid": "0.00" },
    { "number": "ROWA-0997", "status": "overdue",
      "currency": "USD", "total": "5272.00", "amountPaid": "0.00" }
  ],
  "meta": { "page": 1, "limit": 2, "total": 2, "totalPages": 1 }
}
Keys belong to a person. Keep them in your environment, never in code.

One set of permissions, whoever is calling.

A key belongs to the person who created it and can do no more than they can. Today keys work with the CyrilSites command-line tool; the public API and MCP server that will use them are in development.

A REST API with no surprises.

In development: the same API the Cyril app is built on, opened to your API keys. Predictable paths, one response shape and errors you can act on.

  • An interactive referenceCovers the core account, billing, product and file endpoints today, opened from Settings under API keys. More apps are being added.
  • Keys you controlCreate, scope and revoke keys per organisation. Per-key rate limits and expiry are not built yet.
  • One path per resourceNested by app, like /api/projects/tasks. A retired endpoint answers 410 and names its replacement.
  • Lists that page the same wayEvery list takes page and limit, up to 100 at a time, and says how many there are.
  • A sandbox to build againstSpin up a separate sandbox organisation and test without touching live records.

Errors Every error has the same shape

StatusCodeWhen
400VALIDATION_ERRORA field failed validation. The message names it.
401UNAUTHORIZEDThe key is missing, invalid or revoked.
403FORBIDDENThe key is fine; its person isn’t allowed.
404NOT_FOUNDDoesn’t exist, or belongs to another organisation.
409CONFLICTA duplicate, like an email already registered.
410GONERetired. The message names the replacement.
422UNPROCESSABLEValid, but breaks a business rule.
429RATE_LIMITEDSlow down and retry.
{ "error": "Cannot delete the last organisation owner",
  "code": "UNPROCESSABLE" }

Let other AI tools work with Cyril.

In development. The Cyril tools it will offer are written; connecting from assistants that speak the Model Context Protocol is not available yet.

SalesCompanies, contacts, deals

  • list_companies
  • read_company
  • list_contacts
  • read_contact
  • list_deals
  • read_deal
  • search_sales
  • create_contact
  • update_deal
  • log_activity
  • send_email

FinanceInvoices, estimates

  • list_invoices
  • read_invoice
  • list_estimates
  • read_estimate
  • create_invoice
  • create_estimate

ProjectsProjects, tasks

  • list_projects
  • read_project
  • list_tasks
  • read_task
  • create_task
  • update_task_status

SupportTickets, help centre

  • list_tickets
  • read_ticket
  • search_kb
  • create_ticket

Docs and toolsSpaces, custom tools

  • list_doc_spaces
  • read_doc_space
  • list_custom_tools
  • read_custom_tool

EverywhereOne search

  • search_cyril

ReadsCreates and updatesA selection of the tools written so far.

Nothing destructive
There is no delete tool. Removing records stays with people, in Cyril.
Rules up front
Each tool says which permission it needs and whether it needs approval, before anyone calls it.
Changes recorded
Changes made through a key are recorded in the audit log against the person who owns it.

Webhooks, without writing a server.

In Automation, any rule can end by sending a webhook to a URL you choose, carrying the event that triggered it. An incoming webhook can start a rule, too.

Rules run on the same records and the same permissions as everything else. More on Automation.

Or skip the code.

In development: describe the tool you need and Cyril drafts it on sample data, reviewed before it goes live. A calculator, a report or a small internal app, inside Cyril.

Build your own

What’s ready.

Built means it exists and is tested today. It opens to you when your organisation gets early access. The full list is on what’s ready today.

REST APIAccess with your own API keys, in development
Not yet
API referenceInteractive; core account, billing, product and file endpoints
Built
API keysScoped, revocable; CyrilSites CLI only today
Built
Sandbox organisationA separate tenant for testing
Built
MCP serverTools written; MCP clients can’t connect yet
Not yet
Webhooks in AutomationOutgoing actions and incoming triggers
Built
Custom tools that write to your recordsTools built in Cyril will only read at first; writing back comes later
Not yet

Get a key when your place opens.

Cyril opens to founding members first. They keep their price and get help moving in, integrations included.

One email when your place opens. Nothing else.

A coordinator on the phone at a desk with two monitors, maps and planning boards on the wall behind him