From 7179d801641bc675a7c4f813f4028422282e226f Mon Sep 17 00:00:00 2001 From: Imran Siddique Date: Mon, 14 Sep 2026 16:38:55 -0700 Subject: [PATCH 1/2] docs(site): titles, descriptions and structured data for search and answer engines A crawl of agentrust-io.com on 2026-09-14 found three titles leading with governance, nine descriptions over 160 characters, og:title not matching the page title on 7 of 11 pages, no social tags on the static catalog, and five pages without JSON-LD. Titles for /community/, /demos/, /telemetry/ and /marketplace/ follow the current positioning and fit 60 characters. Descriptions are trimmed to 160 and repeated in og and twitter tags. og:title and twitter:title are the title without " | AgenTrust". Four pages gain a page node and breadcrumbs, five keep theirs and gain breadcrumbs, the homepage specifications gain headline, and the catalog gains social tags. check-discovery.py now enforces all of it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2 --- community/index.html | 50 +++++++++++++++++++++++++++++---- demos/index.html | 50 +++++++++++++++++++++++++++++---- extensions/ca2a/v0.1/index.html | 45 +++++++++++++++++++++++++++-- go/index.html | 16 +++++++++-- index.html | 17 +++++++---- marketplace/catalog/index.html | 2 ++ marketplace/index.html | 44 +++++++++++++++++++++++++++-- quickstart/index.html | 30 ++++++++++++++++---- registry/index.html | 26 +++++++++++++++-- search/index.html | 10 +++---- telemetry/index.html | 36 ++++++++++++++++++------ tools/DISCOVERY.md | 2 +- tools/build-controls.py | 15 ++++++++-- tools/build-discovery.py | 2 ++ tools/check-discovery.py | 20 +++++++++++-- verify/index.html | 30 ++++++++++++++++---- 16 files changed, 336 insertions(+), 59 deletions(-) diff --git a/community/index.html b/community/index.html index cf97036..3ff8a2e 100644 --- a/community/index.html +++ b/community/index.html @@ -3,8 +3,8 @@ - Community, Partners and Governance | AgenTrust - + Community: Partners, Sponsor and Contributors | AgenTrust + @@ -17,8 +17,8 @@ - - + + @@ -28,9 +28,47 @@ - - + + + diff --git a/demos/index.html b/demos/index.html index b55d500..3567938 100644 --- a/demos/index.html +++ b/demos/index.html @@ -3,16 +3,16 @@ -Model Weight Protection and Agent Governance Demos | AgenTrust - +Runnable Demos: Model Weights and Agent Actions | AgenTrust + - - + + @@ -22,8 +22,8 @@ - - + + @@ -32,6 +32,44 @@ + diff --git a/extensions/ca2a/v0.1/index.html b/extensions/ca2a/v0.1/index.html index 006e62e..fbe8991 100644 --- a/extensions/ca2a/v0.1/index.html +++ b/extensions/ca2a/v0.1/index.html @@ -4,7 +4,7 @@ cA2A v0.1 Extension URI | AgenTrust - + @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -32,6 +32,45 @@ + diff --git a/go/index.html b/go/index.html index 04e2582..497e83c 100644 --- a/go/index.html +++ b/go/index.html @@ -5,13 +5,13 @@ AgenTrust Agentic Controls | AgenTrust - + - + @@ -20,7 +20,7 @@ - + @@ -37,6 +37,16 @@ "publisher": { "@id": "https://agentrust-io.com/#organization" } } + diff --git a/index.html b/index.html index eea3a0b..68500a3 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ AgenTrust: Open Specifications for Verifiable AI - + @@ -17,8 +17,8 @@ - - + + @@ -28,8 +28,8 @@ - - + + @@ -50,6 +50,8 @@ "https://cmcp.agentrust-io.com", "https://ca2a.agentrust-io.com", "https://wcm.agentrust-io.com", + "https://tests.agentrust-io.com", + "https://governance.agentrust-io.com", "https://github.com/agentrust-io/agentrust-telemetry" ] }, @@ -79,6 +81,7 @@ "item": { "@type": "TechArticle", "name": "Weight Custody Manifest (WCM)", + "headline": "Weight Custody Manifest (WCM)", "url": "https://wcm.agentrust-io.com/", "description": "An open, pre-1.0 specification that binds model-weight identity and custody terms to key-release policy when a builder deploys weights into infrastructure it does not control." } @@ -89,6 +92,7 @@ "item": { "@type": "TechArticle", "name": "Agent Manifest", + "headline": "Agent Manifest", "url": "https://manifest.agentrust-io.com/", "description": "A structured, machine-readable declaration of an agent's capabilities, permissions, and data access policies that operators and orchestrators can verify before invocation." } @@ -99,6 +103,7 @@ "item": { "@type": "TechArticle", "name": "Confidential MCP (cMCP)", + "headline": "Confidential MCP (cMCP)", "url": "https://cmcp.agentrust-io.com/", "description": "Confidential MCP (cMCP) evaluates routed MCP tool calls against policy and records the decisions. In a hardware deployment, the runtime is inside a Trusted Execution Environment (TEE); the agent and upstream tool server remain separate. Host confidentiality also depends on the egress policy. Software mode provides no hardware isolation." } @@ -109,6 +114,7 @@ "item": { "@type": "TechArticle", "name": "Confidential A2A (cA2A)", + "headline": "Confidential A2A (cA2A)", "url": "https://ca2a.agentrust-io.com/", "description": "A trust profile on the Agent2Agent (A2A) protocol that makes agent-to-agent delegation verifiable and confidential: attested, attenuated delegation, a sealed peer channel, and an offline-verifiable provenance record for every hop." } @@ -119,6 +125,7 @@ "item": { "@type": "TechArticle", "name": "TRACE", + "headline": "TRACE", "url": "https://trace.agentrust-io.com/", "description": "TRACE defines portable, signed runtime evidence. Hardware provenance requires attestation verification against a trusted root; software-mode records do not provide that guarantee." } diff --git a/marketplace/catalog/index.html b/marketplace/catalog/index.html index 82244cd..cc99ffa 100644 --- a/marketplace/catalog/index.html +++ b/marketplace/catalog/index.html @@ -4,6 +4,8 @@ All AgenTrust Marketplace Integrations | AgenTrust + + diff --git a/marketplace/index.html b/marketplace/index.html index 1f4194c..005cdd1 100644 --- a/marketplace/index.html +++ b/marketplace/index.html @@ -2,12 +2,50 @@ - AgenTrust Marketplace: Build with the Verifiable Agent Ecosystem + Marketplace: Integrations for Verifiable AI | AgenTrust - - + + + diff --git a/quickstart/index.html b/quickstart/index.html index 2928e02..765fa8c 100644 --- a/quickstart/index.html +++ b/quickstart/index.html @@ -4,7 +4,7 @@ Get Started with the AgenTrust Specifications | AgenTrust - + @@ -17,8 +17,8 @@ - - + + @@ -28,8 +28,8 @@ - - + + @@ -55,6 +55,26 @@ } + diff --git a/registry/index.html b/registry/index.html index 752f769..0b994ef 100644 --- a/registry/index.html +++ b/registry/index.html @@ -4,7 +4,7 @@ TRACE Registry | AgenTrust - + @@ -12,7 +12,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -47,6 +47,26 @@ } + diff --git a/search/index.html b/search/index.html index 9fc0272..cc1473e 100644 --- a/search/index.html +++ b/search/index.html @@ -4,15 +4,15 @@ Search | AgenTrust - + - - + + @@ -22,8 +22,8 @@ - - + + diff --git a/telemetry/index.html b/telemetry/index.html index 3cd8440..eeedb7a 100644 --- a/telemetry/index.html +++ b/telemetry/index.html @@ -3,16 +3,16 @@ -Portable Governance Telemetry for AI Agents | AgenTrust - +Telemetry and Evidence Events for Agent Runtimes | AgenTrust + - - + + @@ -22,8 +22,8 @@ - - + + @@ -38,7 +38,7 @@ "@context": "https://schema.org", "@type": "SoftwareSourceCode", "name": "AgenTrust Telemetry", - "description": "A backend-neutral event contract and reference SDK for AI-agent governance telemetry: policy decisions, approval lifecycles, action execution, classified data flow, usage and cost, and evidence lifecycle.", + "description": "A backend-neutral event contract and reference SDK for AI-agent telemetry: policy decisions, approval lifecycles, action execution, classified data flow, usage and cost, and evidence lifecycle.", "url": "https://agentrust-io.com/telemetry/", "codeRepository": "https://github.com/agentrust-io/agentrust-telemetry", "programmingLanguage": ["Python", "TypeScript"], @@ -47,6 +47,26 @@ } + @@ -86,7 +106,7 @@
Between actions and evidence · Observe · Correlate -

