What you will take away from this lesson
In 209 - Resources: the company files the agent should use, not reinvent, we closed out the three MCP primitives. Every subsystem in a Plexara MCP has now had its own lesson. This final 200-series lesson is the capstone: a single realistic question walked end to end, with a callout for every subsystem that fires along the way, plus an appendix of every tool a Plexara MCP exposes for when you need it.
Nothing here is new. The point is to see the pieces working together in one session rather than one at a time. If a step surprises you, the lesson that introduced that piece is linked right on the step.
Learning Objectives
- 01Follow one real Plexara session end to end, turn by turn, naming which subsystem fires at each turn.
- 02See discovery as the platform actually enforces it: one search across every source, fetch to read a result in full, and a warehouse query that is refused outright until discovery has happened.
- 03Watch a result become a durable object: saved with save_asset, corrected in place with an anchored manage_asset patch rather than a regeneration, and recorded with memory_capture for the Memory to Insight to Knowledge path.
- 04Pick from three styles of prompting (high-level, prompt-by-name, tool-by-name) and know when each is appropriate.
- 05Use the tool directory at the end as the reference it is: every tool the Plexara MCP exposes, grouped by toolkit, with badges that flag writes, admin-only operations, and the mandatory first call.
- 06Find any subsystem again from the series index: the eleven other 200-series lessons, plus the apps surface a tool result can carry.
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.
A single realistic question
Every lesson in the 200 series has described one subsystem. That is a sensible way to teach, but it is not how the subsystems show up in a real session. This capstone picks one ordinary analyst question and watches the subsystems work together turn by turn.
Turn by turn: what happens inside Plexara
The ten steps below walk through what happens between the moment the user hits enter and the moment a dashboard link comes back. Governance, platform_info, one search across every source, fetch, the search-before-query gate, a curated query template, enrichment on a byte budget, an asset and its anchored correction, and the memory that outlives the session are all present in this trace.
This is a transcript, not a diagram. Every step below was run against a live Plexara deployment, in the order shown, and the details are what came back: the sources search reached, the knowledge page that changed the answer, the runtimes, the version number the patch produced. Where reality differed from the tidy version, reality is what is written down.
What happens, turn by turn, inside Plexara
The question names ACME Corp, the entity cue that tells the agent this particular MCP is the right place to look. Without it, the agent might answer about retail sales at large. The persona attached to this user decides which tools exist for the rest of the session.
Every other tool is refused until platform_info has been invoked, so the agent calls it first. Back comes the ACME operating manual (the data estate, the query rules, the prompt library) and a session handle the agent then carries on every subsequent call. A call without the handle is refused.
A single search call comes back with hits from nine sources at once: the catalog, the governance glossary, knowledge pages, this user’s memory, captured insights, saved assets, uploaded resources, prompts, and API endpoints. Results are grouped by source with a coverage summary saying how many each source matched against how many are shown, so nothing gets crowded out by a source that happened to rank well.
Step 04
fetch reads one result in full, and it changes the answer
fetch, and knowledge paying off
Discovery: 203Among the hits is a knowledge page called ACME Fiscal Calendar. The agent passes its reference to fetch and reads the whole page: ACME’s fiscal year starts February 1, so fiscal Q3 is August through October, not July through September. The question the user asked has a different answer than it appeared to. Nobody had to tell the agent this; it was recorded once and found by search.
Discovery before query is enforcement, not advice. Had the agent gone straight to trino_query, the tool handler would never have run: the platform short-circuits with a SEARCH_REQUIRED result telling it to search first. That is why the agent searched, and why an ungrounded guess at the data’s shape is not a path the agent can take.
Step 06
The curated query template, not a query from scratch
Curated query templates
Trino and curated queries: 204datahub_get_queries on the matched dataset returns six benchmarked templates, one of which is a region-by-month revenue cross-tab with its measured runtime recorded on it. The agent adapts that template to the fiscal window rather than authoring an aggregation of its own.
The aggregation returns both fiscal quarters, by region, in well under a second. Attached to the result is the catalog’s context for the tables it touched: description, domain, and the glossary definition of Sales Region. That context runs on a byte budget with a summary-first layout, so it stays a compact header on the answer instead of pushing the data out of the window.
The user asked for a dashboard. The agent calls save_asset with the HTML directly rather than printing it into the chat and saving it afterwards, which would mean generating it twice. The portal returns a link and records provenance: the exact tool calls that produced this asset, attached to it.
Reading it back, the analyst wants the biggest percentage mover named alongside the biggest dollar mover. That is a manage_asset patch: one anchored edit on the sentence in question, which lands as version 2 with a one-line diff. The rest of the dashboard is untouched and never re-sent. An anchor that matches nothing, or matches twice, refuses the whole call rather than guessing.
Along the way the agent found that a date filter on this index needs a full timestamp, not a bare date, and proved it by running both. memory_capture records that against the dataset. Because it is a fact about a dataset rather than a personal preference, it enters review as an insight instead of going live, and the response names the near-duplicate already on file so the reviewer consolidates rather than stacking a second copy. Memory becomes an Insight, and an Insight that survives review becomes Knowledge every future session can find.
The user sees the answer, the dashboard link, and a short conversation. Every step above happened in support of that one exchange, and this trace is the sequence a real session produced rather than an idealized one.
Three styles of prompting
The trace above used a high-level prompt: the user described the goal and the agent worked out the steps. That is the right default for most work. Two other styles are worth knowing about: invoking a named prompt from the library, and naming specific tools directly. Each has a place.
Three styles of prompting, and when to use each
- 01
High-level: describe the goal
When: Most of the time. The agent picks the right tools, respects the operating manual, and produces a grounded answer.
"For ACME Corp, what were Q3 2025 sales by region, and which region saw the biggest change from Q2? Save the analysis as a dashboard."
- 02
Mid-level: name a prompt
When: When a repeatable workflow already exists in the prompt library. Shorter to type; the output shape is predictable.
"Run create-interactive-dashboard for Q3 sales by region." Takes topic and applies the template consistently.
- 03
Low-level: name specific tools
When: When you already know exactly what you want. Forces a specific path that the agent would otherwise have to reason its way to.
"Call datahub_get_queries for the os_acme_transactions URN, run the region-by-month cross-tab template for fiscal Q3, and write the rows straight to a CSV asset with trino_export."
There is no “best” style. The right level is the one that matches what you already know. A new user benefits from high-level prompting and lets the agent figure it out; a power user reaches for tool-by-name only when they want to short-circuit.
Closing the loop
That is the curriculum. Ten lessons in the 100 series, ten in the 200 series, and one worked example that tied them together. The subsystems are not exotic individually; the compounding value comes from having all of them running at the same time, under governance, with memory and knowledge closing the loop each session.


