Guides

Agentic Systems

One governed business-context layer for agent sprawl

Keep IDE agents, chat assistants, and custom agents answering from the same business definitions by putting governed retrieval behind one MCP entry point.

By Tirth Gajjar · Founder & CTO

14 min

At a glance

Agent sprawl without shared definitions produces conflicting numbers. Define business terms once, each with an owner and a version, and serve structured and unstructured retrieval through one governed MCP entry point that runs as the user, applies policy, cites its sources, and logs every call.

Use this guide to Agentic Systems to review the design choices and checks for your system.

Who this is for
Engineers building AI systems and technical leads reviewing the implementation.
Topics
  • Model Context Protocol (MCP)
  • Retrieval-Augmented Generation (RAG)
  • AI Agent
  • Tool / Function Calling
  • Hallucination & Grounding
  • Groundedness (Faithfulness)

Published

How do IDE agents, chat assistants, and custom agents keep answering from the same business definitions? Define the terms once, in a governed layer where each definition has an owner and a version, and make every agent reach your data through one MCP entry point that applies those definitions. The entry point runs each call as the user, enforces the same policies whichever client asked, returns citations with every figure, and logs every call. A new client then reuses the shared definitions instead of arriving with its own.

Sprawl is hard to prevent because each agent arrives with its own copy of the business. A coding agent reads a metric definition from a comment in the repository. A chat assistant was set up with a system prompt that someone wrote during a pilot. A custom agent uses a retrieval index built last quarter, and a BI tool has its own semantic model. Each one is correct by its own setup, and in the same meeting they produce three numbers for one question. Nobody is wrong in a way a single team can fix, so the reconciliation falls to people, every time.

This guide covers why sprawl produces conflicting numbers, what the context layer contains, why structured and unstructured retrieval belong behind one entry point, what every answer must carry, and how identity, policy and audit work. It closes with how to test the layer and how to move existing agents onto it. The tool shape and the access model have their own guides: MCP consolidation: fewer, larger tools and how to scope AI agent permissions.

Why does agent sprawl produce conflicting numbers?

The definition of a business term usually lives in the client, and every client has its own. When a team adds an AI agent, it configures that agent's context for the task in front of it: a few metric definitions in the prompt, a connection to the tables it needs, and an index over the documents the pilot used. That setup works, and it is invisible to the next team, who configure their own.

Databricks described the result in its announcement of the Genie One MCP server, which reached general availability on 22 September 2026:

Agents deployed in isolation lack the semantics and business definitions they need to answer accurately, rely on context that was modeled by hand at setup and has since gone stale, and return answers that contradict other agents pointed at the same data.

Staleness is the part teams notice last. A definition pasted into a prompt at setup does not change when finance changes the metric, so the agent goes on answering with the old formula and nothing flags it.

Three agents, one question, three definitionsIllustrative model. The definitions are examples, not a count of anything.SprawlIDE agentactive customer = logged in, last 30 daysChat assistantactive customer = paid an invoice this quarterCustom agentactive customer = has an open contractThree numbers,all defensible,none reconciledOne governed entryIDE agentChat assistantCustom agentContext MCPdefinitions, policy,audit, citationsactive customerdefinition v4, one ownerThe agents still differ in where they run. They stop differing in what the words mean.

This figure is an illustrative model. The three definitions of "active customer" are examples of the kind of divergence we mean, and they do not come from any client or survey. The point is structural: each definition is defensible, and the numbers disagree because the words were defined in three places.

We saw a related failure in document work before agents made it common. On DocVerse, our ESG filings pipeline, retrieving the right phrase from the wrong reporting year looked exactly like success. The fix there points the same way as this guide: versioned framework mappings, and every metric resolving back to the page it was read from. When two conflicting answers each carry a definition and a source, someone can compare them directly and settle which one applies.

What belongs in the business-context layer?

The layer holds meaning, not data. Data stays in the warehouse, the document stores and the operational systems. The layer holds what the words mean, which records the words refer to, and who may see what. Some platforms call this an ontology, meaning the defined entities, metrics and relationships a business uses, and the name matters less than the contents.

ElementWhat it holdsExampleWho owns it
Metric definitionsFormula, grain, filters, time basisNet revenue retention, by account, trailing twelve monthsThe team accountable for the number, often finance
Entities and keysWhat a customer, account or region is, and how IDs map across systemsOne account ID across the CRM, billing and supportData platform, with the system owners
SynonymsWhich words map to which definition"NRR" and "net retention" resolve to one metricWhoever owns the metric
Authoritative documentsWhich collections answer which questions, and how fresh they must beThe current pricing policy, not last year's draftThe function that publishes the documents
Access policiesWho may see which rows, columns and documentsRegional managers see their own regionsSecurity, with each data owner
VersionsWhen each definition changed, and what it was beforeRetention excludes one-off services from a stated dateEach owner, through review