Portable governance telemetry
for AI-agent runtimes

+

Portable telemetry and evidence
for AI-agent runtimes

Normalize the governance facts around an agent run: policy decisions, approvals, actions, classified data flow, usage, cost, and evidence, without replacing your OpenTelemetry stack, policy engine, framework, or UI.

Emit your first local event diff --git a/tools/DISCOVERY.md b/tools/DISCOVERY.md index e7fb41a..0d533ff 100644 --- a/tools/DISCOVERY.md +++ b/tools/DISCOVERY.md @@ -16,7 +16,7 @@ node marketplace/marketplace.test.js node tools/check-dashes.js ``` -The generator builds `sitemap.xml` from canonical, indexable HTML. Redirect aliases, including the 30 control permalinks, and the 404 page are excluded. It omits modification dates rather than inventing freshness. CI checks titles, descriptions, main headings, canonical URLs, sitemap coverage, local AI-guide links, and access under eight search and assistant robots policies. +The generator builds `sitemap.xml` from canonical, indexable HTML. Redirect aliases, including the 30 control permalinks, and the 404 page are excluded. It omits modification dates rather than inventing freshness. CI checks titles, descriptions, main headings, canonical URLs, sitemap coverage, local AI-guide links, and access under eight search and assistant robots policies. Titles end in " | AgenTrust" (the homepage excepted); og:title and twitter:title repeat the title without that suffix, og:description and twitter:description repeat the meta description, descriptions stay within 160 characters, and every indexable page carries JSON-LD except the script-free static catalog. To update the saved marketplace catalog when integrations change: diff --git a/tools/build-controls.py b/tools/build-controls.py index 4580138..080a55c 100644 --- a/tools/build-controls.py +++ b/tools/build-controls.py @@ -198,9 +198,8 @@ def render_index(controls): with_point = sum(1 for c in controls if c['enforcement_points']) links = sum(len(c['opencre']) for c in controls) unique = len({o['id'] for c in controls for o in c['opencre']}) - description = (f'The AgenTrust agentic control set: {total} controls for AI agents, each stated as one ' - 'requirement and cross-linked to the corresponding Common Requirement in OpenCRE. ' - 'Stable permalinks at /go/.') + description = (f'The AgenTrust agentic control set: {total} controls for AI agents, each one requirement ' + 'cross-linked to its Common Requirement in OpenCRE. Stable permalinks at /go/.') ld = f''' + diff --git a/tools/build-discovery.py b/tools/build-discovery.py index 2e7e592..9659f69 100644 --- a/tools/build-discovery.py +++ b/tools/build-discovery.py @@ -59,6 +59,8 @@ def catalog_html(snapshot): All AgenTrust Marketplace Integrations | AgenTrust + + ''' + site_header.render(section='Build', script=False) + ''' diff --git a/tools/check-discovery.py b/tools/check-discovery.py index 9ba9cec..c69f1f0 100644 --- a/tools/check-discovery.py +++ b/tools/check-discovery.py @@ -13,8 +13,8 @@ class Page(HTMLParser): def __init__(self, text): super().__init__() - self.canonicals, self.descriptions, self.ids = [], [], set() - self.title, self.in_title, self.noindex, self.redirect, self.h1 = '', False, False, False, 0 + self.canonicals, self.descriptions, self.ids, self.meta = [], [], set(), {} + self.title, self.in_title, self.noindex, self.redirect, self.h1, self.jsonld = '', False, False, False, 0, 0 self.feed(text) def handle_starttag(self, tag, attrs): @@ -25,9 +25,13 @@ def handle_starttag(self, tag, attrs): self.in_title = True if tag == 'h1': self.h1 += 1 + if tag == 'script' and a.get('type') == 'application/ld+json': + self.jsonld += 1 if tag == 'link' and 'canonical' in a.get('rel', '').split(): self.canonicals.append(a.get('href')) if tag == 'meta': + if a.get('property') or a.get('name'): + self.meta[a.get('property') or a.get('name')] = a.get('content', '') if a.get('name') == 'description': self.descriptions.append(a.get('content', '')) self.noindex |= a.get('name', '').lower() == 'robots' and 'noindex' in a.get('content', '').lower() @@ -54,6 +58,16 @@ def check(): assert len(page.descriptions) == 1 and page.descriptions[0].strip(), f'{rel}: missing/duplicate description' assert page.title.strip() and page.title not in titles, f'{rel}: missing/duplicate title' assert page.h1 == 1, f'{rel}: expected one main heading' + # Search results and link cards read these, so they follow one rule rather than page by page taste. + title = page.title.strip() + social = title.removesuffix(' | AgenTrust') + description = page.descriptions[0] + assert len(description) <= 160, f'{rel}: description is {len(description)} characters, over 160' + assert not re.search('[\u2013\u2014]', title + description), f'{rel}: dash in title or description' + assert page.meta.get('og:title') == social == page.meta.get('twitter:title'), f'{rel}: og:title and twitter:title must be the title without " | AgenTrust"' + assert page.meta.get('og:description') == description == page.meta.get('twitter:description'), f'{rel}: social descriptions must match the meta description' + assert all(page.meta.get(k) for k in ['og:image', 'og:image:width', 'og:image:height', 'og:image:alt']), f'{rel}: og:image needs width, height and alt' + assert page.jsonld or rel == 'marketplace/catalog/index.html', f'{rel}: no JSON-LD' titles.add(page.title) expected.add(expected_url) sitemap = ET.parse(ROOT / 'sitemap.xml') @@ -79,7 +93,7 @@ def check(): assert catalog.count('
Verify an Intel TDX Quote in Your Browser | AgenTrust - + - - + + @@ -22,8 +22,8 @@ - - + + @@ -46,6 +46,26 @@ } + From ff183115cbf71bc4a85be24e41e2ded55bcbb2fe Mon Sep 17 00:00:00 2001 From: Imran Siddique Date: Mon, 14 Sep 2026 16:44:52 -0700 Subject: [PATCH 2/2] docs(site): point the adoption contact at GitHub Discussions The /community/ contact button was a mailto link. Cloudflare Email Address Obfuscation rewrote it to /cdn-cgi/l/email-protection, which returns 404 to crawlers and answer engines that run no JavaScript. It now opens the agentrust-io organization's GitHub Discussions. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2 --- community/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community/index.html b/community/index.html index 3ff8a2e..bfb5ae3 100644 --- a/community/index.html +++ b/community/index.html @@ -229,7 +229,7 @@

Relationships the public record supports

Building with, sponsoring, or supporting AgenTrust?

Share your implementation, integration, contribution, sponsorship, or partnership context. Every relationship is described precisely and linked to public evidence where available.

- Contact Imran → + Start a discussion →