From 3aac061629656bd676bac32599fab793467a8fcc Mon Sep 17 00:00:00 2001 From: Imran Siddique Date: Tue, 30 Jun 2026 18:28:10 -0700 Subject: [PATCH 1/2] feat(docs): SEO and AEO optimization Make the cMCP docs discoverable by search engines and answer engines (LLMs) without changing any product behavior. - Add mkdocs-llmstxt plugin: generates /llms.txt and /llms-full.txt at the site root with a curated summary and section links. - Add robots.txt (copied into the docs build) that welcomes AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, others) and points to the sitemap. - Add JSON-LD structured data via a theme override (SoftwareApplication, Organization, WebSite) plus Open Graph and Twitter card meta. - Add an FAQ section with FAQPage structured data on the home page. - Add answer-first lead and TL;DR to the home page; add meta descriptions to the quickstart and concepts pages. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/docs.yml | 2 +- README.md | 71 ++++++++++++++++++++++++++++++++++++++ docs/concepts.md | 4 +++ docs/quickstart.md | 6 +++- mkdocs.yml | 30 ++++++++++++++++ overrides/main.html | 62 +++++++++++++++++++++++++++++++++ requirements-docs.txt | 1 + robots.txt | 35 +++++++++++++++++++ 8 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 overrides/main.html create mode 100644 robots.txt diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7221d36..6e6804f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -55,7 +55,7 @@ jobs: if [ -d docs ]; then cp -r docs $BUILD/docs; fi - for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md CNAME; do + for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md CNAME robots.txt; do if [ -f "$fname" ]; then cp "$fname" "$BUILD/$fname"; fi done diff --git a/README.md b/README.md index c844396..d1659cc 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,10 @@ > **Developer Preview** - launching at Confidential Computing Summit, June 23 2026. May have breaking changes before v1.0. +**cMCP (Confidential MCP Runtime) is an open-source gateway that enforces MCP tool-call policy inside a hardware Trusted Execution Environment (TEE).** Every tool call is intercepted, evaluated against a Cedar policy bundle, and enforced where the process it governs cannot reach it. Each session produces a signed, hardware-attested TRACE Claim that a verifier checks without trusting the operator. + +> **TL;DR** - Point your agent at the cMCP Gateway. It evaluates every tool call against a Cedar policy inside a TEE, blocks or redacts what the policy denies, and emits a tamper-evident TRACE Claim as proof. Run `pip install cmcp-runtime` and start in software mode with no hardware required. + Your agent calls Snowflake, Salesforce, a dozen APIs. What stops it from leaking a customer's data on one of those calls? If a regulator asks, could you prove it didn't? --- @@ -241,6 +245,73 @@ See [SECURITY.md](SECURITY.md) for vulnerability reporting and response SLAs. Se --- +## FAQ + +### What is cMCP? + +cMCP (Confidential MCP Runtime) is an open-source gateway that enforces MCP tool-call policy inside a hardware Trusted Execution Environment. It intercepts each tool call, evaluates it against a Cedar policy bundle, enforces the decision (allow, deny, or redact), and records the call in a hardware-sealed audit chain. + +### How is cMCP different from software-only MCP governance? + +Software-only governance runs the policy engine in the same OS an operator or a supply-chain CVE can reach, so it cannot prove the policy that ran was the approved one or that the decision was not flipped in memory. cMCP runs the policy engine inside a TEE and measures the Cedar bundle hash into the hardware attestation report before any code runs, so the control plane cannot be reached by the process it governs. + +### Do I need special hardware to try it? + +No. Set `CMCP_DEV_MODE=1` to use the software-only TEE provider and run the full quickstart without a hardware TEE. Hardware providers (TPM, AMD SEV-SNP, Intel TDX, OPAQUE) are used in production. + +### What is a TRACE Claim? + +A TRACE Claim (a `GatewayClaim`) is a signed, hardware-attested artifact produced per session. It records which tools ran, which policy decided each call, the Cedar bundle hash, and the audit chain, and it is signed with an Ed25519 key that never leaves the TEE. A verifier checks it with the `cmcp_verify` library without trusting the operator. + +### Which TEE providers are supported? + +TPM 2.0 / vTPM, AMD SEV-SNP, and Intel TDX, with NVIDIA GPU confidential computing planned for v0.2 and OPAQUE Confidential Runtime available as explicit opt-in. Auto-detection order is SEV-SNP, then TDX, then TPM, then software. + +### What license is cMCP under? + +MIT. + + + +--- + ## Contributing [CONTRIBUTING.md](CONTRIBUTING.md) · [GOVERNANCE.md](GOVERNANCE.md) · [Discussions](https://github.com/agentrust-io/cmcp/discussions) diff --git a/docs/concepts.md b/docs/concepts.md index 1261e41..16a7c47 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -1,3 +1,7 @@ +--- +description: How cMCP works. The four design ideas behind hardware-attested MCP tool-call governance: tamper-evident audit, TRACE Claims as evidence, TEE-measured Cedar policy, and operator-independent verification. +--- + # How cMCP Works This page explains the four core design ideas behind cMCP. The [quickstart](quickstart.md) shows you how to run it; this page explains why it works. diff --git a/docs/quickstart.md b/docs/quickstart.md index 7717bbe..9d7b2db 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -1,4 +1,8 @@ -# Quickstart - cMCP Runtime +--- +description: cMCP quickstart. From zero to your first signed TRACE Claim in under 30 minutes using CMCP_DEV_MODE=1, no hardware TEE required. Install, write a Cedar policy and tool catalog, run the gateway, and verify the claim. +--- + +# Quickstart - cMCP Runtime From zero to first TRACE Claim in under 30 minutes. Uses `CMCP_DEV_MODE=1` so no hardware TEE is required. diff --git a/mkdocs.yml b/mkdocs.yml index 96eaf18..a844e9b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -27,6 +27,7 @@ exclude_docs: | theme: name: material + custom_dir: overrides logo: docs/assets/icon.svg favicon: docs/assets/icon.svg palette: @@ -64,6 +65,35 @@ theme: plugins: - search + - llmstxt: + full_output: llms-full.txt + markdown_description: >- + cMCP (Confidential MCP Runtime) is an open-source gateway that enforces + MCP tool-call policy inside a hardware Trusted Execution Environment + (TEE). Every tool call is intercepted, evaluated against a Cedar policy + bundle, and enforced by a policy engine the governed process cannot + reach. The Cedar bundle hash is measured into the hardware attestation + report before any code runs, and each session produces a signed, + hardware-attested TRACE Claim that a verifier checks without trusting the + operator. Supports TPM, AMD SEV-SNP, Intel TDX, and OPAQUE providers, + with enforcing, advisory, and silent modes. + sections: + Getting started: + - README.md + - docs/quickstart.md + - docs/concepts.md + - docs/configuration.md + Specification: + - docs/SPEC.md + - docs/spec/cedar-policy.md + - docs/spec/attestation.md + - docs/spec/threat-model.md + - docs/spec/verification-library.md + Tutorials: + - docs/tutorials/connecting-agent-frameworks.md + - docs/tutorials/cedar-policy-walkthrough.md + - docs/tutorials/verifying-a-trace-claim.md + - docs/tutorials/tee-attestation.md - minify: minify_html: true - mkdocstrings: diff --git a/overrides/main.html b/overrides/main.html new file mode 100644 index 0000000..2bce675 --- /dev/null +++ b/overrides/main.html @@ -0,0 +1,62 @@ +{% extends "base.html" %} + +{# + SEO and AEO head additions: + - Open Graph and Twitter card meta for link previews and answer engines. + - JSON-LD structured data (SoftwareApplication, Organization, WebSite) so + search and answer engines can model what cMCP is. + Canonical and description tags are emitted by Material when site_url is set, + so they are not repeated here. +#} +{% block extrahead %} + {{ super() }} + {% set page_desc = page.meta.description if page and page.meta and page.meta.description else config.site_description %} + {% set page_url = page.canonical_url if page and page.canonical_url else config.site_url %} + + + + + + + + + + + + +{% endblock %} diff --git a/requirements-docs.txt b/requirements-docs.txt index 5d5386a..4a21e7a 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -1,6 +1,7 @@ mkdocs>=1.6.1 mkdocs-material>=9.7.6 mkdocs-minify-plugin>=0.8 +mkdocs-llmstxt>=0.5,<1.0 pymdown-extensions>=10.21.3 mkdocstrings[python]>=1.0.4 griffe>=2.1.0 diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..db03184 --- /dev/null +++ b/robots.txt @@ -0,0 +1,35 @@ +# cMCP documentation - crawling policy +# Search and answer engines, including AI crawlers, are welcome. + +User-agent: * +Allow: / + +# AI and answer-engine crawlers (explicitly welcomed) +User-agent: GPTBot +Allow: / + +User-agent: OAI-SearchBot +Allow: / + +User-agent: ChatGPT-User +Allow: / + +User-agent: ClaudeBot +Allow: / + +User-agent: anthropic-ai +Allow: / + +User-agent: Claude-Web +Allow: / + +User-agent: PerplexityBot +Allow: / + +User-agent: Google-Extended +Allow: / + +User-agent: CCBot +Allow: / + +Sitemap: https://cmcp.agentrust-io.com/sitemap.xml From 0b96b27d8cb31ba4daef2ec34189b434691eca02 Mon Sep 17 00:00:00 2001 From: Imran Siddique Date: Tue, 30 Jun 2026 18:52:51 -0700 Subject: [PATCH 2/2] feat(docs): add branded OG image and correct brand to AgenTrust Adds a 1200x630 Open Graph card served at /docs/assets/og.png and wires og:image plus twitter:image (summary_large_image). Corrects the publisher name in JSON-LD from AgentTrust to AgenTrust. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/assets/og.png | Bin 0 -> 38396 bytes overrides/main.html | 11 ++++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 docs/assets/og.png diff --git a/docs/assets/og.png b/docs/assets/og.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f9db93e371e3e8db5e4a3316fcf8998747dd4a GIT binary patch literal 38396 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 + + + + - + +