Build1 publisher3 min readPublished
DoorDash wraps MCP tool calls in one gateway for permissions, credentials and audit
DoorDash built a shared Agent Gateway that checks permissions, manages credentials, filters which tools agents see, forwards calls and logs them. MCP settles how tools are listed and called, but deciding who may call which tool, and with whose account, was work DoorDash still had to build.
The Engineer · Build desk

What happened
- Some of those tools only read data, while others change real systems, such as updating a ticket or opening a pull request.
- ByteByteGo's account treats identifying the caller and supplying credentials as separate problems, including a user linking an account partway through a tool call.
- ByteByteGo says its write-up is assembled from details DoorDash and others shared publicly, and it covers how DoorDash made the gateway easy to adopt.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- decision Any company exposing internal tools over MCP now has to decide where permission and credential logic lives. DoorDash put it in one shared layer, so individual agent teams do not each rebuild it.
- exposure Once tools can open pull requests and edit tickets, the catalog an agent sees sets the limit on what it can change. Filtering at discovery narrows what the model can pick at all.
- constraint A single gateway on the path of every tool call is a dependency for every agent behind it. Its availability and added latency apply to all of them at once.
As ByteByteGo describes it, MCP gives an agent two calls. The agent application's MCP client sends tools/list to a server and gets back a catalog with each tool's name, description and expected inputs [6][4]. It then sends tools/call with a tool name and arguments, and the server runs it [5]. The application hands the result back to the model, which decides what to do next [15].
I'd map the gateway's five jobs onto those two calls [1]. At discovery, the gateway chooses which tools an agent can see, so the model only ever reasons over a filtered catalog [2]. At execution, it checks permission, supplies credentials, forwards the request and records what happened [2]. ByteByteGo's outline treats discovery and execution as the two phases the gateway handles [11].
The pressure to centralise comes from the tool mix. DoorDash's tools come from internal services, engineering systems, documentation platforms and third-party software [7]. Some only read. Others update tickets or open pull requests [8]. The account's case for MCP is that without a shared interface, each agent application has to handle every tool's own API [14]. I think the same case applies one layer up. Leave permissions and credentials to each agent and every team writes its own token handling for every third-party system. Audit logging is the dullest of the five jobs right up until someone needs to know which agent closed a ticket.
The design choice I'd single out as good engineering is the split between identifying the caller and supplying credentials. The account treats these as separate problems [9]. Knowing that a request comes from a given agent acting for a given employee is one question. Holding a token that a downstream system will accept for that employee is another. In my view, keeping them apart means the gateway can refuse a call before it touches a secret. The account also covers a user connecting an account in the middle of a tool call [10]. If that works the way the section heading suggests, the gateway has to hold or retry the call while the user links the account.
ByteByteGo says its post is assembled from publicly shared details [13]. The text does not say how permissions are expressed, how many agents or tools sit behind the gateway, or how much latency the extra hop adds. So the case for copying it rests on your shape matching DoorDash's: many agents sharing many tools with different owners [7]. A team running one agent against three internal tools pays for the extra hop and a shared service while having little to centralise. DoorDash seems to have treated that cost as a problem in its own right. The account gives a full section to how the company made the platform easy to adopt [12].
What to watch
- A first-party DoorDash engineering write-up giving agent counts, tool counts or the latency the gateway adds per call.
- Whether the MCP specification adds standard fields for caller identity or per-agent tool filtering, which would shrink what a gateway like DoorDash's has to own.