What you will take away from this lesson
In 202 - Your first day with Plexara, we walked through what platform_info loads and the three-step discover-query-enrich workflow the operating manual prescribes. This lesson zooms in on the first step.
Discovery is one tool. A single search call reaches every system the agent is allowed to see: the data catalog, the business glossary, canonical knowledge pages, your own memory, captured insights, saved assets, uploaded reference material, the prompt library, API endpoints, and the connection list. A companion fetch reads any one of those results back in full. There is no per-backend search tool to choose between, which is exactly the point: the agent does not have to guess where an answer lives before it goes looking.
Learning Objectives
- 01Explain why discovery on a Plexara MCP is one universal search tool rather than one search tool per backend.
- 02Name the sources a single search query reaches and which of them are shared, visibility-scoped, or private to you.
- 03Read a search response: results grouped by source, a coverage summary, and a ranking field that says how the hits were ranked.
- 04Use fetch to read a search hit in full, and recognize why a persona granted search without fetch can find things it cannot open.
- 05Tell discovery apart from structural catalog reads, and use datahub_browse, get_schema, get_lineage, and get_queries for the second job.
- 06Run the short domain warm-up that brings world knowledge into an exploratory session.
Where we are in the curriculum
If any term in this lesson feels unfamiliar, the 100 series is one click back. The 200 series assumes that mental model.
100 Series: the foundation
- 101What is a Large Language Model?Brilliant at language, blind about your data. Tokens, hallucination, the grounding problem.
- 102Tokens and your budgetSubscription-plan economics, session limits, and Plexara enrichment dedup.
- 103Context, compression, and memoryThe keep / compress / clear playbook and how memory carries across sessions.
- 104Frontier models, specialized models, and why enterprise AI uses bothThree knowledge sources (training, web search, tools). MCP as the exposure protocol.
- 105What is an AI agent?The think/call-tool/observe loop. Professor's knowledge, child's literalism.
- 110Is MCP just an API wrapper?MCP as an application layer. Spectrum from thin wrapper to full application server.
If a term in this lesson looks unfamiliar, back up to the 100 series. The 200 series assumes that mental model. Every row above is a direct link.
One way to discover, whatever the answer turns out to be
A question rarely announces where its answer lives. "How did the Southwest region do last quarter" might be answered by a dataset, by a glossary term that pins down what the company means by "region," by a knowledge page a steward wrote after the last reorganization, or by a note you left yourself three sessions ago. An agent that has to pick a search tool before it starts looking is guessing at that answer before it has any evidence, and a wrong guess costs a round trip and often a wrong answer.
So Plexara does not offer a search tool per backend. It offers one. A single search call fans across every source the caller can reach and reports what it found in each. Where an answer lives becomes something the response tells the agent rather than something the agent had to know in advance.
What one search query reaches, and who can see it
Shared across the deployment
Every caller whose persona reaches the underlying connection sees the same records.
Catalog datasets
Datasets from DataHub with their names, descriptions, tags, and domains. Ranked against a platform-held index of that text first, with DataHub’s own keyword search following as the recall tail for column names and ownership.
Governance vocabulary
Glossary terms, tags, and domains as searchable entities in their own right, not merely as attributes of a dataset. A term hit carries its definition, so "what does net revenue mean here" is answered without a second call.
Knowledge pages
The canonical home for business and domain ontology, searched over the full markdown body rather than a title or summary.
Context documents
Longer-form deployment context. Search is the only MCP path that surfaces them, and fetch is the only path that reads the body.
Prompts
The prompt library covered in 208, matched by intent rather than by exact handle.
API endpoints and connections
Endpoints aggregated across every API gateway connection, plus the configured connections themselves. Both are in the default corpus, not behind an opt-in.
Visibility-scoped
Reach depends on which scopes the caller belongs to, computed the same way the resource list is.
Resources
Human-uploaded reference material, searched over both its metadata and its extracted file content. Global material reaches every caller, persona material only its members, user material only its owner.
Private to the caller
Scoped server-side to the identity making the call, so a search never surfaces another person’s records.
Your memory
The personal memory covered in 206. Reading memory back is not a separate tool; it arrives as one group in an ordinary search response.
Insights and feedback
Observations you captured that are still awaiting admin review, and your own feedback threads.
Assets
The dashboards, reports, and exports you saved through the asset tools in 205.
A caller with no identity still sees the shared sources and none of the private ones. What a persona is allowed to find and what it is allowed to call are decided by the same rule, so the two can never disagree. See 207 - Governance: personas, access, and audit.
Grouped by source, with a coverage summary
Fanning across a dozen sources creates a problem a flat relevance list makes worse: the largest source wins. A catalog with forty thousand datasets will out-match a knowledge base of two hundred pages on almost any query, and the one page that actually answers the question ends up below the fold behind thirty datasets that merely mention the topic.
Search returns results bucketed by source instead, built from a display budget with a floor per source so every matching source stays visible and a ceiling per source so none of them runs away. Alongside the hits comes a coverage summary: how many records each source matched against how many are being shown. That second number is what keeps the agent honest about what it is looking at.
What a search response actually contains
groups
[{ source: "catalog", hits: [...] }, { source: "knowledge", hits: [...] }, ...]
Hits arrive bucketed by source rather than flattened into one relevance list. A strong match in the catalog cannot push the one knowledge page that actually answers the question off the bottom of the list.
coverage
[{ source: "catalog", matched: 38, shown: 5 }, { source: "memory", matched: 2, shown: 2 }]
Per-source matched and shown counts. The agent learns where the answer space lives even when only the top few of each source are displayed, so it knows whether to narrow the query or drill in.
ranking
"hybrid" | "lexical" | "entity"
Says how these results were ranked. An ordinary text query ranks hybrid, semantic vector comparison combined with lexical matching. A lookup keyed by a URN instead of by text matches the identifier rather than interpreting it, and says so.
ref and reference
reference: "mcp:knowledge_page:412" or "urn:li:dataset:(...)"
The handle a hit is read back by. Pass it to fetch to get the complete content, or to a scoped tool to drill in.
Snippet and score
text: "Daily sales aggregated by store and region..." score: 0.83
A hit is a navigational pointer, not the document. The snippet is enough to choose; the full text comes from fetch.
withheld and withheld_notice
withheld: 4, notice names the persona and the remedy
Records removed by the caller’s connection boundary are counted, not silently dropped. A shortened result set reads as "present, but not yours to see" rather than "does not exist."
The display set is built from a total budget with a floor per source, so every matching source stays visible, and a ceiling per source, so none of them runs away with the list. Unused budget is redistributed to the sources carrying more relevant hits. This is semantic enrichment (102, 201) applied to the discovery step: the response is shaped for a context window, not dumped into one.