The 200 series, in one place
This lesson is also the index. Each row below is the subsystem lesson behind one part of the trace, and the two at the end cover ground the trace only leaned on: who curates the catalog the search reads from, and what the accumulated body of knowledge looks like once you can see its shape.
One surface the trace did not show is the interactive one. A tool result can carry a reference to a small interface, and a client that knows how renders it beside the answer instead of narrating it: the prompt library as something you browse rather than something read aloud, the deployment summary as a panel rather than a paragraph. Plexara ships two of these, and 201 covers what they are and why they stay presentation-only.
200 Series: the platform, subsystem by subsystem
- 201Anatomy of a Plexara MCPThe tool inventory, the four content layers, and the two apps a tool result can carry.
- 202Your first day with PlexaraConnecting, the first question, and the operating manual platform_info hands over.
- 203Discovery: one search, then fetchOne query across every source, grouped with a coverage summary. fetch reads one in full.
- 204Trino Query: analytics and insightsCurated query templates, the shape of a fast aggregation, and exporting large results.
- 205Assets: dashboards, reports, and dataOutput that persists outside chat, with provenance, versions, and anchored edits.
- 206Knowledge: from a memory to something the whole team can useMemory to Insight to Knowledge: the three stages, the review gate, the two homes.
- 207Governance: personas, access, and auditEnforcement at invocation time rather than policy on paper, and one audit log.
- 208The prompt library: versioned, shared, and measurableTwo buckets, version history with approval provenance, and running a prompt by any handle.
- 209Resources: the company files the agent should use, not reinventTemplates and brand files uploaded once, found by search, read in full by fetch.
- 211Governing the catalog without leaving the portalWho keeps the catalog worth searching, and where they do that work.
- 212Seeing the shape of what your team knowsThe knowledge corpus drawn as its reference network, and what its shape tells you.
210 is the lesson you are reading. Every other row is a subsystem the trace above touched, covered in depth.
Appendix: the tool directory
The rest of this lesson is reference material. Plexara groups its tools into eight toolkits. Every tool name below is the exact identifier the agent would invoke. Most tools are read-oriented and side-effect-free; writes and administrator-only operations are flagged.
You do not need to memorize this directory. The point of the trace above was that the agent chooses tools on your behalf. Scan this section when you want to know what is possible, or when you need to name a specific tool in a prompt.
- Toolkits
- 8
- Tools
- 42
- Write-capable
- 17
- Mandatory first call
- 1
Platform
The session gate, the connection list, and the tools about the toolbox itself. platform_info is mandatory as the first call in every session and is backed by a runtime session gate (202); platform_find_tools ranks the tool list by intent so the agent can locate a capability without reading every description.
platform_infoMandatory first callSession-gatedReturns the deployment description, tags, toolkits, feature flags, persona, portal URL, prompts library, and the agent_instructions operating manual. Issues the session handle every subsequent call carries.
Runtime-enforced by a session gate that refuses every other tool in the deployment until platform_info has been invoked in the current session.
list_connectionsLists the configured data connections across every toolkit (Trino catalogs, DataHub endpoints, S3 buckets, API gateways) with their name, kind, and type.
Each connection arrives with a bounded sample of the canonical knowledge pages documenting it, so the agent learns what a backend is for and not only that it exists.
platform_find_toolsRanks the platform’s own tool list against a plain-language description of a task, so the agent can find the right tool by intent instead of reading three dozen tool descriptions.
Persona-scoped at read time: it never returns a tool the caller could not call. Ranks on meaning rather than keyword overlap, so "find out where this number came from" reaches the lineage tool without naming it.
manage_promptWritesResolve and run a prompt by any handle (name, display name, reference, or free text) with the use command, plus create, update, delete, list, and get.
Carries the content verbs (patch, locate, get_content, outline, stats, diff), so editing a long prompt is an anchored patch rather than a full rewrite. Editing an approved shared prompt saves a pending draft while the approved version keeps being served.
show_promptsPresentation onlyAsks the client to render the prompt library as an interactive browser for the human. It performs no data operation and returns only a short confirmation.
The MCP App bound to it populates itself from its own manage_prompt calls. Separating the two is what keeps the agent’s routine prompt work from opening a window nobody asked for (201).
DataHub
Schema, lineage, glossary, and curated query retrieval. Discovery itself is not here: it belongs to the universal search tool in the Knowledge toolkit, and searching the capability rather than the manual is what these structural reads follow (203). The write tools at the end are used inside the knowledge-apply flow (206) rather than directly by end users.
datahub_browseLists catalog contents by category (tags, domains, data products). Useful for orientation rather than targeted lookups.
datahub_get_entityFetches a DataHub entity by URN. Returns the full metadata record, including custom properties.
datahub_get_schemaReturns the column schema for a dataset entity. Use when the agent needs column types and descriptions before writing a query.
datahub_get_lineageUpstream and downstream lineage for a dataset. Used to understand where data comes from and what depends on it.
datahub_get_glossary_termBusiness glossary lookup. The agent uses this to disambiguate terms like "revenue," "active customer," or "net amount" against the organization's canonical definitions.
datahub_get_queriesRetrieves curated, pre-benchmarked query templates for a dataset. The fast path the operating manual tells the agent to prefer over free-form queries.
datahub_get_data_productReturns data-product metadata (a named grouping of related datasets).
datahub_createWriteAdminWrites a new catalog entity. Not typically invoked directly by end users; used inside the apply_knowledge flow.
datahub_updateWriteAdminUpdates an existing catalog entity (description, tags, glossary terms, etc.). Called by apply_knowledge when applying approved insights.
datahub_deleteWriteAdminRemoves a catalog entity. Restricted to administrator sessions.
Trino
SQL execution, structural navigation, plan inspection, and large-result export across every Trino catalog the deployment reaches (204). Read-only enforcement is applied at the platform layer, not left to the query author (207). A query here is also refused outright until discovery has run in the session, which is the gate step 05 of the trace describes.
trino_queryRead-only enforcedExecutes read-only SQL against any configured Trino catalog. Write statements are refused at the platform layer.
trino_executeWriteClient-promptedExecutes any SQL, including inserts, updates, deletes, and DDL. The write path is a separate tool from the read path on purpose.
Annotated as destructive so clients prompt before running it, where trino_query is annotated read-only and can be auto-approved. A connection pinned read-only refuses writes here too.
trino_browseLists catalogs, schemas, and tables. Used for structural navigation once search has pointed at a backend.
trino_describe_tableReturns the column schema for a Trino table, with an option to include sample rows.
trino_explainReturns the Trino execution plan for a query. Used when the agent needs to reason about why a query is slow or how it will be executed.
trino_exportWrites assetRuns a query and writes the result to a persisted asset (CSV, JSON, or Markdown) instead of returning rows in the conversation.
Use when the result set is large enough that putting it in the context window would be wasteful.
S3
Object storage access under prefix ACLs and size caps. Every tool here is restricted to the paths the persona is allowed to reach, and the restriction is applied when the call is made rather than described in a policy (207).
s3_list_bucketsEnumerates buckets configured on the deployment, within the configured prefix ACLs.
s3_list_objectsPrefix-restrictedLists objects inside a bucket. The platform layer enforces the prefix restriction; the agent cannot browse outside allowed paths.
s3_get_objectSize-cappedReads object content. Subject to the configured maximum file-size limit.
s3_get_object_metadataReads object metadata (size, last modified, content type) without downloading the content.
s3_presign_urlReturns a time-limited signed URL for a specific object. Useful when a dashboard or report needs to link to raw data.
s3_put_objectWriteUploads an object, taking text directly or base64 for binary content. Blocked when the connection is pinned read-only.
s3_delete_objectWriteRemoves an object. Irreversible unless the bucket has versioning enabled, and blocked when the connection is pinned read-only.
s3_copy_objectWriteCopies an object within a bucket or between buckets, optionally rewriting its metadata on the way. Blocked when the connection is pinned read-only.
Memory
Per-user memory organized along five dimensions. Recording is one action, memory_capture; memory_manage covers the lifecycle afterwards. Reading memory back is not a memory tool at all: the universal search tool reaches memory alongside every other source it covers, so prior-session context arrives in the same result set as the catalog and the knowledge pages (206).
memory_captureWritesThe one way to record knowledge. Checks existing memory for that user before it writes, so a restatement supersedes the record it corrects instead of stacking a near-duplicate beside it.
Memories are organized along five dimensions: Knowledge, Events, Entities, Relationships, Preferences.
memory_manageWritesThe lifecycle of a memory that already exists. Supported commands: update, forget, list, review_stale, review_duplicates, consolidate.
Reading memory back is not here. It moved into the universal
searchtool, which reaches memory alongside the catalog, knowledge pages, insights, assets, and prompts in a single query.
Knowledge
Discovery and admin-reviewed catalog write-back. search and fetch are open to every user and are the front door to the whole platform; the apply path is administrator-only (203, 206, 207).
searchFirst call for any questionThe one way to discover. A single query fans across the catalog, the governance vocabulary, context documents, knowledge pages, the caller’s memory, insights, feedback, assets, resources, prompts, API endpoints, and connections.
Results arrive grouped by source with a per-source coverage summary rather than as one flat list, so no single source crowds out the others. 203 covers the response shape in full.
fetchReads one search result in full. Takes any reference a hit carries and returns the complete record behind it, under exactly the scope search applied.
Registered alongside search. A persona granted one without the other can find records it cannot open.
apply_knowledgeWrites catalogAdminThe review-and-apply gate. Enumerates pending captures, supports bulk or per-entity review, synthesizes related ones into cohesive changes, and writes approved changes back as a tracked, reversible changeset.
Knowledge lands in one of two homes: a DataHub entity when the fact is tied to a dataset or column, or a canonical knowledge page when it is broader business context. Recording is not here; that is memory_capture, described in 206.
Portal (assets and feedback)
Asset persistence, collection management, and the feedback threads people leave on both (205). Dashboards, reports, charts, and exports live here as first-class, shareable objects rather than as transient chat output.
save_assetWrites assetPersists generated content (HTML, JSX, SVG, Markdown, JSON, CSV) as a named, shareable asset in the portal.
Use this path whenever the agent would otherwise return a large block of content into the conversation.
manage_assetWritesList, get, update, delete, or revert existing assets. Edits go through update rather than regenerating from scratch, which preserves provenance.
Collection management lives here too: the agent can group assets (dashboards, reports, markdown, CSVs) into sections within a named collection, and collections are shareable as a single unit.
manage_feedbackWritesReviews and answers the comments people leave on the agent’s work. Threads hang off an asset, a collection, or a prompt, or off a shared general channel.
A list with no target is the "what is waiting on me" query: unresolved threads on everything the caller owns or can edit, plus anything awaiting their validation. Feedback is its own tool rather than an action on manage_asset so an agent finds the loop by name.
API
Registered HTTP APIs, reached the same governed way as the warehouses. The deployment holds the credentials and applies them, so the agent addresses an operation by name and never handles a secret.
api_list_specsLists the sections of a registered API connection’s catalog, each with its title, description, operation count, and base path. The first call against an API that bundles more than one specification.
api_list_endpointsLists the operations an API connection exposes, ranked against an optional plain-language query rather than dumped alphabetically.
Persona policy still applies at invoke time, so a listed operation can still be refused when it is called.
api_get_endpoint_schemaReturns the parameters, request body, and per-status response shapes for one operation, so the agent can form a correct call in one attempt.
api_invoke_endpointWrite-capableMakes the authenticated request. The connection’s credentials are applied by the platform, so the agent addresses an operation by name and never sees a secret.
Response bodies above the connection’s configured ceiling are truncated and flagged rather than silently cut.
api_exportWrites assetRuns an operation and writes the response to a persisted asset instead of returning it into the conversation. The same escape hatch trino_export provides for query results.
Key terms
Three terms unique to this lesson. Most of the vocabulary across the curriculum has been covered in earlier key-terms sections; this is the short list of what the capstone adds.
Key Terms
- Capstone
- An end-to-end walkthrough lesson. This one threads a single realistic question through every Plexara subsystem the 200 series covered, so the pieces are visible working together in context rather than in isolation.
- Prompting style
- The level of specificity in a prompt. High-level prompts describe the goal; prompt-by-name prompts invoke a library prompt by identifier; tool-by-name prompts force a specific tool path. Each is right in different situations.
- Tool directory
- The appendix at the end of this lesson: every tool a Plexara MCP exposes, grouped by toolkit, with badges that flag writes, admin-only operations, session-gated calls, and the single mandatory first call.
- Search-before-query gate
- The rule that a warehouse query is refused until discovery has happened in the session. It is enforced in front of the tool handler, so a query that skips discovery never runs at all; the agent gets a SEARCH_REQUIRED result telling it to search first.