Give every definition an owner and a version before any agent uses it. Without an owner, a disputed number has nowhere to go, and the agent that reported it gets blamed for a disagreement it inherited. Without a version, you cannot reproduce last quarter's answer after the formula changes, and an audit question about a past decision has no answer.

Synonyms need more care than they look like they need. People ask for "revenue" and mean one of several things, and a layer that resolves an ambiguous word silently has made a business decision nobody reviewed. When a term maps to more than one definition, the layer should ask, or state which definition it used in the answer.

Why put structured and unstructured retrieval behind one entry point?

Real business questions cross the line between tables and documents. "Why did EU retention drop last quarter?" needs the number from governed tables and the explanation from account notes, support tickets and a pricing change memo. If those are two separate tools, the agent joins them itself. It may resolve "EU" one way for the query and another way for the document search, and the answer quietly mixes two definitions.

One entry point resolves the terms once and applies the same resolution to both kinds of retrieval. The Genie One MCP describes the same shape:

It gives any agent a single interface to retrieve structured and unstructured data, insights, and answers from Genie One, grounded in governed business context from Genie Ontology.

We cite it as an example of the pattern, which is independent of the vendor. A team can build the same arrangement on its own warehouse and document stores. The requirement is that one service owns term resolution, and every retrieval path behind it uses what that service resolved.

What sits behind the one entry pointFramework. Layers top to bottom; the audit log runs the full height.ClientsIDE agents, chat assistants, custom agents, notebooksOne MCP entry pointthe user's own identity on every call, per-tool policy, rate limitsBusiness contextdefinitions, metrics, entities, synonyms, each with an owner and a versionGoverned retrievalstructured: queries over governed tables. Unstructured: search over documentsResponse contractanswer, definition used, query or passages, citations, freshnessAuditlogevery call,allowed orrefusedSwap a client and nothing below it changes. Change a definition and every client picks it up.

This figure is a framework. The five layers are the ones we would specify for any build, whether a managed service provides some of them or not. The audit log spans the full height because a refused call at the entry point matters as much as a completed query at the bottom.

Behind the entry point, the two retrieval paths still work differently. Structured questions become queries over governed tables, and the query text is part of the answer. Unstructured questions go through retrieval over the authoritative collections, and our guide on why RAG systems fail in production covers what breaks there. Document retrieval stays as hard as it was, and the layer's contribution there is that the document search and the query agree on what the question meant.

What must every answer carry?

An answer from the layer is a record, not a sentence. The agent can phrase it however the client needs, but the layer should return enough for anyone to check it later. If the layer returns only prose, the agent passes along a number nobody can trace, and a second agent with a different number starts the same argument.

FieldWhy it is there
The answerThe value or the passage that answers the question
Definition and versionWhich meaning of each term was used, so two answers can be compared
Query or passagesThe query that ran, or the passages that were read
CitationsLinks back to the tables and documents, precise enough to open
As ofWhen the data was last updated, so a stale figure is visible
Policy appliedWhat the caller's access filtered out, stated plainly
Statusanswered, ambiguous, not_permitted or no_data, never an empty answer that means one of them

The status field does more against hallucination than any instruction in the prompt. An agent that receives an empty result will often fill the gap. An agent that receives not_permitted with a reason can tell the user they lack access, and one that receives ambiguous with the candidate definitions can ask. Our groundedness checks depend on the citations being there, because a claim can only be checked against a source the answer names.

One question through the layerFramework. Each step can stop the request and say why.Resolve termswords to definitionsambiguous: askCheck accessas this userrefused: say soRetrievequery or searchempty: report itComposeanswer from resultscite each figureRecordcall, user, definitionsources, outcomeExample question: net revenue retention for EU accounts, last quarter.Resolve maps it to one metric definition and one region list, by version.The answer returns with that version, the query that ran, and the tables it read.A layer that cannot say which definition it used has not answered the question.

This figure is a framework. The example question is illustrative, and each step's stop condition is the behavior we would require of the layer, not a description of a specific product.

The Prospex build applied the same rule at generation time, with an evidence lock: the model could only state what the system had retrieved. A context layer applies it one step earlier, at retrieval, so that every client starts from evidence that already carries its definition and source.

How should the layer handle identity, policy, and audit?

Run every call as the user who asked, not as a service account. A shared credential means every agent sees what the most privileged integration sees, and the audit trail records the integration, not the person. Pass the user's identity through the MCP connection with OAuth on behalf of the user, and keep the underlying data credentials inside the layer, where the model never sees them.

Enforce policy at the entry point, once, for every client. Row filters, column masks and document permissions should give the same result whether the question came from an IDE, a chat assistant or a scheduled agent. When the policy lives in each client instead, the clients drift apart on access the same way they drifted apart on definitions. Databricks describes its version of this as a managed MCP service inside its gateway:

