<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr" -->

---
title: How Uber Built A Gateway For AI Agents To Access Tools
description: Uber built an MCP Gateway so AI agents can discover and call internal tools without every team wiring its own integration. The platform splits into an MCP...
canonical: https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How Uber Built A Gateway For AI Agents To Access Tools | daily.dev
og:description: Uber built an MCP Gateway so AI agents can discover and call internal tools without every team wiring its own integration. The platform splits into an MCP...
og:url: https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr
og:image: https://api.daily.dev/og/posts/7J3tT5jHR.png
og:image:alt: How Uber Built A Gateway For AI Agents To Access Tools
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How Uber Built A Gateway For AI Agents To Access Tools

**[ByteByteGo](https://daily.dev/sources/bytebytego)** · 14 min read · 22 upvotes · 6 comments

## Summary

Uber built an MCP Gateway so AI agents can discover and call internal tools without every team wiring its own integration. The platform splits into an MCP Registry, the control plane holding the tool catalog, and a Proxy Gateway, the data plane that routes requests to HTTP, gRPC or TChannel services. A distributed system called AutoCrawler, powered by Cadence, scans existing API definitions and native MCP servers to auto-generate tool schemas, which start disabled until the owning team reviews and approves them. Access is enforced through Uber's internal Access Control System at the server or tool level, and three features called Omni MCP, Response Projection and Code Mode help agents avoid overloading the model's context window with thousands of tool definitions.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.bytebytego.com/p/how-uber-built-a-gateway-for-ai-agents>

## Questions this post answers

### What is the Uber MCP Gateway and what problem does it solve?

It is a shared platform connecting AI agents to internal tools across Uber's services, built because teams were independently duplicating MCP integrations, security handling, and connection logic. It has two parts: the MCP Registry, a control plane holding the tool catalog, and the Proxy Gateway, a data plane routing requests to backend services over HTTP, gRPC, or TChannel.

_Teams designing shared AI tool infrastructure can track architecture write-ups like this on daily.dev._

### How does Uber's AutoCrawler automatically generate MCP tool definitions from existing APIs?

AutoCrawler is a distributed workflow system powered by Cadence that scans existing API interface definitions (IDLs), extracts method names and request/response structures, translates them into MCP tool schemas, and uses an LLM to write better tool descriptions before storing them in the registry. It also discovers native MCP servers directly via heartbeat signals and their listTools operation.

_Developers automating API-to-tool conversion for agents can follow approaches like this on daily.dev._

### How can AI agents work with thousands of available tools without overloading the model's context window?

Uber addressed this with three gateway features: Omni MCP, a single proxy enabling gradual tool discovery through calls like discover_server and discover_tools; Response Projection, a GraphQL-like mechanism letting callers request only specific fields from a tool's response; and Code Mode, which lets coding agents manipulate results via shell commands and files instead of loading everything into context.

_Engineers scaling agent tool catalogs without blowing the context window can find patterns like these on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@skepagent** · 1 upvotes

> 把 Registry 做控制面、Proxy Gateway 做数据面这个拆分很干净，工具发现和调用权限分开管尤其重要。AutoCrawler 生成的 schema 默认禁用、等 owner 审核才启用，也比直接全量开放稳妥得多。我比较关心的是 Response Projection 在实际调用里裁剪了多少上下文，有没有出现过因为裁剪丢了关键字段而导致调用失败的情况？

**@dodolaunch** · 0 upvotes

> The detail that stood out to me is that auto-generated tool schemas start disabled until the owning team reviews them. That feels like the right trade-off between speed and trust, since the catalog is only as useful as the descriptions agents read from it. Do you think teams will keep reviewing those descriptions carefully once the number of tools grows?

**@kartiknvj** · 0 upvotes

> AutoCrawler's scheduled job also watches for schema changes and can update an existing server representation. Once a tool is already enabled, does a crawled schema change go back through the owner-approved diff, or can it reach agents on the next periodic refresh? Upstream field renames are the tool breaks I run into most, so I'd gate that path.

**@onlyread** · 0 upvotes

> Curious how the owner review plays out in practice. Do teams actually read the generated descriptions, or mostly rubber-stamp them? And how many of the discovered tools ended up enabled?

**@diyweb** · 0 upvotes

> Starting generated tool schemas as disabled until the owning team approves them is the detail worth copying. Auto-generated descriptions are where agents pick the wrong tool, so that review step is part of the reliability, not just security. Even with a handful of tools, keeping one registry with clear owners saves pain later.

## Similar posts on daily.dev

- [How DoorDash Built a Toolbox for AI Agents](https://daily.dev/posts/how-doordash-built-a-toolbox-for-ai-agents-bufaj6vpo) · ByteByteGo · 7 upvotes · 0 comments
- [What Is MCP and Why Does It Need a Gateway? A Practical Guide for AI Engineers](https://daily.dev/posts/what-is-mcp-and-why-does-it-need-a-gateway-a-practical-guide-for-ai-engineers-fhf76gbfk) · DEV · 6 upvotes · 0 comments
- [Tool Provisioning in MCP Servers: Controlling AI Agent Access in Production](https://daily.dev/posts/tool-provisioning-in-mcp-servers-controlling-ai-agent-access-in-production-xs5mwgwop) · portkey · 0 upvotes · 0 comments

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#mcp](https://daily.dev/tags/mcp), [#microservices](https://daily.dev/tags/microservices), [#uber](https://daily.dev/tags/uber), [#api-gateway](https://daily.dev/tags/api-gateway)

[View this post on daily.dev](https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How Uber Built A Gateway For AI Agents To Access Tools","url":"https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr"},"datePublished":"2026-10-28T15:36:49.710Z","dateModified":"2026-10-28T15:57:48.082Z","description":"Uber built an MCP Gateway so AI agents can discover and call internal tools without every team wiring its own integration. The platform splits into an MCP...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/006ea6fcc512a0dfa5fec4816acde1e8?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/006ea6fcc512a0dfa5fec4816acde1e8?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"ByteByteGo","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ByteByteGo","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/35be29234ee14d01a9cd049c52e12753","url":"https://daily.dev/sources/bytebytego"},"commentCount":6,"discussionUrl":"https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":22},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":6}],"keywords":"ai-agents,mcp,microservices,uber,api-gateway","timeRequired":"PT14M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ByteByteGo","item":"https://daily.dev/sources/bytebytego"},{"@type":"ListItem","position":3,"name":"How Uber Built A Gateway For AI Agents To Access Tools"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr","comment":[{"@type":"Comment","text":"把 Registry 做控制面、Proxy Gateway 做数据面这个拆分很干净，工具发现和调用权限分开管尤其重要。AutoCrawler 生成的 schema 默认禁用、等 owner 审核才启用，也比直接全量开放稳妥得多。我比较关心的是 Response Projection 在实际调用里裁剪了多少上下文，有没有出现过因为裁剪丢了关键字段而导致调用失败的情况？","datePublished":"2026-10-29T02:52:37.536Z","url":"https://daily.dev/posts/7J3tT5jHR#c-evS2ngvDC","author":{"@type":"Person","name":"kris gu","url":"https://daily.dev/skepagent","image":"https://lh3.googleusercontent.com/a/ACg8ocJnnwFKNx7PJNhb7W6mFWr2k2SV_VHW_9ainY71DX_dv79frQ=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}},{"@type":"Comment","text":"The detail that stood out to me is that auto-generated tool schemas start disabled until the owning team reviews them. That feels like the right trade-off between speed and trust, since the catalog is only as useful as the descriptions agents read from it. Do you think teams will keep reviewing those descriptions carefully once the number of tools grows?","datePublished":"2026-10-30T12:36:04.703Z","dateModified":"2026-10-30T12:40:17.158Z","url":"https://daily.dev/posts/7J3tT5jHR#c-WNAFoHW4Z","author":{"@type":"Person","name":"Almas Malik","url":"https://daily.dev/dodolaunch","image":"https://media.daily.dev/image/upload/s--U1QL6K2x--/f_auto,pg_1/v1793362044/avatars/avatar_sz1N8EZitdQ0K1a2CfLyN?_a=BAMAMiiw0"}},{"@type":"Comment","text":"AutoCrawler’s scheduled job also watches for schema changes and can update an existing server representation. Once a tool is already enabled, does a crawled schema change go back through the owner-approved diff, or can it reach agents on the next periodic refresh? Upstream field renames are the tool breaks I run into most, so I’d gate that path.","datePublished":"2026-10-29T13:50:40.824Z","url":"https://daily.dev/posts/7J3tT5jHR#c-nsjtFF6py","author":{"@type":"Person","name":"kartik-nvjk","url":"https://daily.dev/kartiknvj","image":"https://media.daily.dev/image/upload/s--3gGgsVCw--/f_auto/v1781456774/avatars/avatar_TvTVeiMdkRCqWUDullFmy?_a=BAMAMiWQ0"}},{"@type":"Comment","text":"Curious how the owner review plays out in practice. Do teams actually read the generated descriptions, or mostly rubber-stamp them? And how many of the discovered tools ended up enabled?","datePublished":"2026-10-28T23:50:28.063Z","url":"https://daily.dev/posts/7J3tT5jHR#c-APoEiphg7","author":{"@type":"Person","name":"OnlyRead","url":"https://daily.dev/onlyread"}},{"@type":"Comment","text":"Starting generated tool schemas as disabled until the owning team approves them is the detail worth copying. Auto-generated descriptions are where agents pick the wrong tool, so that review step is part of the reliability, not just security. Even with a handful of tools, keeping one registry with clear owners saves pain later.","datePublished":"2026-10-29T10:41:00.871Z","url":"https://daily.dev/posts/7J3tT5jHR#c-abME7zZ9m","author":{"@type":"Person","name":"DiyWeb","url":"https://daily.dev/diyweb","image":"https://media.daily.dev/image/upload/s--dgS6jDeN--/f_auto/v1790879420/avatars/avatar_774zDwMaRTNS1fv5OKStX?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-uber-built-a-gateway-for-ai-agents-to-access-tools-7j3tt5jhr#faq","mainEntity":[{"@type":"Question","name":"What is the Uber MCP Gateway and what problem does it solve?","acceptedAnswer":{"@type":"Answer","text":"It is a shared platform connecting AI agents to internal tools across Uber's services, built because teams were independently duplicating MCP integrations, security handling, and connection logic. It has two parts: the MCP Registry, a control plane holding the tool catalog, and the Proxy Gateway, a data plane routing requests to backend services over HTTP, gRPC, or TChannel. Teams designing shared AI tool infrastructure can track architecture write-ups like this on daily.dev."}},{"@type":"Question","name":"How does Uber's AutoCrawler automatically generate MCP tool definitions from existing APIs?","acceptedAnswer":{"@type":"Answer","text":"AutoCrawler is a distributed workflow system powered by Cadence that scans existing API interface definitions (IDLs), extracts method names and request/response structures, translates them into MCP tool schemas, and uses an LLM to write better tool descriptions before storing them in the registry. It also discovers native MCP servers directly via heartbeat signals and their listTools operation. Developers automating API-to-tool conversion for agents can follow approaches like this on daily.dev."}},{"@type":"Question","name":"How can AI agents work with thousands of available tools without overloading the model's context window?","acceptedAnswer":{"@type":"Answer","text":"Uber addressed this with three gateway features: Omni MCP, a single proxy enabling gradual tool discovery through calls like discover_server and discover_tools; Response Projection, a GraphQL-like mechanism letting callers request only specific fields from a tool's response; and Code Mode, which lets coding agents manipulate results via shell commands and files instead of loading everything into context. Engineers scaling agent tool catalogs without blowing the context window can find patterns like these on daily.dev."}}]}
```

