<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Databricksters: Agents]]></title><description><![CDATA[How to build useful agents with AI]]></description><link>https://www.databricksters.com/s/agents</link><image><url>https://substackcdn.com/image/fetch/$s_!zPJJ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff49ecae-7c56-403c-9389-61b28de6a50f_1280x1280.png</url><title>Databricksters: Agents</title><link>https://www.databricksters.com/s/agents</link></image><generator>Substack</generator><lastBuildDate>Fri, 10 Jul 2026 09:21:49 GMT</lastBuildDate><atom:link href="https://www.databricksters.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Soni]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[databricksters@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[databricksters@substack.com]]></itunes:email><itunes:name><![CDATA[Canadian Data Guy]]></itunes:name></itunes:owner><itunes:author><![CDATA[Canadian Data Guy]]></itunes:author><googleplay:owner><![CDATA[databricksters@substack.com]]></googleplay:owner><googleplay:email><![CDATA[databricksters@substack.com]]></googleplay:email><googleplay:author><![CDATA[Canadian Data Guy]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop Guessing AI Agent Integrations: The Databricks Decision Tree]]></title><description><![CDATA[Discover essential patterns for secure, scalable AI agent integration with Databricks, covering OBO, token federation, and multi-agent strategies. Get artifact checklists and CLI commands.]]></description><link>https://www.databricksters.com/p/stop-guessing-ai-agent-integrations</link><guid isPermaLink="false">https://www.databricksters.com/p/stop-guessing-ai-agent-integrations</guid><dc:creator><![CDATA[Aravind Nallan]]></dc:creator><pubDate>Wed, 24 Jun 2026 16:28:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f7c9d4c1-f15e-4256-8b42-c56e67fc83c7_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><span>The Problem</span></h2><p><span>Business users do most of their work outside of a data platform: sales reps draft proposals in Outlook, operations leads run their day in Teams, finance models everything in Excel.Yet the answers to most of their questions sit in Databricks: pipeline metrics, supply chain status, support SLAs, financial actuals, etc.</span></p><p><span>That gap between &#8220;where data lives&#8221; and &#8220;where people work&#8221; used to be bridged by reports and dashboards. Now the bridge is AI agents: assistants embedded in Teams, Outlook, Excel, Copilot Hub, Microsoft Foundry projects, or an in-house chat app. The user asks a question in their flow of work. The agent calls back to Databricks. The answer returns with proper governance applied.</span></p><p><span>The pattern is simple in theory. In practice, the integration involves a few interlocking decisions: which Databricks resources to wire up, how authentication flows, whether the agent supports MCP or only REST, whether users and Databricks share a Microsoft Entra tenant, and what governance controls you need. Get them wrong and you lose all the benefits of governance inherent to Databricks.</span></p><p><span>This post walks you through a decision tree to get to the right architecture, with the exact set of artifacts to share between the Databricks side and the agent side at the end.</span></p><h2><span>Architecture Components</span></h2><p><span>Before walking the tree, here are some quick definitions of the different Databricks functions we will be dealing with.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U0NG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U0NG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 424w, https://substackcdn.com/image/fetch/$s_!U0NG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 848w, https://substackcdn.com/image/fetch/$s_!U0NG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 1272w, https://substackcdn.com/image/fetch/$s_!U0NG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U0NG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png" width="1456" height="803" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:803,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197754,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!U0NG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 424w, https://substackcdn.com/image/fetch/$s_!U0NG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 848w, https://substackcdn.com/image/fetch/$s_!U0NG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 1272w, https://substackcdn.com/image/fetch/$s_!U0NG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa903ad22-7ec2-4d2f-9a3f-fbe71ebeac09_1574x868.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><span>Question 1: Which Databricks Resources Need to Be Connected?</span></h2><p><span>Databricks provides four managed MCP servers out of the box. Each connects a different resource type with its own URL pattern and OAuth scope.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b00I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b00I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 424w, https://substackcdn.com/image/fetch/$s_!b00I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 848w, https://substackcdn.com/image/fetch/$s_!b00I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 1272w, https://substackcdn.com/image/fetch/$s_!b00I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b00I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png" width="1456" height="772" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:772,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:200456,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b00I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 424w, https://substackcdn.com/image/fetch/$s_!b00I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 848w, https://substackcdn.com/image/fetch/$s_!b00I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 1272w, https://substackcdn.com/image/fetch/$s_!b00I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32198225-5e6b-490f-86c0-e670a148a3ee_1572x834.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>All four are governed by Unity Catalog permissions and visible in </span><strong><span>AI Gateway &gt; MCPs</span></strong><span>.</span></p><p><strong><span>Note on Vector Search:</span></strong><span> The managed MCP server works directly with indexes that use Databricks-managed embeddings; you send plain text and get plain text results. If you use self-managed embeddings, wrap the index in a Model Serving endpoint (for example, via VectorSearchRetrieverTool in a deployed agent) or a UC Function, and call that from the agent instead.</span></p><h2><span>Question 2: How Many Databricks Endpoints, and Does the Agent Support Multiple Tool Endpoints?</span></h2><p><span>This determines whether you connect a single URL or several.</span></p><h3><span>Path A: Single resource</span></h3><p><span>Connect one managed MCP URL directly. Simplest path: no orchestration needed.</span></p><h3><span>Path B: Multiple resources, agent supports multiple endpoints</span></h3><p><span>Create one OAuth application with combined scopes and hand the agent team all the MCP URLs. The same OAuth token works across all of them.</span></p><p><span>OAuth app scopes (combine as needed):</span></p><p><code>vector-search genie unity-catalog sql offline_access</code></p><p><span>Or use all-apis for blanket access (less restrictive).</span></p><p><span>One OAuth flow, one token, multiple MCP servers. The user authenticates once and the token carries the correct scopes for every resource.</span></p><h3><span>Path C: Multiple resources, agent supports only one endpoint</span></h3><p><span>Two options.</span></p><p><strong><span>Option 1: Supervisor Agent (recommended for most cases)</span></strong></p><p><span>Register each Databricks resource as a sub-agent of an AgentBricks Multi-Agent Supervisor Agent. The external agent connects to one Model Serving endpoint.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PsNU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PsNU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 424w, https://substackcdn.com/image/fetch/$s_!PsNU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 848w, https://substackcdn.com/image/fetch/$s_!PsNU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 1272w, https://substackcdn.com/image/fetch/$s_!PsNU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PsNU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png" width="1456" height="459" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f952ed30-1dea-435b-a141-055fb3879532_1574x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:459,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:106124,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PsNU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 424w, https://substackcdn.com/image/fetch/$s_!PsNU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 848w, https://substackcdn.com/image/fetch/$s_!PsNU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 1272w, https://substackcdn.com/image/fetch/$s_!PsNU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff952ed30-1dea-435b-a141-055fb3879532_1574x496.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The external agent connects to a single REST endpoint: POST https://&lt;workspace&gt;/serving-endpoints/&lt;supervisor&gt;/invocations. The supervisor&#8217;s LLM handles routing: it reads the user&#8217;s query and delegates to the right sub-agent based on descriptions you provide.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pi4z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pi4z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 424w, https://substackcdn.com/image/fetch/$s_!pi4z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 848w, https://substackcdn.com/image/fetch/$s_!pi4z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 1272w, https://substackcdn.com/image/fetch/$s_!pi4z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pi4z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png" width="1456" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117348,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pi4z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 424w, https://substackcdn.com/image/fetch/$s_!pi4z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 848w, https://substackcdn.com/image/fetch/$s_!pi4z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 1272w, https://substackcdn.com/image/fetch/$s_!pi4z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a973314-71d2-4f87-b7e0-ce278a3cfeed_1572x536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><span>Option 2: Custom MCP Server (Databricks App)</span></strong></p><p><span>Deploy a Databricks App that proxies to multiple managed MCP servers behind a single URL: https://&lt;app-url&gt;/mcp.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yCVV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yCVV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 424w, https://substackcdn.com/image/fetch/$s_!yCVV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 848w, https://substackcdn.com/image/fetch/$s_!yCVV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 1272w, https://substackcdn.com/image/fetch/$s_!yCVV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yCVV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png" width="1456" height="380" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:380,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78296,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yCVV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 424w, https://substackcdn.com/image/fetch/$s_!yCVV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 848w, https://substackcdn.com/image/fetch/$s_!yCVV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 1272w, https://substackcdn.com/image/fetch/$s_!yCVV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544cf676-009b-4c63-9499-5122f0e119b0_1570x410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong><span>Decision rule:</span></strong><span> Minimal code with LLM-driven routing goes to Supervisor Agent. Lightweight deterministic proxying goes to Custom MCP App.</span></p><h2><span>Question 3: What Authentication Model Is Required?</span></h2><p><span>This is the most consequential decision. It determines how identity flows from the external agent to Databricks.</span></p><h3><span>The key question: does the end user&#8217;s identity need to flow through to Databricks?</span></h3><p><strong><span>Yes: On-Behalf-Of (OBO) Authentication</span></strong></p><p><span>The external agent authenticates on behalf of each individual user. Databricks receives the user&#8217;s identity, and Unity Catalog permissions are enforced per-user.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ABg0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ABg0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 424w, https://substackcdn.com/image/fetch/$s_!ABg0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 848w, https://substackcdn.com/image/fetch/$s_!ABg0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 1272w, https://substackcdn.com/image/fetch/$s_!ABg0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ABg0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png" width="1456" height="384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:384,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109734,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ABg0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 424w, https://substackcdn.com/image/fetch/$s_!ABg0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 848w, https://substackcdn.com/image/fetch/$s_!ABg0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 1272w, https://substackcdn.com/image/fetch/$s_!ABg0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc47f1b1f-0ddc-454a-b829-c032209c6789_1570x414.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>OBO-supported resources on Model Serving:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bpmf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bpmf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 424w, https://substackcdn.com/image/fetch/$s_!Bpmf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 848w, https://substackcdn.com/image/fetch/$s_!Bpmf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 1272w, https://substackcdn.com/image/fetch/$s_!Bpmf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bpmf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png" width="1456" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131935,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bpmf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 424w, https://substackcdn.com/image/fetch/$s_!Bpmf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 848w, https://substackcdn.com/image/fetch/$s_!Bpmf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 1272w, https://substackcdn.com/image/fetch/$s_!Bpmf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb205e14-7134-4d69-83cf-66cb84e457bd_1570x728.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>If you need OBO access to resources outside this list (e.g., UC Volumes), deploy on Databricks Apps instead of Model Serving. Apps support additional OAuth scopes.</span></p><p><strong><span>No: Service Principal Authentication</span></strong></p><p><span>The external agent authenticates as a single identity (service principal). All queries run under that SP&#8217;s permissions.</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7tQh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7tQh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 424w, https://substackcdn.com/image/fetch/$s_!7tQh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 848w, https://substackcdn.com/image/fetch/$s_!7tQh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 1272w, https://substackcdn.com/image/fetch/$s_!7tQh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7tQh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png" width="1456" height="349" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:349,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86351,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7tQh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 424w, https://substackcdn.com/image/fetch/$s_!7tQh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 848w, https://substackcdn.com/image/fetch/$s_!7tQh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 1272w, https://substackcdn.com/image/fetch/$s_!7tQh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0ab886a-a30b-4787-99c5-a68a36a15c7a_1570x376.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3><span>Authentication Method Comparison</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qgja!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qgja!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 424w, https://substackcdn.com/image/fetch/$s_!Qgja!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 848w, https://substackcdn.com/image/fetch/$s_!Qgja!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 1272w, https://substackcdn.com/image/fetch/$s_!Qgja!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qgja!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png" width="1456" height="494" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:494,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110513,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qgja!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 424w, https://substackcdn.com/image/fetch/$s_!Qgja!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 848w, https://substackcdn.com/image/fetch/$s_!Qgja!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 1272w, https://substackcdn.com/image/fetch/$s_!Qgja!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe95d9f90-9aa0-4941-8d15-a1cb73c1dd81_1568x532.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The question to ask the data security team: do different users need different access levels to the data behind these resources, or is a shared service account acceptable?</span></p><h2><span>Question 4: Are Users and Databricks in the Same Azure Tenant?</span></h2><p><span>This question only matters if you chose OBO or token federation in Q3. With a simple PAT or client credentials inside the same org, skip to Q5.</span></p><h3><span>Same tenant</span></h3><p><span>Standard OAuth flows work directly:</span></p><ul><li><p><span>Users already exist in Databricks via SCIM sync from the same Entra ID</span></p></li><li><p><span>OAuth authorization code flow authenticates users against the same tenant</span></p></li><li><p><span>No federation policy needed</span></p></li></ul><h3><span>Different tenants (cross-tenant)</span></h3><p><span>Common in enterprise scenarios: users live in Tenant A (corporate Entra ID), but Databricks is associated with Tenant B.</span></p><p><strong><span>Path A: Per-user OBO (users in external tenant need individual identity)</span></strong></p><ol><li><p><span>Create an account-wide federation policy:</span></p><ul><li><p><strong><span>Issuer:</span></strong><span> https://login.microsoftonline.com/&lt;external-tenant-id&gt;/v2.0</span></p></li><li><p><strong><span>Subject claim:</span></strong><span> sub or oid (to match users by their Entra ID object ID)</span></p></li><li><p><strong><span>Audience:</span></strong><span> Databricks account ID or custom value</span></p></li></ul></li><li><p><span>Provision users in Databricks. Federation validates identity but does NOT create accounts. Use SCIM sync from the external tenant, or provision manually.</span></p></li><li><p><span>Each user&#8217;s Entra ID token is exchanged for a Databricks token carrying their identity.</span></p></li><li><p><span>Unity Catalog permissions apply per-user.</span></p></li></ol><p><strong><span>Path B: Service Principal (automated agent, no per-user identity)</span></strong></p><ol><li><p><span>Create a Databricks service principal in your Databricks account.</span></p></li><li><p><span>Create a service principal federation policy:</span></p><ul><li><p><strong><span>Issuer:</span></strong><span> https://login.microsoftonline.com/&lt;external-tenant-id&gt;/v2.0</span></p></li><li><p><strong><span>Subject:</span></strong><span> The Entra ID app/service principal&#8217;s sub or oid claim</span></p></li><li><p><strong><span>Audience:</span></strong><span> Databricks account ID</span></p></li></ul></li><li><p><span>The external agent obtains a JWT from its own Entra ID tenant.</span></p></li><li><p><span>Exchanges it via:</span></p></li></ol><p><span>   </span><code>POST https://&lt;workspace&gt;/oidc/v1/token</code></p><p><code>   grant_type=urn:ietf:params:oauth:grant-type:token-exchange</code></p><p><code>   subject_token=&lt;entra-id-jwt&gt;</code></p><p><code>   subject_token_type=urn:ietf:params:oauth:token-type:jwt</code></p><ol><li><p><span>Zero Databricks secrets cross the tenant boundary.</span></p></li></ol><h3><span>Cross-tenant requirements checklist</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z-zu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z-zu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 424w, https://substackcdn.com/image/fetch/$s_!Z-zu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 848w, https://substackcdn.com/image/fetch/$s_!Z-zu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Z-zu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z-zu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png" width="1456" height="609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb723616-c024-4200-8cfc-e951d18c538c_1578x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:609,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147124,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z-zu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 424w, https://substackcdn.com/image/fetch/$s_!Z-zu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 848w, https://substackcdn.com/image/fetch/$s_!Z-zu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Z-zu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb723616-c024-4200-8cfc-e951d18c538c_1578x660.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><span>Question 5: What Governance Controls Are Needed?</span></h2><p><span>AI Gateway is the enterprise control plane that sits between MCP servers and external agents. It provides the operational controls needed in production.</span></p><h3><span>AI Gateway Capabilities for MCP</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Rld!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Rld!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 424w, https://substackcdn.com/image/fetch/$s_!1Rld!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 848w, https://substackcdn.com/image/fetch/$s_!1Rld!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!1Rld!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Rld!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png" width="1456" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:278599,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1Rld!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 424w, https://substackcdn.com/image/fetch/$s_!1Rld!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 848w, https://substackcdn.com/image/fetch/$s_!1Rld!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!1Rld!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed0eb8e9-2600-40c0-b0d3-3ad8d2bfd648_1574x1202.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Find it in: Workspace sidebar &gt; </span><strong><span>AI Gateway</span></strong><span> &gt; </span><strong><span>MCPs</span></strong><span>.</span></p><h3><span>Recommended governance setup</span></h3><ol><li><p><strong><span>Rate limiting</span></strong><span>: set conservative limits initially, increase based on observed usage.</span></p></li><li><p><strong><span>Usage tracking</span></strong><span>: enable from day one to establish a baseline.</span></p></li><li><p><strong><span>Audit logging</span></strong><span>: required for any integration where per-user identity flows through (OBO).</span></p></li><li><p><strong><span>IP allowlisting</span></strong><span>: restrict MCP server access to known external agent IPs.</span></p></li><li><p><strong><span>Scope-limited OAuth</span></strong><span>: use granular scopes (vector-search, genie) instead of all-apis for production.</span></p></li></ol><h2><span>Question 6: What Information Needs to Be Exchanged Between Teams?</span></h2><p><span>Setting up the integration requires a handshake between the Databricks team and the external agent team. Here is exactly what each side provides.</span></p><h3><span>From the Databricks side</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!niTp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!niTp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 424w, https://substackcdn.com/image/fetch/$s_!niTp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 848w, https://substackcdn.com/image/fetch/$s_!niTp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!niTp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!niTp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png" width="1456" height="1260" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1260,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!niTp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 424w, https://substackcdn.com/image/fetch/$s_!niTp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 848w, https://substackcdn.com/image/fetch/$s_!niTp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!niTp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fcdc5-4257-4bdf-a1a0-09ac06099054_1572x1360.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3><span>From the external agent team</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L0jR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L0jR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 424w, https://substackcdn.com/image/fetch/$s_!L0jR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 848w, https://substackcdn.com/image/fetch/$s_!L0jR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 1272w, https://substackcdn.com/image/fetch/$s_!L0jR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L0jR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png" width="1456" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201930,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!L0jR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 424w, https://substackcdn.com/image/fetch/$s_!L0jR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 848w, https://substackcdn.com/image/fetch/$s_!L0jR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 1272w, https://substackcdn.com/image/fetch/$s_!L0jR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f8c9e8-3550-46e3-ae8f-09d5ff02abbc_1574x830.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><span>Setup steps on the Databricks side</span></h3><ol><li><p><span>Get redirect URLs and IPs from the external agent team.</span></p></li><li><p><span>Create the OAuth app: Account Console &gt; Settings &gt; App Connections &gt; Add connection.</span></p></li></ol><ul><li><p><span>Name: descriptive (e.g., foundry-mcp-client)</span></p></li><li><p><span>Redirect URLs: from agent team</span></p></li><li><p><span>Client type: as specified by agent team</span></p></li><li><p><span>Scopes: combine as needed</span></p></li></ul><ol><li><p><span>Allowlist IPs in the workspace IP access list (if applicable).</span></p></li><li><p><span>Grant UC permissions: ensure users or SPs have access to the vector search index, Genie space, UC functions, or tables.</span></p></li><li><p><span>Share credentials: send the agent team the client ID, endpoints, and MCP server URLs.</span></p></li><li><p><span>Configure AI Gateway: set up rate limits, enable usage tracking.</span></p></li></ol><p><span>Automation-friendly OAuth app creation via CLI:</span></p><p><code>databricks account custom-app-integration create --json &#8216;{</code></p><p><code>  &#8220;name&#8221;: &#8220;foundry-mcp-client&#8221;,</code></p><p><code>  &#8220;redirect_urls&#8221;: [&#8221;https://&lt;redirect-from-agent-team&gt;&#8221;],</code></p><p><code>  &#8220;confidential&#8221;: true,</code></p><p><code>  &#8220;scopes&#8221;: [&#8221;vector-search&#8221;, &#8220;genie&#8221;, &#8220;unity-catalog&#8221;, &#8220;offline_access&#8221;]</code></p><p><code>}&#8217;</code></p><h2><span>The Decision Tree at a Glance</span></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rY7L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rY7L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 424w, https://substackcdn.com/image/fetch/$s_!rY7L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 848w, https://substackcdn.com/image/fetch/$s_!rY7L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!rY7L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rY7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png" width="1456" height="1083" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1083,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314101,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rY7L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 424w, https://substackcdn.com/image/fetch/$s_!rY7L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 848w, https://substackcdn.com/image/fetch/$s_!rY7L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!rY7L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb2cee-ef17-4aef-8bd2-482677d858ec_1860x1384.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3><span>Common Scenarios (Quick Paths)</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o3Et!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o3Et!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 424w, https://substackcdn.com/image/fetch/$s_!o3Et!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 848w, https://substackcdn.com/image/fetch/$s_!o3Et!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 1272w, https://substackcdn.com/image/fetch/$s_!o3Et!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o3Et!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png" width="1456" height="759" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:759,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187347,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.databricksters.com/i/203388920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o3Et!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 424w, https://substackcdn.com/image/fetch/$s_!o3Et!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 848w, https://substackcdn.com/image/fetch/$s_!o3Et!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 1272w, https://substackcdn.com/image/fetch/$s_!o3Et!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55f5a06f-e2bb-45c0-97f1-09c6834c709b_1576x822.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><span>Closing Thoughts</span></h2><p><span>Working through these six questions before writing any code keeps you from over-engineering a Supervisor Agent when a single MCP URL would have done the job, or from committing to OBO before confirming that your agent framework supports authorization code flow.</span></p><p><span>If you take only one thing from this post: answer the cross-tenant question early. Tenant topology determines whether you need a federation policy, and federation policies require account admin access on the Databricks side. Discovering that requirement after you have built half the integration is painful.</span></p><p><span>Done well, none of this complexity ever reaches the user. They open Teams, ask &#8220;what was our on-time delivery rate in the Northeast last week,&#8221; and get back numbers that respect their permissions, their region, their role. They never see the OAuth flow, the supervisor routing, or the federation policy. They just get the answer where they were already working. That is the whole point.</span></p><h2><span>References</span></h2><ul><li><p><a href="https://docs.databricks.com/generative-ai/mcp/managed-mcp/"><span>Use Databricks managed MCP servers</span></a></p></li><li><p><a href="https://docs.databricks.com/generative-ai/mcp/connect-external-services/"><span>Connect non-Databricks clients to Databricks MCP servers</span></a></p></li><li><p><a href="https://docs.databricks.com/generative-ai/agent-framework/agent-authentication-model-serving/"><span>Authentication for AI agents (Model Serving)</span></a></p></li><li><p><a href="https://docs.databricks.com/dev-tools/auth/oauth-federation/"><span>OAuth token federation</span></a></p></li><li><p><a href="https://docs.databricks.com/dev-tools/auth/oauth-federation-policy/"><span>Configure a federation policy</span></a></p></li><li><p><a href="https://docs.databricks.com/generative-ai/agent-bricks/multi-agent-supervisor/"><span>Supervisor Agent (multi-agent system)</span></a></p></li><li><p><a href="https://docs.databricks.com/generative-ai/mcp/custom-mcp/"><span>Host custom MCP servers using Databricks Apps</span></a></p></li><li><p><a href="https://docs.databricks.com/generative-ai/agent-framework/multi-agent-apps/"><span>Build a multi-agent system on Databricks Apps</span></a></p></li><li><p><a href="https://docs.databricks.com/ai-gateway/"><span>Unity AI Gateway</span></a></p></li><li><p><a href="https://docs.databricks.com/generative-ai/agent-framework/unstructured-retrieval-tools/"><span>Connect agents to unstructured data (Vector Search)</span></a></p></li></ul><h2><span>Glossary</span></h2><p><strong><span>Term</span></strong></p><p><strong><span>Definition</span></strong></p><p><strong><span>MCP</span></strong></p><p><span>Model Context Protocol, an open standard for connecting AI agents to tools and data sources</span></p><p><strong><span>OBO</span></strong></p><p><span>On-behalf-of authentication: the agent acts with the end user&#8217;s identity and permissions</span></p><p><strong><span>Token Federation</span></strong></p><p><span>Exchanging an external IdP JWT for a Databricks OAuth token without storing Databricks secrets</span></p><p><strong><span>AI Gateway</span></strong></p><p><span>Databricks&#8217; central governance layer for LLM endpoints, MCP servers, and coding agents</span></p><p><strong><span>Supervisor Agent</span></strong></p><p><span>A multi-agent orchestrator that routes queries to specialized sub-agents behind a single endpoint</span></p>]]></content:encoded></item><item><title><![CDATA[Three decisions that make or break your production agent]]></title><description><![CDATA[A practitioner's framework for the three forks in the road that actually matter &#8212; tackle them in whatever order makes sense for your team]]></description><link>https://www.databricksters.com/p/three-decisions-that-make-or-break</link><guid isPermaLink="false">https://www.databricksters.com/p/three-decisions-that-make-or-break</guid><dc:creator><![CDATA[Austin]]></dc:creator><pubDate>Thu, 28 May 2026 15:02:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f0ff43c1-d35b-4c84-9a9b-6995c1bf4890_1376x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>TL;DR</strong></h1><ul><li><p>Most production agent failures come from three architectural decisions: <strong>data serving path</strong>, <strong>data access abstraction</strong>, and <strong>observability</strong>.</p></li><li><p>Start with the <strong>simplest serving path that meets latency needs</strong>: use SQL Warehouse first, optimize table layout and queries, then add session caching or OLTP only if measurements justify it.</p></li><li><p>Put all data access behind <strong>one execution interface</strong> like <code>execute_sql(...)</code> so you can centralize routing, caching, retries, parameterization, and safety controls.</p></li><li><p>Treat observability as a launch requirement: <strong>trace tool calls, store traces in queryable tables, and add a synthetic heartbeat</strong> to measure true end-to-end freshness and latency.</p></li><li><p>The winning pattern is not &#8220;most advanced architecture first&#8221;; it is <strong>measure, optimize the hot path, and preserve the ability to swap components without rewriting the agent</strong>.</p><p></p></li></ul><h2>The Framework</h2><p>You can stand up an agent in an afternoon. Standing one that holds latency SLAs under real concurrency is a different exercise &#8212; one most teams underestimate.</p><p>The good news: most production agents need to talk to data and they will eventually run into the same three forks in the road. Pick well on each, and most of the other problems become tractable. Pick poorly, and you&#8217;ll be rebuilding under pressure.</p><p>This is a practitioner&#8217;s framework for the three decisions. They&#8217;re independent &#8212; you can tackle them in any order, and most teams end up working on all three in parallel. What matters is that you&#8217;ve made a deliberate call on each one.</p><h2><strong>Decision 1: How will the agent fetch data?</strong></h2><p>The instinct here is to jump to the most complex serving pattern before tuning the simplest one. Resist it.</p><p>You have three realistic options:</p><ul><li><p><strong>Option A &#8212; Direct SQL Warehouse Serverless.</strong> Your tool calls go straight to a SQL warehouse. No new infrastructure, no reverse ETL. Worth knowing: Serverless  keeps a remote result cache that survives warehouse shutdowns, so repeat queries stay fast even after the warehouse scales to zero. The fastest thing to ship.</p></li><li><p><strong>Option B &#8212; In-session caching.</strong> If your agent makes repeated queries against the same dataset within a single session, fetch it once and cache it in the session so subsequent calls don&#8217;t re-hit the warehouse. The implementation can be as simple as a dict or a DataFrame in the agent process, or an embedded SQL engine like DuckDB if you need to issue varied SQL against the cached data. The decision is about <em>recognizing intra-session repetition</em>, not about picking a cache library.</p></li><li><p><strong>Option C &#8212; Lakebase (OLTP).</strong> You reverse-ETL the tables the agent reads into Databricks Lakebase, a managed Postgres, and the agent queries Postgres instead of Delta. Sub-50ms point lookups. Highest performance ceiling, highest operational cost. Lakebase also doubles as a place to store online features for sub-second feature lookups and can persist agent session state &#8212; if you&#8217;re already running it for those reasons, the marginal cost of using it as your serving layer drops.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wtgf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wtgf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 424w, https://substackcdn.com/image/fetch/$s_!wtgf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 848w, https://substackcdn.com/image/fetch/$s_!wtgf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 1272w, https://substackcdn.com/image/fetch/$s_!wtgf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wtgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png" width="1456" height="852" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wtgf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 424w, https://substackcdn.com/image/fetch/$s_!wtgf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 848w, https://substackcdn.com/image/fetch/$s_!wtgf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 1272w, https://substackcdn.com/image/fetch/$s_!wtgf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a31680-b4eb-426a-950a-ae33d1eeeeea_1462x856.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The mistake I see most:</strong> teams pattern-match on &#8220;we need low latency&#8221; and jump to Option C before they&#8217;ve measured Option A. They end up running a reverse-ETL pipeline they didn&#8217;t need.</p><p>Here&#8217;s the order that actually works:</p><ol><li><p><strong>Start with Option A.</strong> Get the agent end-to-end on SQL Warehouse/ DBSQL  Serverless. Size the warehouse sensibly &#8212; Medium for dev, Large for prod is a reasonable starting point &#8212; X-Large gets expensive fast and is rarely the right place to begin. Start with min 1, max 3&#8211;4 clusters, then watch the query history; if queries are getting queued, add a cluster. Keep the warehouse warm if you can&#8217;t tolerate cold-start tail latency on the first query after a scale-down.</p></li><li><p><strong>Tune the simple path before adding a complex one.</strong> Did you actually optimize the layout of the table the agent reads? Are your queries hitting the right clustering keys? Are you using native parameterized queries, not inline params? In our experience, half of the &#8220;we need OLTP&#8221; cases evaporate once the table layout is right.</p></li><li><p><strong>Only then evaluate B or C.</strong> The decision turns on access pattern, not vibes. If a single session issues several tool calls that hit the same underlying data, Option B&#8217;s in-session caching pays for itself &#8212; the trigger is repetition within a session, not session length. If your agent makes single point lookups with hard sub-second SLAs across thousands of concurrent sessions, Option C is the answer.</p></li></ol><p>A note on what actually matters for performance: it&#8217;s the engine serving the agent and the layout of the specific table that engine reads &#8212; nothing else. Medallion labels are organizational naming, not architecture. The agent doesn&#8217;t care what tier a table sits in; it cares whether the table it queries is laid out for fast reads. If your agent reads from a Delta table via SQL Warehouse/DBSQL, that t<a href="https://www.canadiandataguy.com/p/optimizing-delta-lake-tables-liquid">able&#8217;s clustering and file layout determine your latency.</a> If your agent reads from Lakebase, the Delta layout upstream is mostly irrelevant; what matters is the Postgres indexing and the sync freshness. Either way: optimize whatever the serving engine actually reads at query time, and let Predictive Optimization handle upstream tables that aren&#8217;t in the agent&#8217;s hot path. Avoid materialized views with non-deterministic refresh behavior anywhere in that hot path.</p><p>For Delta tables specifically, use <strong>liquid clustering</strong> and put real thought into the clustering keys. Sortable types make great keys &#8212; integers, dates, and timestamps in particular, because they have clean min/max statistics that let Delta skip files efficiently. String keys can work, but they&#8217;re far more sensitive to encoding choices (lexicographic ordering, padding, casing) and tend to underperform. Pick keys that match the actual filter patterns the agent will hit &#8212; usually some tenant or entity ID plus a time dimension &#8212; and verify the agent&#8217;s queries are pruning files the way you expect by reading the query profile.</p><p><strong>Quick tip:</strong> If you&#8217;re merging into a table continuously &#8212; say every 5 seconds &#8212; schedule explicit liquid clustering at a regular cadence (every 30&#8211;60 minutes). Otherwise you&#8217;re relying on Predictive Optimization to catch up on its own schedule, and for hot, agent-facing tables that&#8217;s usually not fast enough.</p><p><strong>Force yourself to write down, before you build:</strong></p><ul><li><p>The p95 latency budget per agent tool call, end-to-end, not per-query.</p></li><li><p>Average and p90 queries per agent session. If it&#8217;s two, the cache barely helps. If it&#8217;s ten, it&#8217;s a no-brainer.</p></li><li><p>The size of the largest object the agent will scan. Some OLTP stores have hard per-instance ceilings; if you&#8217;re past them, the architecture has to bend.</p></li></ul><h2><strong>Decision 2: How will you expose data to the agent?</strong></h2><p>Some tool in your agent that needs data &#8212;they needs a way to talk to the data plane. The instinct is to give each tool its own SQL connector when needed, its own connection management, its own retry logic. Don&#8217;t.</p><p><strong>Use one execution interface.</strong> A single function &#8212; call it execute_sql(query, max_staleness:int = 60) &#8212; that every data-bearing tool calls. Routing, caching, parameterization, observability, retries: all internal to that one function. Tools pass SQL, get results back, and don&#8217;t know or care whether the query went to SQL Warehouse, an in-memory cache, or Lakebase.</p><p>Without abstraction each tool manages its own connector, retries, parameters. With execute_sql One place to route, optimize, and enforce safety. Without the abstraction, every tool reinvents connection management. With it, you change one function to swap engines, tune queries, or harden security.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yy77!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yy77!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 424w, https://substackcdn.com/image/fetch/$s_!yy77!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 848w, https://substackcdn.com/image/fetch/$s_!yy77!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 1272w, https://substackcdn.com/image/fetch/$s_!yy77!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yy77!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png" width="1456" height="785" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:785,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yy77!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 424w, https://substackcdn.com/image/fetch/$s_!yy77!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 848w, https://substackcdn.com/image/fetch/$s_!yy77!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 1272w, https://substackcdn.com/image/fetch/$s_!yy77!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac67b8f-2159-495f-9688-006f2a3877e4_1588x856.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the single highest-leverage abstraction you can put in your agent. Three reasons:</p><ul><li><p><strong>One place to optimize.</strong> Tuning one query path improves every tool simultaneously. Tuning nine separate paths means you&#8217;ll tune three and forget the rest.</p></li><li><p><strong>One place to swap implementations.</strong> When you decide to add caching (Decision 1, Option B) or move to Lakebase (Option C), no tool code changes. You rewrite execute_sql and you&#8217;re done.</p></li><li><p><strong>One place to enforce safety.</strong> Parameterization, query limits, allowed-table lists &#8212; all enforced once.</p></li></ul><p>On safety specifically, two things to bake in from day one.</p><p><strong>Native parameterized queries, always.</strong> If you&#8217;re on databricks-sql-connector &gt;= 3.0, use paramstyle=&#8221;named&#8221;. Inline parameters bypass server-side caching, won&#8217;t survive a future connector release, and open up injection vectors. </p><p><strong>Keep sensitive identifiers out of the model&#8217;s parameter space.</strong> If your agent operates on a specific tenant, customer, or dataset, the model should not be the thing choosing which tenant to query. Use a factory/closure pattern: bind the tenant ID into the tool at construction time, so the model can only call the tool &#8212; it can&#8217;t substitute a different tenant via prompt injection. Save the parameterized version for arguments the model genuinely should control, like a column name to inspect.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;16c7b980-494c-4610-9b76-58796595ff26&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">def make_detect_missing_data(tenant_id: str):
    @tool
    def detect_missing_data(column_name: str) -&gt; str:
        """Detect null values in a column."""
        return _run(tenant_id, column_name)  # tenant_id closed over
    return detect_missing_data</code></pre></div><p>Compare that to the naive pattern where tenant_id is a tool parameter the LLM fills in. The naive version is one cleverly-worded user message away from a tenant-isolation incident.</p><p><strong>Let the caller declare freshness tolerance.</strong> execute_sql should accept a max_staleness parameter &#8212; the maximum age of cached data the caller will tolerate for this query. If max_staleness is generous (say, 60 seconds), the query runner is free to serve from the in-session cache, the SQL Warehouse remote result cache, or a Lakebase replica with known lag. If it&#8217;s zero, the runner bypasses caches and goes to the source of truth. Th<strong>is pushes the consistency-vs-latency tradeoff to the call site, where the tool author actually knows whether eventual consistency is acceptable</strong>. Without it, you end up either over-caching (and serving stale answers in places that can&#8217;t tolerate them) or under-caching (and paying full warehouse latency for queries that didn&#8217;t need fresh data).</p><h2><strong>Decision 3: How will you know the agent is working?</strong></h2><p>If you can&#8217;t see what your agent is doing in production, you don&#8217;t have an agent &#8212; you have a black box that occasionally answers questions. M<strong>ost teams get tracing late, after the first incident. Don&#8217;t be that team.</strong></p><p><strong>Use MLflow tracing, and route it to Unity Catalog.</strong> MLflow&#8217;s tracing is OpenTelemetry-compatible. Link your experiment to a Unity Catalog trace location with </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;a88208ae-20e8-4577-aded-81379008657b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">syntax trace_location=UnityCatalog(
