> For the complete documentation index, see [llms.txt](https://help.cubelet.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.cubelet.ai/platform-and-integration/mcp-servers/manufacture-cubelet-manufacturing/demo-path-cross-framework-story.md).

# Demo Path: Cross-Framework Story

*Three calls that walk one control from CMMC into its NIST SP 800-171 lineage and its ISACA equivalents — the cross-framework story the Catalog Query Surface's `full` lens exists to tell.*

This is the headline demo for the two-tool surface described on the Catalog Query Surface page: `catalog_search` once to resolve, `catalog_narrative` twice — once at `standard`, once at `full` — to walk outward from a single CMMC practice into its prerequisite, its NIST SP 800-171 crosswalk equivalent, and its ISACA-adjacent governance concept.

{% stepper %}
{% step %}

### Step 1 — resolve the control

```json
{
  "tool": "catalog_search",
  "arguments": { "query": "CMMC.L2.AC.3.1.1" }
}
```

The framework-code classifier resolves the query directly to its Catalog node: `comp-ac-3.1.1`, "Limit system access to authorized users, processes, and devices," Domain `CMMC`, `cubelet_built: true`. `matches[0].id` — `comp-ac-3.1.1` — is what the next two calls use.
{% endstep %}

{% step %}

### Step 2 — read the standard narrative

```json
{
  "tool": "catalog_narrative",
  "arguments": { "id": "comp-ac-3.1.1", "lens": "standard" }
}
```

`standard` returns the node plus its six faces (WHAT/WHY/HOW/WHERE/WHEN/APPLY, all present — this Cubelet is built and gate-passed) and its prerequisite chain. The prerequisite that surfaces is `ia-l2-3.5.1` — identify and authenticate organizational users — before AC.3.1.1 can be meaningfully enforced: you cannot limit access to "authorized" users until you can first identify and authenticate who they are. That ordering is exactly what `standard` is built to answer in one call: the content, plus what has to be true first.
{% endstep %}

{% step %}

### Step 3 — expand to the full cross-framework picture

```json
{
  "tool": "catalog_narrative",
  "arguments": { "id": "comp-ac-3.1.1", "lens": "full" }
}
```

`full` adds `adjacent` (related concepts across Domains — an ISACA governance concept for access-control policy), `crosswalk` (equivalents in other frameworks — NIST SP 800-171 3.1.1 as a same-intent equivalent), and `coverage` (`faces_grounded: 6` of 6 for this built Cubelet). Crosswalk ships by default in `full` rather than needing an explicit `include` — it's the most expensive traversal, but the cross-framework story is this demo's entire point, so the cost is worth paying without an extra flag.
{% endstep %}
{% endstepper %}

## Connecting through the Portal

Every call above goes through the same demo-safe entry point: the GRID42 Catalog Portal endpoint (provisioning in progress). One Cloudflare MCP Portal endpoint exposes exactly `catalog_search`, `catalog_narrative`, and the GitBook docs MCP — nothing else from the manufacture server's \~159 production tools is reachable through it.

```mermaid
flowchart LR
    Client -->|MCP| Portal["GRID42 Catalog Portal<br/>(provisioning in progress)"]
    Portal --> Search[catalog_search]
    Portal --> Narrative[catalog_narrative]
    Portal --> Docs[GitBook docs MCP]
    Search --> Catalog[("GRID42 Catalog<br/>Neo4j + R2")]
    Narrative --> Catalog
```

{% hint style="info" %}
None of the three calls in this walkthrough pass a `learner_id`, so none return `learner_context` — anonymous Portal traffic gets Catalog structure and faces only, per the gating rule on the Catalog Query Surface page.
{% endhint %}

A single Portal endpoint means an external agent or integration configures one URL instead of tracking the manufacture server's endpoint separately from the docs server — and there is no path from that endpoint to `cubelet_produce`, `mastery_*`, or any other mutation tool on the platform.