How the hits are ranked
Semantic ranking is the feature people expect from a search tool. Every text query gets it: results rank hybrid, a semantic vector comparison combined with lexical matching, which is what lets a question find a dataset description sharing none of its words while an exact table name still lands where you expect it.
The response reports which path produced a result rather than leaving it implied, because not every lookup is a text search. That distinction is what the ranking field is for.
Then fetch reads it in full
A search hit is a pointer, not a document. It carries a title, a short snippet, a relevance score, and a reference. That shape is deliberate: a response that returned every matching record in full would spend the context window on material the agent has not yet decided it wants.
The reference is what turns a pointer into content. Fetch takes one and returns the complete record behind it, whatever kind of record that is. A knowledge page comes back as full markdown, a dataset as its catalog context, a glossary term as its definition and the datasets carrying it, a prompt as the prompt. The scoped readers that used to exist per source collapsed into this one verb.
One verb reads every source: fetch by reference
mcp:knowledge_page:<id>
The full markdown body of a knowledge page.
urn:li:document:<id>
The full body of a context document. No other MCP tool reaches it.
urn:li:dataset:<id>
The dataset’s catalog context.
urn:li:glossaryTerm | tag | domain:<id>
The name and definition, plus the datasets that carry it.
mcp:resource:<id>
The resource record, with contents inline for a text file at or under 1 MB.
mcp:asset:<id>
The asset’s metadata record. The blob itself stays in S3.
mcp:prompt:<id>
The full prompt.
mcp:memory:<id> and mcp:insight:<id>
Your full memory or insight record.
mcp:connection:(kind,name)
The connection descriptor.
Fetch reads under exactly the scope search applied, so it never returns content the same caller could not have found. A stale or out-of-scope reference comes back as a structured not-found rather than a tool error, which is why a citation pointing at something that has since been deleted degrades into a normal answer instead of a broken session.
The two are a pair, and a persona should hold both
Because the tools are separately grantable, it is possible to configure a persona that can search and cannot fetch. It is worth knowing what that looks like from the user side, because the symptom does not point at the cause.
Why discovery precedes querying
The operating manual that platform_info loads tells the agent to search before writing any query against the data, and usually to pull curated query templates for whatever dataset it settles on. This is not a style preference. It is how the agent avoids inventing schemas, misreading column names, or picking the wrong definition of a metric. This is the difference between searching the capability instead of the manual: the agent finds what exists before it acts.
The two-minute domain warm-up
Even with a thorough catalog and a well-tended knowledge base, exploratory sessions benefit from a short domain warm-up at the start. Giving the agent a moment to describe the data estate in its own words activates the relevant slice of its training-time world knowledge and surfaces any obvious gaps before you ask a question that depends on them.
What the platform returns is thorough, but it covers only what somebody documented. Obvious-to-humans context (a retailer sells physical goods through stores, a bank charges fees across customer accounts, a SaaS vendor tracks monthly recurring revenue) is not written down anywhere unless it was written down on purpose. A short warm-up closes that gap.
Glossary terms are how business language gets resolved
The governance vocabulary deserves its own note, because it changed shape. A glossary term, a tag, and a domain used to exist only as attributes hanging off a dataset: asking what a business term meant returned the datasets tagged with it and never the term itself. They are now searchable and fetchable entities in their own right, which means the question "what does this word mean here" finally has a direct answer.
Discovery and structural reads are different jobs
Search answers "what is there about this." It does not enumerate, and it does not walk a graph. Once the agent knows which dataset it wants, the questions turn structural: what columns does it have, what feeds it, what consumes it, what queries have already been written against it. Those go to the catalog directly.
The distinction is worth holding onto because it explains why the DataHub toolkit did not shrink when discovery moved out of it. Relevance ranking and structured navigation are not two implementations of the same idea.
The catalog is still reachable directly, for a different job
datahub_browse
Enumeration, not relevance. Use it to page through a known category rather than to answer a question.
Catalog contents listed by category: tags, domains, or data products.
datahub_get_schema
Before writing any query that references specific columns by name.
Column names, types, nullability, descriptions, tags, and glossary-term bindings for one dataset.
datahub_get_queries
Prefer these over free-form SQL. They are faster, tested, and usually correct.
Curated, pre-benchmarked query templates stored against a dataset, annotated with performance characteristics.
datahub_get_lineage
When a number looks off and the question becomes "where does this value actually come from."
Upstream and downstream relationships: which sources feed a dataset, which reports and dashboards consume it.
datahub_get_entity
When you already hold a URN and want the record behind it outside a search flow.
The full canonical catalog record for one entity, identified by URN.
The DataHub toolkit also carries write operations (datahub_create, datahub_update, datahub_delete) that administrators and knowledge curators use. Those sit next to the read tools above and are governed separately.
When one search is enough on its own
Not every session needs a domain warm-up, and not every question needs a fetch. Narrow, specific questions with clear entity references ("daily revenue by region for 2025") carry enough context in the question itself that the snippets in a single search response fill in the rest. The warm-up pays off most for new users, cross-domain questions, and anything where you are not already sure which dataset you want.
Where this leads
With the right dataset identified and a curated query template in hand, the agent is ready to run the query. The next lesson covers how Plexara reaches data through Trino and why picking the right query shape matters so much for performance.
Key terms
Eight terms cover the vocabulary you will see across search responses, catalog documentation, and every conversation about the discover step.
Key Terms
- search
- The universal discovery entry point. One query fans across every source the caller can reach and returns hits grouped by source with a coverage summary, rather than a single flat list one source can dominate.
- fetch
- The companion read verb. Takes any reference search emitted and returns that record in full, under exactly the scope search applied. Replaces the per-source readers that used to exist for each kind of record.
- Reference
- The handle a search hit carries. Either urn:li:... for DataHub catalog entities or mcp:... for platform-internal records. What you pass to fetch.
- Coverage summary
- The matched-versus-shown counts a search response carries per source. Tells the agent how much of the answer space it is looking at, so a truncated view is never mistaken for the whole one.
- Hybrid ranking
- Semantic vector comparison combined with lexical matching. How every text query is ranked, which is what lets a question match a description sharing none of its words. The response reports the path it used in its ranking field.
- Glossary term
- A named business concept with a formal definition and bindings to the datasets and columns implementing it. Searchable and fetchable in its own right, not only as an attribute of a dataset.
- Lineage
- Upstream and downstream relationships for a dataset. Answers where a value comes from and which reports would break if the dataset changed. A structural read, not a discovery one.
- Curated query template
- A pre-benchmarked, annotated query stored against a dataset in DataHub and retrieved with datahub_get_queries. Preferred over free-form SQL because it is tested, fast, and already knows the right aggregation patterns.