catalog_name=catalog_name,
schema_name=schema_name,
table_prefix=table_prefix)</code></pre></div><p>and your traces land as Delta tables in UC that you can query with SQL. You&#8217;ll thank yourself the first time someone asks &#8220;show me every slow trace for tenant X in the last 24 hours.&#8221; Without UC-backed traces, that&#8217;s an afternoon of grepping logs. With them, it&#8217;s a SQL query.</p><p><strong>Instrument the right boundaries.</strong> At minimum: input validation, tool dispatch, each tool&#8217;s SQL execution, and the model call itself. If your agent framework supports autolog, lean on it &#8212; but verify it&#8217;s actually emitting the spans you expect. Auto-instrumentation has bugs and gets disabled by version mismatches. When autolog isn&#8217;t trustworthy in your stack, fall back to manual mlflow.start_span() for the boundaries that matter. Don&#8217;t trace everything; trace the things you&#8217;d want to filter on during an incident &#8212; tenant_id, query_pattern, tool_name.</p><p><strong>Add a synthetic heartbeat.</strong> Inject a known record at the source on a fixed cadence &#8212; every 30 or 60 seconds &#8212; and measure when it shows up at the agent. This is the one honest measure of end-to-end latency. System tables and per-stage metrics will tell you each component is healthy while the whole pipeline is silently 90 seconds behind. A heartbeat catches that immediately. It&#8217;s about a hundred lines of code; build it before you scale.</p><p><strong>Set a latency budget per stage and defend it.</strong> Source &#8594; ingestion &#8594; transformation &#8594; serving table &#8594; agent. Every stage gets a number. Every stage has an SLO. When something breaks, you know which stage to look at without guessing. The budget also forces an honest design conversation: if your end-to-end target is 30 seconds and CDC alone takes 12, you don&#8217;t have 18 seconds for everything else &#8212; you have to decide what to cut.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RWN2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RWN2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 424w, https://substackcdn.com/image/fetch/$s_!RWN2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 848w, https://substackcdn.com/image/fetch/$s_!RWN2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 1272w, https://substackcdn.com/image/fetch/$s_!RWN2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RWN2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png" width="1456" height="799" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:799,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RWN2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 424w, https://substackcdn.com/image/fetch/$s_!RWN2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 848w, https://substackcdn.com/image/fetch/$s_!RWN2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 1272w, https://substackcdn.com/image/fetch/$s_!RWN2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1169f96-4b28-41a0-82ea-b67e412ad3b8_1586x870.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three observability tactics in one picture: a per-stage budget you can defend, trace spans landing in queryable storage, and a heartbeat that measures end-to-end the same way a user would.</p><h2><strong>What this looks like in practice</strong></h2><p>Start simple. Ship Option A for serving. Wrap data access in execute_sql. Turn on MLflow tracing to Unity Catalog and add a heartbeat. Resist the urge to add caching, OLTP, or stateful streaming gymnastics until you&#8217;ve measured a real problem.</p><p>The teams that ship reliable agents they do it boringly. They benchmark before they scale. They write down their latency budget. They abstract their data access. They trace the things that matter.</p><p>The teams that ship unreliable agents skip ahead to the interesting parts and find out, in production, that the boring parts were the load-bearing parts.</p><p>You don&#8217;t need to pick the optimal architecture on day one. You need to pick one you can swap pieces of without rewriting everything. Get the three decisions above right and you will thank yourself later.</p><h2>FAQ</h2><h3><strong>1. What is the best default serving option for a new production agent?</strong></h3><p>Start with <strong>SQL Warehouse</strong>. It is the fastest path to production, requires the least new infrastructure, and is often sufficient once query patterns and table layout are optimized.</p><h3><strong>2. When should I add in-session caching?</strong></h3><p>Add it when a single agent session repeatedly queries the <strong>same underlying data</strong>. If sessions only issue one or two reads, caching usually adds complexity without much benefit.</p><h3><strong>3. When does an OLTP serving layer make sense?</strong></h3><p>Use it when you need <strong>very fast point lookups under high concurrency</strong> and have hard latency targets that the warehouse path cannot meet even after optimization.</p><h3><strong>4. Why should every tool call the same </strong><code>execute_sql(...)</code><strong> function?</strong></h3><p>A shared execution layer gives you <strong>one place</strong> to manage routing, retries, caching, parameterization, observability, and safety policies. It also makes future architecture changes much easier.</p><h3><strong>5. What is the biggest security mistake in agent data access?</strong></h3><p>Letting the model choose sensitive identifiers such as <strong>tenant or customer IDs</strong>. Those should be bound into the tool outside the model&#8217;s control to reduce isolation and prompt-injection risk.</p><h3><strong>6. What should I instrument first?</strong></h3><p>At minimum, trace <strong>input validation, tool dispatch, SQL execution, and model calls</strong>. Then add a synthetic heartbeat so you can measure actual end-to-end lag, not just component-level health.</p>]]></content:encoded></item><item><title><![CDATA[Building Useful AI Agents with Agent Bricks]]></title><description><![CDATA[From docs to dependable answers: building a Databricks Knowledge Assistant with Agent Bricks]]></description><link>https://www.databricksters.com/p/building-useful-ai-agents-with-agent</link><guid isPermaLink="false">https://www.databricksters.com/p/building-useful-ai-agents-with-agent</guid><dc:creator><![CDATA[Canadian Data Guy]]></dc:creator><pubDate>Tue, 20 Jan 2026 18:03:52 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/184467797/a066162f3b6fbab937d9f2d57fac4003.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<h2>What is Agent Bricks? What is the Knowledge Assistant?</h2><p>The Knowledge Assistant brick is one of several specialized agent types available in Databricks Agent Bricks, which is a low-code solution to help developers easily create and optimize domain specific agents with a few clicks.</p><p>The Knowledge Assistant brick is a no-code RAG agent that delivers reliable responses with citations. Instead of relying solely on what a language model learned during training, RAG returns relevant information from your documents in real time and is used to generate responses. The Knowledge Assistant brick uses optimizations out of the box, so you do not need to worry about optimizing the index or LLM. In our demo, we built a Knowledge Assistant for a team working with Databricks. The agent uses blog posts (written by our team, here on Databricksters) to answer questions about Spark streaming, coding practices, etc.</p><p>This same approach can work for any scenario where you have custom knowledge and want to create &#8220;general intelligence&#8221; on your data. Think of unstructured data that you already have-- HR policies, production information, or technical docs.</p><h4>Prerequisites</h4><p>Before building your own brick, ensure your workspace meets these requirements:</p><ul><li><p>Mosaic AI Agent Bricks Preview (Beta) enabled</p></li><li><p>Production monitoring for MLflow (Beta) enabled</p></li><li><p>Serverless compute enabled</p></li><li><p>Unity Catalog enabled</p></li><li><p>Access to Mosaic AI model serving</p></li><li><p>Access to foundation models in Unity Catalog through <a href="http://system.ai">system.ai</a> schema</p></li><li><p>Serverless budget policy with non-zero budget</p></li><li><p>Workspace in a supported region</p></li></ul><p><strong>Data Requirements</strong></p><p>Make sure you have one of the following:</p><ul><li><p>Files in a Unity Catalog volume (supported formats: txt, pdf, md, ppt, docx)</p></li><li><p>A vector search index</p><ul><li><p>The databricks-gte-large-en embedding model endpoint must have AI guardrails and rate limits disabled.</p></li></ul></li></ul><h2>Adding feedback and improving Agent Quality through feedback</h2><p>You can add feedback and assessments to each trace. This is where the human feedback begins-- you can start noting which responses are good, what needs improvement, etc. These assessments become a part of the MLflow experiment associated with the Agent Brick. You can aggregate this information using the MLflow API.</p><p>In my opinion, this is where Agent Bricks really shines. The Knowledge Assistant can automatically update itself according to the human feedback using a process called &#8216;Agent Learning from Human Feedback&#8217;. <em><a href="https://www.databricks.com/blog/agent-learning-human-feedback-alhf-databricks-knowledge-assistant-case-study">Learn more about this here. </a></em> This allows the agent to continuously improve based on expert expectations -- without you needing to retrain models or fiddle with prompts manually.</p><h3>The feedback loop</h3><p>The process is straightforward: (1) create your challenging questions, (2) have SMEs review the agent responses and add comments, and then (3) sync the feedback. &#8220;Syncing&#8221; will start the process to improve the agent based on the feedback.</p><p>How should you approach writing questions? Similar to creating an evaluation set, you should include a variety of questions that are critical for the use-case. Based on previous evaluations, you can include edge-case questions as well to see what SMEs want to see. Remember: you are only providing the questions, not the answers. The agent will generate the answers, and then the SMEs will provide the feedback on the answers.</p><p>Once you have your questions added, you can start a Labeling Session. Once that session is ready, share that link with SMEs and wait for the feedback to roll in. SMEs can add feedback on tone, style, or accuracy of that agent response. Make sure you communicate how to add feedback to your SMEs!</p><p>After ending a Labeling Session (after SMEs have added their feedback), you can start syncing the responses. Agent Bricks uses many techniques to sync the feedback with the agent. Congratulations! You have completed the first human feedback loop!</p>]]></content:encoded></item><item><title><![CDATA[Your Low-Code Shortcut to Production-Grade Agent on Databricks]]></title><description><![CDATA[Watch now (16 mins) | Follow our end-to-end journey building a knowledge assistant with AgentBricks and establishing a continuous evaluation loop with MLflow to improve it.]]></description><link>https://www.databricksters.com/p/your-low-code-shortcut-to-production</link><guid isPermaLink="false">https://www.databricksters.com/p/your-low-code-shortcut-to-production</guid><dc:creator><![CDATA[Canadian Data Guy]]></dc:creator><pubDate>Tue, 18 Nov 2025 16:02:42 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/179205898/d0c9755576a97a68d744cbf23dc56c4d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>The code base is available at https://github.com/jiteshsoni/BrickBrain, but you likely don&#8217;t need it. You can simply use the Databricks UI to create your agent.</p>]]></content:encoded></item></channel></rss>