MCP or the REST API?
Drum has two ways in for software: the REST API and the MCP server. They share the same operations underneath, so they never disagree about a rule or a figure. They are built for different callers.
Two kinds of caller
The REST API is for programs that know exactly what they want. A CRM sync knows it is creating a contact with these fields. An accounting export knows it wants the invoices issued last month. Such a program wants stable endpoints, full records and predictable behaviour, and it does not need to be told how anything works.
The MCP server is for a model that has to find its way. It starts with a request in plain words, such as “log two hours on the drainage design for 21 Drum St”, and has to work out which tools to call and with what. So the server gives it what a model needs:
- Instructions that say what Drum is and what the rules are, sent when the client connects.
- Tool descriptions that say when to use each tool and what to do next.
- One search tool that turns names, numbers and addresses into ids.
- Short results by default, with a
has_moreflag, so a model does not fill its memory with rows it does not need. - Error messages that suggest a fix, such as “Use search_records to find the id”.
- Toolsets, so a model holds only the tools for the job in front of it.
What stays the same
Both surfaces call the same shared operation for each job. Logging time through MCP runs the same checks, timesheet locks, approval workflows and webhooks as logging it through the REST API or the timesheet screen. The error reason codes are the same, money is integer cents and tax exclusive on both, and the same idempotency keys protect retries.
Both use the same user and the same role permissions, including the four API permissions. An API token works on both.
What differs
| REST API | MCP server | |
|---|---|---|
| Caller | A program | An AI model, in a client or your own agent |
| Shape | One endpoint per resource and action | One endpoint, with tools grouped in toolsets |
| Finding records | Lists and filters per resource | search_records across every kind |
| Results | Full records | Short rows by default, detailed on request |
| Sign-in | API token | Sign in with Drum (OAuth) or API token |
| Coverage | Every public endpoint | The work people do through an assistant. Some endpoints have no tool |
| Webhooks | Yes | No. Use webhooks |
Which to use
Use the REST API when:
- The steps are fixed and known in advance, such as a sync or an export.
- You need every field of a record, or every record of a kind.
- You want webhooks to react to changes in Drum.
- The result must be the same every time.
Use the MCP server when:
- A person asks for things in their own words, through Claude, ChatGPT or another assistant.
- You are building an agent that decides its own steps, such as one that reads supplier emails and records the bills.
- The work spans many kinds of record and would take many REST calls to stitch together.
Many integrations use both. An agent can read its instructions and do its work through MCP, while a REST webhook tells it when there is something to do.