The Genie One MCP now lives within Unity Gateway as a managed MCP Service, providing centralized governance, fine-grained policies, and audit logging across every invocation

Log every call, allowed or refused, with the user, the client, the resolved definitions and their versions, the sources read, and the status returned. That record lets you answer who saw which number, under which definition, and when. Our guide on audit trails for AI decisions covers what else the record needs when an answer feeds a decision someone has to defend. The same log shows which definitions are asked about most and which come back ambiguous, which tells the owners where to spend their review time.

Put guardrails on output at the entry point too, whenever the layer can return sensitive fields. A mask applied at the entry point holds for every client, while a mask applied in one client's prompt holds only for that client.

How do you test that every agent gets the same answer?

Test the layer the way a skeptical analyst would, by asking the same thing from different places and comparing. These checks go into the eval set, and they run before any client moves onto the layer and again after every definition change.

CheckPassFail
Same question from three clientsThe same value, definition version and citationsDifferent values, or the same value with different definitions
An ambiguous termThe layer asks, or names the definition it choseA silent choice
A user without accessnot_permitted, stated to the userAn empty result the agent reports as "none"
A definition changeEvery client reflects it after publication, and the old version still reproducesOne client lags, or last quarter's answer cannot be rebuilt
A document answerEach citation opens the passage that supports the claimA citation that resolves to the right file and the wrong section
Stale dataThe as-of date appears with the answerA number with no date

The cross-client check catches the failures that matter most, and it is easy to automate. Keep a fixed list of questions that people have argued about, run each through every client you support, and fail the build if the answers disagree. Our evals guide covers how to turn those arguments into test cases, and the reconciliation meetings you already hold are the best source of questions.

How do you move existing agents onto the layer?

Most organizations already have several agents in use, each with its own embedded definitions. A migration that stops all of them at once will not get approved, and it does not need to. Move one client at a time, and remove local definitions as each one moves.

  1. Inventory where definitions live today: system prompts, repository comments, BI semantic models and retrieval indexes. The list is usually longer than anyone expects, and it is the scope of the work.
  2. Start with the terms that already cause arguments. Assign each an owner, write the definition, and give it a version.
  3. Stand up the entry point with read-only tools, running as the user, with the response contract and the audit log from the first release.
  4. Move the client with the most visible disagreements first. Delete its local definitions when it moves, or it will keep using them.
  5. Run the cross-client checks on a schedule, and after every definition change.
  6. Add documents and write actions only after the read path has held up, and give write actions their own permission review.

A single agent over a single source does not need this layer. It needs good tools, which the consolidation guide covers, and good workflows, which our guide on agent playbooks as MCP tools covers. The context layer earns its cost when a second client starts answering questions about the same business. We build it for clients as part of our MCP servers and RAG systems work.

Questions buyers ask

What is a governed business-context layer?#

A governed business-context layer is one service that holds what your business terms mean, which records they refer to, and who may see what, and that every AI agent reaches through a single MCP entry point. Each definition has an owner and a version. The entry point runs each call as the user, applies the same policies for every client, returns citations and the definition used with every answer, and logs every call.

Why do different AI agents give different numbers for the same question?#

Each agent was configured with its own definitions: a formula in a system prompt, a semantic model in a BI tool, or an index built for a pilot. Each setup is correct on its own terms, so the agents disagree without any of them being broken. Definitions pasted in at setup also go stale when the business changes the metric, and nothing warns anyone.

Is this the same as a semantic layer?#

It overlaps. A semantic layer defines metrics over tables for BI tools. A business-context layer for agents also covers documents, synonyms, entity mapping across systems, access policies and versions, and it is reached through MCP so any agent can use it. If you already have a semantic layer, it is a good source for the metric definitions, and the context layer should use it rather than copy it.

Do we need to buy a platform to build one?#

No. The pattern is one entry point, governed definitions with owners and versions, retrieval that uses them, per-user identity, policy at the entry point, citations and an audit log. Managed MCP services from data platform vendors, such as the Genie One MCP from Databricks, package much of it for data already on their platform. Teams can build the same arrangement on their own warehouse and document stores.

How does the layer handle permissions?#

It runs every call as the user who asked, using OAuth on behalf of that user, and keeps the data credentials inside the layer where the model never sees them. Row filters, column masks and document permissions are enforced at the entry point, so every client gets the same result. When a user lacks access, the layer returns a not permitted status, so the agent can say so instead of reporting that nothing exists.

How do we test that our agents agree?#

Keep a fixed list of questions people have argued about and run each one through every client you support. The value, the definition version and the citations should match. Add checks for ambiguous terms, users without access, stale data and definition changes, and run them before each client moves onto the layer and after every definition change.

Further reading