1<!doctype html> 2<html lang="en"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <title>xAgent ID · So AI agents can find, trust, and act on your business</title> 7 <meta name="description" content="Create a source-backed business Agent ID from any public company website, then connect it to evidence-backed SEO, AEO, GEO and AGO improvement."> 8 <link rel="canonical" href="/"> 9 <link rel="alternate" type="application/json" href="/.well-known/xagent-install.json" title="Production installation manifest"> 10 <link rel="alternate" type="application/json" href="/.well-known/agent-card.json" title="A2A Agent Card"> 11 <link rel="alternate" type="text/plain" href="/llms.txt" title="Agent-readable service index"> 12 <link rel="service-desc" type="application/json" href="/agent/openapi.json" title="OpenAPI"> 13 <link rel="icon" type="image/svg+xml" href="/assets/favicon.svg"><link rel="icon" type="image/png" href="/assets/logo.png"> 14 <link rel="stylesheet" href="/assets/foundation.css?v=visual-20260904"> 15 <link rel="stylesheet" href="/assets/card.css?v=clip-20260904"> 16 <link rel="stylesheet" href="/assets/agent-home.css?v=outcome-20260904c"> 17 <link rel="stylesheet" href="/assets/ui-system.css?v=brand-20260904"> 18
18<script src="/assets/company-card-component.js?v=company-logo-20260921" defer></script>
18 19
19<script src="/assets/i18n-catalog.js?v=plans-20260904" defer></script>
19 20
20<script src="/assets/i18n.js?v=audit-20260818" defer></script>
20 21
21<script type="application/ld+json"> 22 { 23 "@context":"https://schema.org", 24 "@type":"SoftwareApplication", 25 "name":"xAgent ID", 26 "applicationCategory":"DeveloperApplication", 27 "operatingSystem":"Any platform with Node.js 20 or later", 28 "description":"A customer-controlled Organization Digital Twin surface for verified identity, monitoring, agent access and bounded operations.", 29 "offers":{ 30 "@type":"AggregateOffer", 31 "priceCurrency":"USD", 32 "lowPrice":"12.99", 33 "highPrice":"199.00", 34 "offerCount":"4" 35 }, 36 "potentialAction":{ 37 "@type":"InstallAction", 38 "target":"/.well-known/xagent-install.json" 39 } 40 } 41 </script>
41 42
42<script type="application/ld+json"> 43 { 44 "@context":"https://schema.org", 45 "@type":"Organization", 46 "name":"xAgent ID", 47 "url":"https://xagent.id", 48 "parentOrganization":{"@type":"Organization","name":"twin3","url":"https://twin3.ai"}, 49 "sameAs":["https://github.com/twin3-ai","https://twin3.ai"], 50 "description":"A customer-controlled Organization Digital Twin surface for verified identity, monitoring, agent access and bounded operations.", 51 "contactPoint":{ 52 "@type":"ContactPoint", 53 "contactType":"customer support", 54 "email":"[email protected]", 55 "url":"https://xagent.id/contact" 56 } 57 } 58 </script>
58 59</head> 60<body class="agent-home" data-audience="agent"> 61 <a class="skip-link" href="#install">Skip to installation</a> 62 63 <header class="site-header"> 64 <nav class="nav shell" aria-label="Primary navigation"> 65 <a class="brand" href="/" aria-label="xAgent ID"><img class="brand-logo" src="/assets/logo.svg" alt="xAgent ID" width="146" height="32"><span class="brand-name sr-only"><b>xAgent ID</b></span></a> 66 <div class="nav-links" aria-label="Desktop navigation"> 67 <a href="#product">Product</a> 68 <a href="#install">Solutions</a> 69 <a href="#security">Trust</a> 70 <a href="#pricing">Pricing</a> 71 <a href="/dashboard">Sign in</a> 72 </div> 73 <details class="mobile-nav" id="mobile-nav"> 74 <summary aria-label="Open navigation">Menu</summary> 75 <div> 76 <a href="#product">Product</a> 77 <a href="#install">Install</a> 78 <a href="#security">Security</a> 79 <a href="#pricing">Plans</a> 80 <a href="/dashboard">Dashboard</a> 81 </div> 82 </details> 83 </nav> 84 </header> 85 86 <main> 87 <section class="hero shell" aria-labelledby="home-title"> 88 <div class="hero-copy-block"> 89 <p class="kicker">A website operating layer for the Agent web</p> 90 <h1 id="home-title">Turn your website into an Agent-ready business card</h1> 91 <p class="hero-copy">Enter a public website address. We read the pages a normal visitor can see and create a source-backed business Agent ID that explains who the company is, what it publishes and what an AI system can ask about it.</p> 92 <form class="hero-card" id="hero-card" novalidate 93 toolname="create_business_agent_id" 94 tooldescription="Create a source-backed business Agent ID from any public company website."> 95 <label class="sr-only" for="hero-card-url">Your website address</label> 96 <span class="hero-card-icon" aria-hidden="true">â</span> 97 <input id="hero-card-url" name="url" type="text" inputmode="url" autocomplete="url" 98 placeholder="yoursite.com" required 99 toolparamdescription="Public HTTPS address of the company website to read"> 100 <button class="button primary" type="submit" data-card-submit>Create business Agent ID</button> 101 </form> 102 <p class="hero-patent-applications">Patent Pending · US provisional applications 64/122,848 · 64/142,921 · 64/142,927 · 64/142,929 · 64/142,930</p> 103 <div class="hero-actions"> 104 <a class="button secondary" href="#security">See how trust works <span aria-hidden="true">â</span></a> 105 </div> 106 <ul class="trust-list" aria-label="Installation safety boundaries"> 107 <li>Methodology is public</li> 108 <li>Owner confirmation remains explicit</li> 109 <li>No source or deployment access</li> 110 </ul> 111 </div> 112 113 <div class="business-card-stage" data-company-card-carousel data-company-card-carousel-source="/api/featured-cards" data-carousel-state="ready" aria-label="Featured business Agent IDs"> 114 <div class="business-card-stage-head"> 115 <span><i aria-hidden="true"></i>Business Agent ID</span> 116 </div> 117 <div class="business-card-coverflow" data-coverflow-viewport role="region" aria-roledescription="carousel" aria-label="Featured companies"> 118
118<script type="application/json" data-featured-card-preload>[{"host":"nvidia.com","source_url":"/api/featured-card?host=nvidia.com","detail_url":"/nvidia.com","preload":{"host":"nvidia.com","name":"NVIDIA","brand_identity":{"theme":{"primary":"#28431c","accent":"#74b71b"},"logo":{"url":"https://www.nvidia.com/content/dam/en-zz/Solutions/about-nvidia/nvidia-brochure/images/nvidia-logo-black.svg"}}}},{"host":"tsmc.com","source_url":"/api/featured-card?host=tsmc.com","detail_url":"/tsmc.com","preload":{"host":"tsmc.com","name":"TSMC","brand_identity":{"theme":{"primary":"#3f1421","accent":"#c8102e"},"logo":{"url":"https://www.tsmc.com/themes/custom/bootstrap_sass/images/logo.png"}}}},{"host":"tesla.com","source_url":"/api/featured-card?host=tesla.com","detail_url":"/tesla.com","preload":{"host":"tesla.com","name":"Tesla","brand_identity":{"theme":{"primary":"#000000","accent":"#cc0000"},"logo":{"url":"https://www.tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png"}}}}]</script>
118 119 <p class="business-card-coverflow-message" data-coverflow-message hidden>Loading featured company cards</p> 120 <div class="business-card-coverflow-track" data-coverflow-track></div> 121 </div> 122 <div class="business-card-carousel-controls" aria-label="Featured company card controls"> 123 <button type="button" class="business-card-carousel-arrow" data-coverflow-previous aria-label="Previous company card" disabled>â</button> 124 <div class="business-card-carousel-dots" data-coverflow-dots aria-label="Choose a company card"></div> 125 <button type="button" class="business-card-carousel-arrow" data-coverflow-next aria-label="Next company card" disabled>â</button> 126 </div> 127 <p class="business-card-carousel-status sr-only" data-coverflow-status aria-live="polite">Loading featured company cards</p> 128 </div> 129 </section> 130 131 <section class="outcome-section" id="product" aria-labelledby="outcome-title" data-reveal> 132 <div class="shell"> 133 <p class="kicker centered">One public URL. One machine-readable business profile.</p> 134 <h2 id="outcome-title">From being visible to being usable.</h2> 135 <div class="outcome-grid"> 136 <article><span>01</span><h3>Searchable</h3><p>Technical SEO, crawlability and public discovery remain the foundation.</p></article> 137 <article><span>02</span><h3>Answerable</h3><p>Clear entities, structured content and source evidence help answer systems understand the site.</p></article> 138 <article><span>03</span><h3>Recommendable</h3><p>Fixed-question tests and citation evidence show where the brand appears and where it does not.</p></article> 139 <article><span>04</span><h3>Operable</h3><p>Agent ID, A2A, MCP and accessible interfaces prepare approved tasks for execution.</p></article> 140 </div> 141 </div> 142 </section> 143 144 <section class="install-section" id="install" aria-labelledby="install-title" data-reveal> 145 <div class="shell"> 146 <div class="section-intro"> 147 <p class="kicker">One identity, two ways to use it</p> 148 <h2 id="install-title">Agents discover it. Owners control it.</h2> 149 <p>An Agent reads the installation contract and prepares a bounded plan. The website owner reviews the exact permissions and approves every write.</p> 150 </div> 151 152 <div class="audience-tabs" role="tablist" aria-label="Installation audience"> 153 <button id="agent-tab" type="button" role="tab" aria-selected="true" aria-controls="agent-panel" data-audience-tab="agent"> 154 <b>For AI Agents</b><small>Discover and prepare</small> 155 </button> 156 <button id="human-tab" type="button" role="tab" tabindex="-1" aria-selected="false" aria-controls="human-panel" data-audience-tab="human"> 157 <b>For website owners</b><small>Review and authorize</small> 158 </button> 159 </div> 160 161 <div class="audience-panel" id="agent-panel" role="tabpanel" aria-labelledby="agent-tab" data-audience-panel="agent"> 162 <div class="audience-summary"> 163 <p class="kicker">Canonical Agent entrypoint</p> 164 <h3>Read the manifest first.</h3> 165 <p>Fetch the target-bound manifest, verify the published release in CLI preflight, create a no-side-effect plan and stop at the owner approval gate.</p> 166 <a class="manifest-card" href="/.well-known/xagent-install.json?url=https%3A%2F%2Fexample.com" data-manifest-link> 167 <span><b>Production install manifest</b><small>GET · application/json · no side effect</small></span> 168 <strong>Open</strong> 169 </a> 170 </div> 171 <div class="contract-list"> 172 <a href="/.well-known/agent-card.json"><span><b>A2A Agent Card</b><small>Agent ID, interfaces and implemented skills</small></span><strong>JSON</strong></a> 173 <a href="/auth.md"><span><b>Authority model</b><small>Credentials, permissions and owner gates</small></span><strong>MD</strong></a> 174 <a href="/skill.md"><span><b>Installation skill</b><small>Canonical sequence and stop conditions</small></span><strong>MD</strong></a> 175 <a href="/agent-quickstart.md"><span><b>Quickstart</b><small>Shortest safe path from discovery to verification</small></span><strong>MD</strong></a> 176 <details class="advanced-contracts"> 177 <summary>Advanced protocol contracts</summary> 178 <div> 179 <a href="/agent/openapi.json">OpenAPI <span>HTTP operations</span></a> 180 <a href="/agent/mcp.json">MCP <span>Local stdio tools backed by this API</span></a> 181 <div class="protocol-endpoint"><b>A2A task</b><code>POST /a2a/v1/message:send</code></div> 182 <a href="/api/site_agents/install_guide?url=https%3A%2F%2Fexample.com">Full install guide <span>No-side-effect plan</span></a> 183 </div> 184 </details> 185 </div> 186 </div> 187 188 <div class="audience-panel" id="human-panel" role="tabpanel" aria-labelledby="human-tab" data-audience-panel="human" hidden> 189 <div class="audience-summary"> 190 <p class="kicker">Website owner control</p> 191 <h3>Nothing changes before you approve it.</h3> 192 <p>Use the exact HTTPS domain you control. The dry run names every local file, permission and rollback action before installation.</p> 193 </div> 194 <ol class="owner-steps"> 195 <li><span>1</span><div><b>Inspect</b><p>Review the release, target domain, files and requested grants.</p></div></li> 196 <li><span>2</span><div><b>Approve</b><p>Choose the bounded work your own Agent or engineer may perform.</p></div></li> 197 <li><span>3</span><div><b>Verify</b><p>Publish domain proof and compare the result with an independent public refetch.</p></div></li> 198 </ol> 199 </div> 200 201 <div class="install-wizard" data-install-wizard> 202 <ol class="wizard-progress" aria-label="Installation progress"> 203 <li><button type="button" data-wizard-step="website" aria-current="step"><span>1</span><b>Website</b></button></li> 204 <li><button type="button" data-wizard-step="permissions" disabled><span>2</span><b>Permissions</b></button></li> 205 <li><button type="button" data-wizard-step="install" disabled><span>3</span><b>Install</b></button></li> 206 <li><button type="button" data-wizard-step="verify" disabled><span>4</span><b>Verify</b></button></li> 207 <li><button type="button" data-wizard-step="dashboard" disabled><span>5</span><b>Dashboard</b></button></li> 208 </ol> 209 210 <div class="wizard-frame">
211 <section class="wizard-panel" data-wizard-panel="website" aria-labelledby="wizard-website-title"> 212 <div class="wizard-copy"> 213 <p class="kicker">Step 1 · Website</p> 214 <h3 id="wizard-website-title">Turn a one-time check into a verified website identity.</h3> 215 <p>Load the target-bound production plan for the exact HTTPS website you control. Nothing is written in this step.</p> 216 </div> 217 <div class="command-console wizard-console"> 218 <div class="console-bar"><span>xAgent ID plan</span><b id="release-version">Checking</b></div> 219 <label for="target-url">Website you control</label> 220 <div class="target-input-row"> 221 <input id="target-url" type="url" inputmode="url" placeholder="https://example.com" autocomplete="url" spellcheck="false" aria-describedby="install-status"> 222 <button type="button" id="load-manifest">Load plan</button> 223 </div> 224 <p class="manifest-status" id="install-status" role="status" aria-live="polite">Loading production install manifestâ¦</p> 225 <div class="manifest-foot"><span id="manifest-integrity">Release metadata pending</span><a href="/.well-known/xagent-install.json?url=https%3A%2F%2Fexample.com" data-manifest-link>Open JSON</a></div> 226 </div> 227 </section> 228 229 <section class="wizard-panel" data-wizard-panel="permissions" aria-labelledby="wizard-permissions-title" hidden> 230 <div class="wizard-copy"> 231 <p class="kicker">Step 2 · Permissions</p> 232 <h3 id="wizard-permissions-title">Review the minimum access before installing.</h3> 233 <p>The list comes from the same production manifest used by the installer. Private keys remain with you, and the mother service receives no source or deployment access.</p> 234 </div> 235 <div> 236 <ul class="permission-list" data-wizard-permissions></ul> 237 <dl class="wizard-boundaries"> 238 <div><dt>Default authority</dt><dd>Read only</dd></div> 239 <div><dt>Website writes</dt><dd>Owner approval required</dd></div> 240 <div><dt>Rollback</dt><dd>Required for bounded changes</dd></div> 241 </dl> 242 </div> 243 <div class="wizard-actions"><button type="button" class="wizard-back" data-wizard-back>Back</button><button type="button" class="wizard-next" data-wizard-next="install">Continue to install</button></div> 244 </section> 245 246 <section class="wizard-panel" data-wizard-panel="install" aria-labelledby="wizard-install-title" hidden> 247 <div class="wizard-copy"> 248 <p class="kicker">Step 3 · Install</p> 249 <h3 id="wizard-install-title">Install the website layer, then connect your application stack.</h3> 250 <p>JavaScriptï¼Node installs the website identity. Python installs the production customer API SDK after the website installation; it does not replace the website installer.</p> 251 </div> 252 <div> 253 <div class="install-methods" role="tablist" aria-label="SDK language"> 254 <button type="button" role="tab" aria-selected="true" data-install-method="javascript"><b>JavaScriptï¼Node</b><small>Website installer · Recommended</small></button> 255 <button type="button" role="tab" aria-selected="false" tabindex="-1" data-install-method="python"><b>Python</b><small>Customer API SDK · Production PyPI</small></button> 256 </div> 257 <div data-install-method-panel="javascript"> 258 <div class="command-console"> 259 <ol class="command-list"> 260 <li><span>1</span><div><small>Dry run. No side effect.</small><code data-workflow-id="dry_run">Loading commandâ¦</code></div><button class="copy" type="button" data-copy-workflow="dry_run">Copy</button></li> 261 <li><span>2</span><div><small>Owner-approved apply.</small><code data-workflow-id="apply">Loading commandâ¦</code></div><button class="copy" type="button" data-copy-workflow="apply">Copy</button></li> 262 <li><span>3</span><div><small>Public domain verification.</small><code data-workflow-id="domain_verify">Loading commandâ¦</code></div><button class="copy" type="button" data-copy-workflow="domain_verify">Copy</button></li> 263 <li><span>4</span><div><small>Read-only managed inspection.</small><code data-workflow-id="activate">Loading commandâ¦</code></div><button class="copy" type="button" data-copy-workflow="activate">Copy</button></li> 264 </ol> 265 </div> 266 </div> 267 <div class="python-preview" data-install-method-panel="python" hidden>
268 <span class="preview-badge">Production PyPI</span> 269 <p>Install the customer API SDK from the official PyPI release.</p> 270 <div class="preview-command"><code id="python-install-command">python -m pip install xagent-id</code><button type="button" class="copy" data-copy-target="#python-install-command">Copy</button></div> 271 <p class="preview-boundary">Use Python for customer API calls after the JavaScriptï¼Node website layer is installed and verified.</p> 272 </div> 273 </div> 274 <div class="wizard-actions"><button type="button" class="wizard-back" data-wizard-back>Back</button><button type="button" class="wizard-next" data-wizard-next="verify">I installed the website layer</button></div> 275 </section> 276 277 <section class="wizard-panel" data-wizard-panel="verify" aria-labelledby="wizard-verify-title" hidden> 278 <div class="wizard-copy"> 279 <p class="kicker">Step 4 · Verify</p> 280 <h3 id="wizard-verify-title">Confirm the public installation independently.</h3> 281 <p>xAgent ID refetches the website proof from the public network. The browser does not submit a success claim, credential or event.</p> 282 </div> 283 <div class="verification-card"> 284 <span class="verification-mark" aria-hidden="true">â</span> 285 <div><b>Public installation status</b><p data-verification-status role="status" aria-live="polite">Run the check after deploying the website layer.</p></div> 286 <button type="button" data-verify-install>Check installation</button> 287 </div> 288 <div class="wizard-actions"><button type="button" class="wizard-back" data-wizard-back>Back</button><button type="button" class="wizard-next" data-wizard-next="dashboard" disabled>Continue to dashboard</button></div> 289 </section> 290 291 <section class="wizard-panel" data-wizard-panel="dashboard" aria-labelledby="wizard-dashboard-title" hidden> 292 <div class="wizard-copy"> 293 <p class="kicker">Step 5 · Dashboard</p> 294 <h3 id="wizard-dashboard-title">Your verified baseline is ready.</h3> 295 <p>Use the customer-held identity to create a one-time Dashboard pairing URL. The Dashboard starts with the verified website state and the next evidence-backed improvement.</p> 296 </div> 297 <div class="dashboard-unlock"> 298 <b>Create a secure one-time Dashboard link</b> 299 <div class="preview-command"><code data-workflow-id="dashboard_login">Loading commandâ¦</code><button class="copy" type="button" data-copy-workflow="dashboard_login">Copy</button></div> 300 <a class="button primary" href="/dashboard">Open Dashboard after pairing</a> 301 <small>Installation proves technical readiness; it does not guarantee ranking, citation, recommendation or revenue.</small> 302 </div> 303 <div class="wizard-actions"><button type="button" class="wizard-back" data-wizard-back>Back</button></div> 304 </section> 305 </div> 306 </div> 307 </div> 308 </section> 309 310 <section class="proof-section" id="proof" aria-labelledby="proof-title" data-reveal> 311 <div class="shell proof-layout"> 312 <div class="section-intro"> 313 <p class="kicker">Behind the card</p> 314 <h2 id="proof-title">The identity card is backed by a real installation contract.</h2> 315 <p>The card is the readable result. This is the operational layer underneath it: release, permissions, evidence and rollback remain explicit for owners and Agents.</p> 316 </div> 317 <div class="product-window" id="product-proof" aria-label="Live production installation contract"> 318 <div class="window-bar"> 319 <span><i aria-hidden="true"></i>xagent.id / audit report</span> 320 <b id="hero-release">Live preview</b> 321 </div> 322 <div class="window-title"> 323 <div class="identity-pair">
324 <span class="identity-cell"><small>Verified domain</small><strong id="hero-host">example.com</strong></span> 325 <span class="pair-mark" aria-hidden="true">X</span> 326 <span class="identity-cell"><small>xAgent ID</small><strong class="identity-alias">Issued at install</strong></span> 327 </div> 328 <span class="contract-state" id="hero-state">Loading</span> 329 </div> 330 <dl class="contract-facts"> 331 <div><dt>Package</dt><dd id="hero-package">From production manifest</dd></div> 332 <div><dt>Default access</dt><dd>Read only</dd></div> 333 <div><dt>Allowed writes</dt><dd id="hero-writes">Owner-approved AI files only</dd></div> 334 <div><dt>Proof</dt><dd>Receipt + public refetch + rollback</dd></div> 335 </dl> 336 <div class="contract-progress" aria-label="Connection lifecycle"> 337 <span class="is-current">Discover</span><span>Approve</span><span>Verify</span><span>Improve</span> 338 </div> 339 <div class="discovery-strip" aria-label="Who discovers the connected website"> 340 <span><small>Human discovery</small><b>Search & AI answers</b><em>SEO · AEO</em></span> 341 <span class="strip-tie" aria-hidden="true">â</span> 342 <span><small>Agent discovery</small><b>Buyer & service Agents</b><em>ASO · A2A · Agent ID</em></span> 343 </div> 344 <a href="/.well-known/xagent-install.json?url=https%3A%2F%2Fexample.com" data-manifest-link>Read the live manifest <span aria-hidden="true">â</span></a> 345 </div> 346 </div> 347 </section> 348 349 <section class="loop-section" id="architecture" aria-labelledby="loop-title" data-reveal> 350 <div class="shell"> 351 <div class="section-intro centered-copy"> 352 <p class="kicker">Trust and control</p> 353 <h2 id="loop-title">Useful information should also be accountable information.</h2> 354 <p>Every report points back to a methodology, a schema version and the evidence available at the time of review. Candidate claims remain candidate claims until an owner confirms them.</p> 355 </div> 356 <ol class="loop-flow"> 357 <li><span>01</span><div><h3>Connect</h3><p>Verify the domain and establish the customer-owned Agent identity.</p></div></li> 358 <li><span>02</span><div><h3>Measure</h3><p>Audit SEO, AEO, GEO and AGO with observed evidence kept separate from missing data.</p></div></li> 359 <li><span>03</span><div><h3>Improve</h3><p>Send a bounded recommendation to the website Agent for local approval and execution.</p></div></li> 360 <li><span>04</span><div><h3>Prove</h3><p>Compare the site receipt with a public refetch and retain a rollback path.</p></div></li> 361 </ol> 362 </div> 363 </section> 364 365 <section class="security-section" id="security" aria-labelledby="security-title" data-reveal> 366 <div class="shell security-layout"> 367 <div> 368 <p class="kicker">Designed for real customer websites</p> 369 <h2 id="security-title">Your website remains yours.</h2> 370 <p>xAgent ID is not a remote administrator. It operates through public reads, customer-held credentials and explicitly approved AI-related files.</p> 371 <p class="policy-links"><a href="/privacy">Privacy</a><a href="/terms">Terms</a><a href="/contact">Support</a></p> 372 </div> 373 <dl class="security-facts"> 374 <div><dt>Identity boundary</dt><dd><b>Portable website Agent alias</b><span>It is not Google Agent Identity or a Google principal.</span></dd></div> 375 <div><dt>Default</dt><dd><b>Read only</b><span>Public pages and published Agent contracts.</span></dd></div> 376 <div><dt>Optional write</dt><dd><b>Bounded</b><span>Only owner-allowlisted AI files, with approval.</span></dd></div> 377 <div><dt>Never requested</dt><dd><b>General control</b><span>No broad source repository or deployment access.</span></dd></div> 378 <div><dt>Outcome claims</dt><dd><b>Evidence only</b><span>Missing data stays pending. Synthetic outcomes do not count.</span></dd></div> 379 </dl> 380 </div> 381 </section> 382 383 <section class="pricing-section" id="pricing" aria-labelledby="pricing-title" data-reveal> 384 <div class="shell"> 385 <div class="section-intro pricing-intro"> 386 <div class="pricing-heading-row"><div><p class="kicker">Plans</p><h2 id="pricing-title">Readable, then measured, then transactable, then governed</h2></div><a class="pricing-machine-link" href="/agent/pricing.json">Machine-readable pricing</a></div> 387 <p>Start by making sure an agent can read you and cannot mistake you for someone else. Add measurement when you need to know whether it came. Add a governed channel when agents should be able to reach you. Add bounded execution when every change has to be reversible and provable.</p> 388 </div> 389 <div class="plan-compare-wrap" role="region" aria-label="Compare xAgent ID plans" tabindex="0"> 390 <table class="plan-compare"> 391 <caption><span class="plan-dot included" aria-hidden="true"></span> Included <span class="plan-dash" aria-hidden="true">â</span> Not included</caption> 392 <thead><tr> 393 <th scope="col">Capability</th> 394 <th scope="col" data-plan-id="identity" data-price-usd="12.99"><b class="plan-outcome">Be readable, and unmistakably you</b><span>Identity</span><strong>US$12.99</strong><small>monthly · per verified domain · GA</small><a class="plan-cta" href="/card?plan=identity&source=homepage_pricing" data-pricing-plan="identity">Create Agent ID</a></th> 395 <th class="recommended" scope="col" data-plan-id="monitor" data-price-usd="29.99"><em>Recommended</em><b class="plan-outcome">Know whether AI came, and what it read</b><span>Monitor</span><strong>US$29.99</strong><small>monthly · per verified domain · GA</small><a class="plan-cta" href="/claim?plan=monitor&source=homepage_pricing" data-pricing-plan="monitor">Activate Monitor</a></th> 396 <th scope="col" data-plan-id="agentic" data-price-usd="99"><b class="plan-outcome">Let agents reach you â nothing publishes until you approve it</b><span>Agentic</span><strong>US$99</strong><small>monthly · per verified domain · Early Access</small><a class="plan-cta" href="/claim?plan=agentic&source=homepage_pricing" data-pricing-plan="agentic">Activate Agentic</a></th> 397 <th scope="col" data-plan-id="operate" data-price-usd="199"><b class="plan-outcome">Change things safely, and prove it</b><span>Operate</span><strong>US$199</strong><small>monthly · per verified domain · Enterprise Pilot</small><a class="plan-cta" href="/claim?plan=operate&source=homepage_pricing" data-pricing-plan="operate">Activate Operate</a></th> 398 </tr></thead> 399 <tbody> 400 <tr data-plan-feature="identity"><th scope="row"><b>Your official Agent ID</b><small>One identity bound to one verified domain, so an agent can tell you from someone claiming to be you</small></th><td>
400<span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 401 <tr data-plan-feature="profile"><th scope="row"><b>A profile a machine can read</b><small>Identity, capabilities and sources published in the formats agents actually fetch</small></th><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 402 <tr data-plan-feature="files"><th scope="row"><b>Installable files generated from your site</b><small>llms.txt, Agent Card, schema and WebMCP built from your own public text, with the three fastest fixes; you install them, re-generate any time</small></th><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 403 <tr data-plan-feature="monitoring"><th scope="row"><b>Proof that AI crawlers came</b><small>Which AI crawlers requested your site, when, and what they got, read from your own CDN logs</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 404 <tr data-plan-feature="history"><th scope="row"><b>A record of what changed</b><small>Receipts show what changed on your public surfaces and what was rechecked afterwards</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 405 <tr data-plan-feature="report"><th scope="row"><b>What to fix first, on the audit you run</b><small>A scheduled monthly report is not sent yet. Missing evidence stays pending, not zero.</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 406 <tr data-plan-feature="requests"><th scope="row"><b>An inbox agents can use</b><small>Other agents send scoped, structured requests through a governed channel instead of a contact form</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 407 <tr data-plan-feature="knowledge"><th scope="row"><b>Nothing published without your approval</b><small>Proposed changes stay pending until a person approves them</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 408 <tr data-plan-feature="attribution"><th scope="row"><b>Enquiries traced back to the AI answer</b><small>A sensor on your own pages recognises visitors arriving from an AI assistant and attributes what they do next</small></th><td>
408<span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 409 <tr data-plan-feature="execution"><th scope="row"><b>Reversible changes with signed proof</b><small>Allowlisted AI files only, re-verified by an independent public fetch. One-step rollback with a signed receipt, once a change is applied</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 410 <tr data-plan-feature="edge"><th scope="row"><b>Markup applied in your own edge worker</b><small>Structured markup is rewritten into the response stream by a worker you run, so no source-code access changes hands</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 411 <tr data-plan-feature="policy"><th scope="row"><b>Enterprise controls, and no write access to your site</b><small>Approval separation and operating guardrails. The parent service never holds credentials to your website</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 412 <tr data-plan-feature="governance"><th scope="row"><b>Your own governance policy</b><small>Approval separation, evidence retention and audit export set by you. An inspection priority lane for due work; finishing inside 24 hours is not promised</small></th><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dash" aria-label="Not included">â</span></td><td><span class="plan-dot included"><span class="sr-only">Included</span></span></td></tr> 413 </tbody> 414 </table> 415 </div> 416 <div class="mobile-plan-list" id="mobile-plan-list" aria-label="xAgent ID plans on mobile"></div> 417 <div class="pricing-enterprise-callout"><p class="kicker">Google Cloud</p><h3>Already building your AI stack on Google Cloud?</h3><p>Google Agent Identity requires separate Google Cloud setup; binding stays pending until Google evidence is verified. Google Cloud Marketplace purchase is unavailable. Operate checkout is self-serve after domain verification; checkout does not set up Google identity or email execution receipts.</p><div class="pricing-enterprise-actions"><a class="btn primary" href="/claim?plan=operate&source=gcp_enterprise">Activate Operate</a><a class="btn secondary" href="/contact?topic=google_cloud">Talk to us about Google Cloud</a></div></div><p class="plan-footnotes">Paid features require a verified domain and confirmed payment. Data sources, inboxes and customer runtimes must be configured for the features that use them; checkout alone does not make them ready. Missing evidence stays unknown or pending. Stripe processes payment details. Subscription changes use Stripe's billing portal; displayed proration applies and cancellation defaults to the end of the paid period.</p> 418 <div class="pricing-next"><span class="pricing-policy-links"><a href="/terms">Terms</a><a href="/privacy">Privacy</a><a href="/refund">Cancellation & refunds</a><a href="/contact">Contact</a></span></div> 419 </div> 420 </section> 421 </main> 422 423 <section class="showcase-section" id="install-showcase" hidden> 424 <div class="shell"><p class="kicker">Installed and verified</p><h2>Customer-owned website Agents.</h2><p id="showcase-note"></p><ul id="showcase-wall"></ul><p class="showcase-boundary">A site appears only while it opts in through its own public Agent ID file. Listing is not an endorsement, partnership or paid placement.</p></div> 425 </section> 426 427 <footer class="site-footer"> 428 <div class="shell footer-main"> 429 <a class="brand" href="/" aria-label="xAgent ID"><img class="brand-logo" src="/assets/logo.svg" alt="xAgent ID" width="146" height="32"><span class="brand-name sr-only"><b>xAgent ID</b></span></a> 430 <div><b>Product</b><a href="#install">Install</a><a href="#security">Security</a><a href="#pricing">Plans</a><a href="/dashboard">Dashboard</a></div> 431 <div><b>For Agents</b><a href="/.well-known/xagent-install.json">Install manifest</a><a href="/.well-known/agent-card.json">A2A Agent Card</a><a href="/llms.txt">llms.txt</a><a href="/agent/openapi.json">OpenAPI</a></div> 432 <div><b>Company</b><a href="/privacy">Privacy</a><a href="/terms">Terms</a><a href="/contact">Support</a><a href="https://twin3.ai/" rel="external">twin3.ai</a></div> 433 </div> 434 <div class="shell footer-bottom"><span>© 2026 twin3.ai</span><span>Customer-owned execution. Evidence-backed verification.</span></div> 435 </footer> 436 437
437<script src="/assets/install-wizard.js?v=20260819"></script>
437 438
438<script src="/assets/webmcp-onboarding.js?v=webmcp-challenge-20260902-4"></script>
438 439
439<script> 440 (function () { 441 "use strict"; 442 function t(source) { return window.XAgentI18n && window.XAgentI18n.t ? window.XAgentI18n.t(source) : source; } 443 var tabs = Array.from(document.querySelectorAll("[data-audience-tab]")); 444 var panels = Array.from(document.querySelectorAll("[data-audience-panel]")); 445 function selectAudience(audience, focus) { 446 document.body.dataset.audience = audience; 447 tabs.forEach(function (tab) { 448 var selected = tab.dataset.audienceTab === audience; 449 tab.setAttribute("aria-selected", selected ? "true" : "false"); 450 tab.tabIndex = selected ? 0 : -1; 451 if (selected && focus) tab.focus(); 452 }); 453 panels.forEach(function (panel) { panel.hidden = panel.dataset.audiencePanel !== audience; }); 454 } 455 tabs.forEach(function (tab, index) { 456 tab.addEventListener("click", function () { selectAudience(tab.dataset.audienceTab, false); }); 457 tab.addEventListener("keydown", function (event) { 458 if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return; 459 event.preventDefault(); 460 var next = tabs[(index + (event.key === "ArrowRight" ? 1 : -1) + tabs.length) % tabs.length]; 461 selectAudience(next.dataset.audienceTab, true); 462 }); 463 }); 464 document.querySelectorAll("[data-select-audience]").forEach(function (link) { 465 link.addEventListener("click", function () { selectAudience(link.dataset.selectAudience, false); }); 466 }); 467 document.querySelectorAll(".mobile-nav a").forEach(function (link) { 468 link.addEventListener("click", function () { document.getElementById("mobile-nav").open = false; }); 469 }); 470 471 var status = document.getElementById("install-status"); 472 var version = document.getElementById("release-version"); 473 var integrity = document.getElementById("manifest-integrity"); 474 var input = document.getElementById("target-url"); 475 var loadButton = document.getElementById("load-manifest"); 476 var activeRequest = 0; 477 var loadedManifest = null; 478 function normalizeUrl(raw) { 479 try { 480 var candidate = /^https:\/\//i.test(raw) ? raw : "https://" + raw; 481 var parsed = new URL(candidate); 482 if (parsed.protocol !== "https:" || !parsed.hostname) throw new Error("HTTPS required"); 483 return "https://" + parsed.hostname; 484 } catch (_error) { return ""; } 485 } 486 function setCommands(workflow) { 487 var steps = {}; 488 (workflow || []).forEach(function (step) { steps[step.id] = step; }); 489 document.querySelectorAll("[data-workflow-id]").forEach(function (node) { 490 var step = steps[node.dataset.workflowId]; 491 node.textContent = step && step.command ? step.command : t("Command unavailable"); 492 }); 493 } 494 function updateProductWindow(manifest) { 495 var modules = Array.isArray(manifest.modules) ? manifest.modules : []; 496 var writes = []; 497 modules.forEach(function (module) { (module.writes || []).forEach(function (path) { if (writes.indexOf(path) < 0) writes.push(path); }); }); 498 document.getElementById("hero-release").textContent = t("Release") + " " + manifest.release.version; 499 document.getElementById("hero-host").textContent = manifest.target.host; 500 document.getElementById("hero-package").textContent = manifest.release.package + "@" + manifest.release.version; 501 document.getElementById("hero-writes").textContent = writes.length ? writes.length + " " + t("declared paths, approval required") : t("None"); 502 document.getElementById("hero-state").textContent = t("Ready"); 503 document.getElementById("hero-state").classList.add("is-ready"); 504 } 505 function renderLoadedManifest(manifest) { 506 setCommands(manifest.workflow); 507 updateProductWindow(manifest); 508 version.textContent = manifest.release.version; 509 integrity.textContent = manifest.release.integrity ? t("Published npm integrity") + " · " + manifest.release.integrity.slice(0, 24) + "â¦" : t("Published integrity unavailable"); 510 status.textContent = t("Plan loaded for") + " " + manifest.target.host + ". " + t("Verification runs in the CLI preflight before installation."); 511 window.dispatchEvent(new CustomEvent("xagent:manifestloaded", { detail: { targetUrl: manifest.target.url, manifest: manifest } })); 512 } 513 async function loadManifest() { 514 var target = normalizeUrl(input.value.trim()); 515 if (!target) { 516 status.textContent = t("Enter a valid HTTPS website before loading the plan."); 517 input.setAttribute("aria-invalid", "true"); 518 return; 519 } 520 input.removeAttribute("aria-invalid"); 521 input.value = target; 522 var manifestUrl = "/.well-known/xagent-install.json?url=" + encodeURIComponent(target); 523 document.querySelectorAll("[data-manifest-link]").forEach(function (link) { link.href = manifestUrl; }); 524 var requestId = ++activeRequest; 525 status.textContent = t("Loading the production install planâ¦"); 526 version.textContent = t("Checking"); 527 loadButton.disabled = true;
528 try { 529 var response = await fetch(manifestUrl, { headers: { Accept: "application/json" }, credentials: "omit" }); 530 if (!response.ok) throw new Error("release not ready"); 531 var manifest = await response.json(); 532 if (manifest.schema !== "xagent-install-manifest-v1" || !manifest.release || manifest.release.ready !== true) throw new Error("release not ready"); 533 var expectedHost = new URL(target).hostname; 534 if (!manifest.target || manifest.target.host !== expectedHost) throw new Error("target host mismatch"); 535 if (requestId !== activeRequest) return; 536 loadedManifest = manifest; 537 renderLoadedManifest(manifest); 538 } catch (_error) { 539 if (requestId !== activeRequest) return; 540 loadedManifest = null; 541 setCommands([]); 542 version.textContent = t("Blocked"); 543 integrity.textContent = t("Release metadata unavailable"); 544 status.textContent = t("Production manifest unavailable or target mismatch. Stop before installation."); 545 document.getElementById("hero-state").textContent = t("Unavailable"); 546 window.dispatchEvent(new CustomEvent("xagent:manifestfailed")); 547 } finally { 548 if (requestId === activeRequest) loadButton.disabled = false; 549 } 550 } 551 loadButton.addEventListener("click", loadManifest); 552 input.addEventListener("keydown", function (event) { if (event.key === "Enter") loadManifest(); }); 553 window.addEventListener("xagent:languagechange", function () { 554 if (loadedManifest) renderLoadedManifest(loadedManifest); 555 }); 556 document.querySelectorAll("[data-copy-workflow]").forEach(function (button) { 557 button.addEventListener("click", async function () { 558 var code = document.querySelector('[data-workflow-id="' + button.dataset.copyWorkflow + '"]'); 559 if (!code || !code.textContent || code.textContent === t("Command unavailable")) return; 560 try { 561 await navigator.clipboard.writeText(code.textContent); 562 button.textContent = t("Copied"); 563 window.setTimeout(function () { button.textContent = t("Copy"); }, 1400); 564 } catch (_error) { status.textContent = t("Copy was blocked. Select the command manually."); } 565 }); 566 }); 567 568 function buildMobilePlans() { 569 var target = document.getElementById("mobile-plan-list"); 570 var table = document.querySelector(".plan-compare"); 571 if (!target || !table) return; 572 var headers = Array.from(table.querySelectorAll("thead th[data-plan-id]")); 573 var rows = Array.from(table.querySelectorAll("tbody tr")); 574 headers.forEach(function (header, planIndex) { 575 var details = document.createElement("details"); 576 details.className = "mobile-plan"; 577 if (header.classList.contains("recommended")) details.open = true; 578 var summary = document.createElement("summary"); 579 summary.innerHTML = "<span><b>" + header.querySelector("span").textContent + "</b><small>" + header.querySelector("small").textContent + "</small></span><strong>" + header.querySelector("strong").textContent + "</strong>"; 580 var list = document.createElement("ul"); 581 rows.forEach(function (row) { 582 var cells = row.querySelectorAll("td"); 583 if (cells[planIndex] && cells[planIndex].querySelector(".included")) { 584 var item = document.createElement("li"); 585 item.textContent = row.querySelector("th b").textContent; 586 list.appendChild(item); 587 } 588 }); 589 var sourceLink = header.querySelector(".plan-cta"); 590 if (sourceLink) { 591 var action = sourceLink.cloneNode(true); 592 action.classList.add("mobile-plan-action"); 593 } 594 details.appendChild(summary); details.appendChild(list); 595 if (sourceLink) details.appendChild(action); 596 target.appendChild(details); 597 }); 598 } 599 buildMobilePlans(); 600 window.XAgentInstallWizard.mount(document); 601 var initialUrl = window.XAgentInstallWizard.autoLoadTarget(location.search); 602 if (initialUrl) { 603 input.value = initialUrl; 604 loadManifest(); 605 } else { 606 version.textContent = t("Awaiting website"); 607 status.textContent = t("Enter your HTTPS website to load its production install plan."); 608 } 609 610 if (!(window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) && "IntersectionObserver" in window) { 611 var observer = new IntersectionObserver(function (entries) {
612 entries.forEach(function (entry) { if (entry.isIntersecting) { entry.target.classList.add("is-visible"); observer.unobserve(entry.target); } }); 613 }, { threshold: 0.12 }); 614 document.querySelectorAll("[data-reveal]").forEach(function (section) { observer.observe(section); }); 615 } else { 616 document.querySelectorAll("[data-reveal]").forEach(function (section) { section.classList.add("is-visible"); }); 617 } 618 })(); 619 </script>
619 620
620<script src="/assets/public-url.js?v=card-entry-20260821" defer></script>
620 621
621<script src="/assets/hero-card.js?v=card-entry-20260821" defer></script>
621 622
622<script src="/assets/business-card.js?v=company-coverflow-20260902-1" defer></script>
622 623
623<script src="/templates/aeo-site-sdk.js" data-agent-id="agt_0000" data-endpoint="/api/agent/sdk_event" defer></script>
623 624
624<script> 625 (async function () { 626 function t(source) { return window.XAgentI18n && window.XAgentI18n.t ? window.XAgentI18n.t(source) : source; } 627 var section = document.getElementById("install-showcase"); 628 var wall = document.getElementById("showcase-wall"); 629 var note = document.getElementById("showcase-note"); 630 var showcaseCount = 0; 631 function renderShowcaseNote() { 632 if (!showcaseCount) return; 633 note.textContent = showcaseCount + " " + (showcaseCount === 1 ? t("verified install opted in to public listing.") : t("verified installs opted in to public listing.")); 634 } 635 window.addEventListener("xagent:languagechange", renderShowcaseNote); 636 try { 637 var response = await fetch("/api/site_agents/showcase", { headers: { Accept: "application/json" }, credentials: "omit" }); 638 if (!response.ok) return; 639 var data = await response.json(); 640 var entries = Array.isArray(data.entries) ? data.entries : []; 641 if (!entries.length) return; 642 showcaseCount = entries.length; 643 entries.forEach(function (entry) { 644 var item = document.createElement("li"); 645 var link = document.createElement("a"); 646 link.href = entry.site_url; link.rel = "noopener nofollow"; link.target = "_blank"; 647 var mark = document.createElement("span"); mark.textContent = entry.monogram || "?"; 648 var label = document.createElement("b"); label.textContent = entry.name || entry.host; 649 link.appendChild(mark); link.appendChild(label); item.appendChild(link); wall.appendChild(item); 650 }); 651 renderShowcaseNote(); 652 section.hidden = false; 653 } catch (_error) {} 654 })(); 655 </script>
655 656</body> 657</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.