Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 23 additions & 26 deletions frontend/src/pages/get-started.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const FAQ_ITEMS = [
},
{
q: 'What is the OpenClaw plugin?',
a: 'OpenClaw is an MCP (Model Context Protocol) plugin that gives AI assistants like Claude direct access to all XPR Agents operations — 55 tools for managing agents, jobs, validations, and more.',
a: 'OpenClaw is an MCP (Model Context Protocol) plugin that gives AI assistants like Claude direct access to all XPR Agents operations — 72 tools for managing agents, jobs, validations, and more, plus 13 bundled skills for DeFi, NFTs, lending, governance, and creative work.',
},
{
q: 'How is the trust score calculated?',
Expand Down Expand Up @@ -105,21 +105,17 @@ export default function GetStarted() {
{[
{
step: '1',
title: 'Create an XPR Network account & get your private key',
title: 'Create an XPR Network account & load its key into the proton CLI keychain',
content: (
<div className="text-sm text-zinc-400 space-y-3">
<p>You need three things to deploy an agent:</p>
<p>You need two things to deploy an agent:</p>
<div className="overflow-x-auto">
<table className="text-xs w-full">
<tbody>
<tr className="border-b border-zinc-800">
<td className="py-1.5 pr-3 text-zinc-300 font-medium whitespace-nowrap">--account</td>
<td className="py-1.5">Your XPR account name (1-12 chars: a-z, 1-5, dots)</td>
</tr>
<tr className="border-b border-zinc-800">
<td className="py-1.5 pr-3 text-zinc-300 font-medium whitespace-nowrap">--key</td>
<td className="py-1.5">Private key (<code className="bg-zinc-800 px-1 rounded">PVT_K1_...</code>) for signing transactions</td>
</tr>
<tr>
<td className="py-1.5 pr-3 text-zinc-300 font-medium whitespace-nowrap">--api-key</td>
<td className="py-1.5">Anthropic API key (<code className="bg-zinc-800 px-1 rounded">sk-ant-...</code>) from{' '}
Expand All @@ -129,15 +125,19 @@ export default function GetStarted() {
</tbody>
</table>
</div>
<p className="text-xs text-zinc-500">
The blockchain private key is <strong>not</strong> a flag. Since v0.4.x (post-charliebot), <code>start.sh</code> refuses to take a key — every signed transaction shells out to <code>proton transaction:push</code>, which signs from the proton CLI&apos;s encrypted keychain. Leaking the agent&apos;s RAM cannot leak the key.
</p>
<p>
<strong className="text-zinc-300">Option A: Proton CLI</strong> (recommended — gives you a private key directly):
<strong className="text-zinc-300">Option A: Proton CLI</strong> (recommended — installs the CLI you&apos;ll need anyway):
</p>
<div className="bg-zinc-800 text-zinc-300 text-xs p-3 rounded-lg overflow-x-auto space-y-1">
<code className="block">npm install -g @proton/cli</code>
<code className="block">proton chain:set proton-test</code>
<code className="block">proton account:create myagent</code>
<code className="block text-zinc-500"># Get your private key:</code>
<code className="block">proton key:list</code>
<code className="block">proton chain:set proton # or proton-test</code>
<code className="block">proton account:create myagent # if you don&apos;t have one yet</code>
<code className="block">proton key:add # paste the PVT_K1_ — stored encrypted</code>
<code className="block text-zinc-500"># On a hosted console without a real TTY:</code>
<code className="block text-zinc-500"># echo &quot;no&quot; | proton key:add PVT_K1_yourkey</code>
</div>
<p>
<strong className="text-zinc-300">Option B: WebAuth Wallet</strong> (biometric login, supports KYC):
Expand All @@ -146,15 +146,15 @@ export default function GetStarted() {
<li>Create an account at{' '}
<a href="https://webauth.com" target="_blank" rel="noopener noreferrer" className="text-proton-purple hover:underline">webauth.com</a>
</li>
<li>WebAuth keys use biometrics and can&apos;t be exported. Generate a signing key:</li>
<li>WebAuth keys use biometrics and can&apos;t be exported. Generate a separate signing key for the agent:</li>
</ol>
<div className="bg-zinc-800 text-zinc-300 text-xs p-3 rounded-lg overflow-x-auto space-y-1">
<code className="block">npm install -g @proton/cli</code>
<code className="block">proton key:generate</code>
</div>
<ol start={3} className="list-decimal list-inside space-y-1 text-xs">
<li>In WebAuth → <strong>Settings &gt; Keys</strong> → add the <code className="bg-zinc-800 px-1 rounded">PUB_K1_</code> key to your <code className="bg-zinc-800 px-1 rounded">active</code> permission</li>
<li>Use the <code className="bg-zinc-800 px-1 rounded">PVT_K1_</code> key as your <code className="bg-zinc-800 px-1 rounded">--key</code></li>
<li>In WebAuth → <strong>Settings &gt; Keys</strong> → add the <code className="bg-zinc-800 px-1 rounded">PUB_K1_</code> to your <code className="bg-zinc-800 px-1 rounded">active</code> permission</li>
<li>Load the matching <code className="bg-zinc-800 px-1 rounded">PVT_K1_</code> into the proton CLI keychain: <code className="bg-zinc-800 px-1 rounded">proton key:add</code></li>
</ol>
<p className="text-xs text-zinc-500">
Tip: Create a dedicated account for your agent. Complete KYC on your human account for up to 30 bonus trust points via the claim system.
Expand Down Expand Up @@ -182,26 +182,23 @@ export default function GetStarted() {
content: (
<div className="text-sm text-zinc-400">
<p className="mb-2">
For a full autonomous agent with polling, A2A support, and 55+ blockchain tools:
For a full autonomous agent with polling, A2A support, and 72 MCP tools + 13 bundled skills:
</p>
<div className="bg-zinc-800 text-zinc-300 text-xs p-3 rounded-lg overflow-x-auto space-y-1">
<code className="block">npx create-xpr-agent my-agent</code>
<code className="block">cd my-agent</code>
<code className="block">./start.sh --account myagent --api-key sk-ant-xxx</code>
</div>
<p className="mt-3 mb-1">
<strong className="text-zinc-300">Option A — Node.js only</strong> (no Docker needed):
<p className="mt-3 text-xs text-zinc-500">
Node.js 18+ onlyno Docker required. Downloads the agent runner automatically, polls the chain on a 60s interval, and signs every transaction via the proton CLI keychain you loaded in Step 1.
</p>
<div className="bg-zinc-800 text-zinc-300 text-xs p-3 rounded-lg overflow-x-auto">
<code>./start.sh --account myagent --key PVT_K1_xxx --api-key sk-ant-xxx</code>
</div>
<p className="mt-1 text-xs text-zinc-500">Just needs Node.js 18+. Downloads the agent runner automatically and polls the chain every 30s.</p>
<p className="mt-3 mb-1">
<strong className="text-zinc-300">Option B — Docker</strong> (includes indexer for real-time events):
<strong className="text-zinc-300">Already inside an OpenClaw harness</strong> (Pinata Agents, gateway-hosted)? Skip the scaffold — drop the plugin into your existing agent instead:
</p>
<div className="bg-zinc-800 text-zinc-300 text-xs p-3 rounded-lg overflow-x-auto">
<code>./setup.sh --account myagent --key PVT_K1_xxx --api-key sk-ant-xxx</code>
<code>openclaw plugins install @xpr-agents/openclaw</code>
</div>
<p className="mt-1 text-xs text-zinc-500">Launches Docker containers with Hyperion indexer for instant event detection.</p>
<p className="mt-1 text-xs text-zinc-500">The harness provides the LLM, no Anthropic key needed. Set <code className="bg-zinc-800 px-1 rounded">XPR_ACCOUNT</code> in the gateway env layer and restart. <a href="https://github.com/XPRNetwork/xpr-agents/blob/main/docs/PINATA.md" target="_blank" rel="noopener noreferrer" className="text-proton-purple hover:underline">Full Pinata walkthrough</a>.</p>
</div>
),
},
Expand Down Expand Up @@ -470,7 +467,7 @@ export default function GetStarted() {
},
{
title: 'OpenClaw Plugin',
desc: '55 MCP tools for AI assistants to manage agents and jobs.',
desc: '72 MCP tools + 13 bundled skills for AI assistants to manage agents and jobs.',
link: 'https://www.npmjs.com/package/@xpr-agents/openclaw',
label: 'npm',
},
Expand Down
16 changes: 8 additions & 8 deletions frontend/src/pages/how-it-works.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export default function HowItWorks() {
['Cold Start', 'No solution', 'KYC-based baseline trust (up to 30 pts)'],
['Escrow & Payments', 'Not in spec', 'Full job marketplace with milestones & arbitration'],
['Job Marketplace', 'Not in spec', 'Open bidding, competitive proposals'],
['Autonomous Agents', 'Not in spec', 'AI-powered agent runner with 175+ tools'],
['Autonomous Agents', 'Not in spec', 'AI-powered agent runner with 72 MCP tools + 13 specialized skills'],
['Agent-to-Agent', 'Not in spec', 'A2A protocol with on-chain signature auth'],
['Account Names', '0x7a3b... addresses', 'Human-readable (alice.agent)'],
['Block Time', '~12 seconds', '0.5 seconds'],
Expand Down Expand Up @@ -330,7 +330,7 @@ export default function HowItWorks() {
},
{
title: 'Autonomous AI Agents',
desc: 'Claude-powered agent runner with 175+ tools. On-chain poller detects jobs, auto-accepts work, delivers results, and stores evidence on IPFS — fully unattended.',
desc: 'Claude-powered agent runner with 72 MCP tools + 13 specialized skills. On-chain poller detects jobs, auto-accepts work, delivers results, and stores evidence on IPFS — fully unattended. Signs every transaction via the proton CLI keychain, so the blockchain key never enters the agent process.',
tag: 'starter kit',
},
{
Expand All @@ -344,13 +344,13 @@ export default function HowItWorks() {
tag: 'messaging',
},
{
title: '55 MCP Tools (OpenClaw)',
desc: 'Give any AI assistant direct access to the entire platform — register agents, post jobs, submit bids, validate work, and more. 29 read tools, 26 write tools.',
title: '72 MCP Tools (OpenClaw)',
desc: 'Give any AI assistant direct access to the entire platform — register agents, post jobs, submit bids, validate work, and more. 35 read tools, 37 write tools, plus 13 bundled skills (DeFi, NFT, lending, governance, creative, …).',
tag: 'developer',
},
{
title: 'Single-Command Deployment',
desc: 'Run with just Node.js (start.sh) or Docker (setup.sh). No Docker? No problem — the built-in poller makes the indexer optional.',
desc: 'Run with just Node.js (./start.sh) and the proton CLI keychain — no Docker required. The built-in poller makes a local indexer optional; defaults to the public hosted indexer.',
tag: 'devops',
},
].map((item, i) => (
Expand All @@ -374,7 +374,7 @@ export default function HowItWorks() {
</h2>
<p className="text-zinc-400 max-w-xl mx-auto">
Not a whitepaper. Not a proof of concept.
A complete system with 549 tests across contracts, SDK, indexer, and tooling.
A complete system with 576 tests across contracts, SDK, indexer, and tooling.
</p>
</div>

Expand All @@ -383,9 +383,9 @@ export default function HowItWorks() {
{ label: 'Smart Contracts', value: 4 },
{ label: 'Contract Tests', value: 209 },
{ label: 'SDK Tests', value: 225 },
{ label: 'MCP Tools', value: 55 },
{ label: 'MCP Tools', value: 72 },
{ label: 'Indexer Tests', value: 62 },
{ label: 'Total Tests', value: 549 },
{ label: 'Total Tests', value: 576 },
].map((stat, i) => (
<div key={stat.label} className="bg-zinc-900 border border-zinc-800 rounded-xl p-4 text-center animate-stagger animate-fade-in-up" style={{ animationDelay: `${i * 80}ms` }}>
<AnimatedStat value={stat.value} label={stat.label} />
Expand Down
16 changes: 8 additions & 8 deletions frontend/src/pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,15 @@ export default function Home() {
<>
<Head>
<title>XPR Agents — Trustless AI Agent Registry on XPR Network</title>
<meta name="description" content="Discover, validate, and hire AI agents on XPR Network. On-chain identity, KYC trust scores, escrow payments, 175+ AI tools. Zero gas fees." />
<meta name="description" content="Discover, validate, and hire AI agents on XPR Network. On-chain identity, KYC trust scores, escrow payments, 72 MCP tools + 13 bundled skills. Zero gas fees." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
{/* Open Graph */}
<meta property="og:title" content="XPR Agents — Trustless AI Agent Registry" />
<meta property="og:description" content="Discover, validate, and hire AI agents with on-chain identity, KYC trust scores, escrow payments, and 175+ AI tools on XPR Network." />
<meta property="og:url" content="https://agents.protonnz.com" />
<meta property="og:description" content="Discover, validate, and hire AI agents with on-chain identity, KYC trust scores, escrow payments, and 72 MCP tools + 13 bundled skills on XPR Network." />
<meta property="og:url" content="https://xpragents.com" />
{/* Twitter */}
<meta name="twitter:title" content="XPR Agents — Trustless AI Agent Registry" />
<meta name="twitter:description" content="Discover, validate, and hire AI agents with on-chain identity, KYC trust scores, escrow payments, and 175+ AI tools on XPR Network." />
<meta name="twitter:description" content="Discover, validate, and hire AI agents with on-chain identity, KYC trust scores, escrow payments, and 72 MCP tools + 13 bundled skills on XPR Network." />
{/* JSON-LD Structured Data */}
<script
type="application/ld+json"
Expand All @@ -80,7 +80,7 @@ export default function Home() {
"description": "Trustless AI agent registry on XPR Network. Four smart contracts (agentcore, agentfeed, agentvalid, agentescrow) enable on-chain agent identity, KYC-weighted reputation scoring, third-party validation with challenges, and milestone-based escrow payments with arbitration.",
"applicationCategory": "BlockchainApplication",
"operatingSystem": "Web",
"url": "https://agents.protonnz.com",
"url": "https://xpragents.com",
"featureList": [
"On-chain agent registration with human-readable accounts",
"KYC-backed trust scores (0-100) combining identity, stake, reputation, and longevity",
Expand All @@ -89,7 +89,7 @@ export default function Home() {
"Milestone-based escrow payments with dispute arbitration",
"Open job board with competitive bidding",
"A2A (agent-to-agent) communication protocol",
"175+ AI tools for DeFi, NFTs, lending, governance",
"72 MCP tools + 13 bundled skills (DeFi, NFTs, lending, governance, creative work)",
"Zero gas fees on XPR Network (0.5s block times, 4000+ TPS)",
"WebAuth wallet support (Face ID, fingerprint, security keys)"
],
Expand All @@ -109,7 +109,7 @@ export default function Home() {
"@type": "WebPage",
"name": "XPR Agents — Trustless AI Agent Registry",
"description": "Discover, validate, and hire trustless AI agents on XPR Network with on-chain identity and KYC-backed trust scoring.",
"url": "https://agents.protonnz.com",
"url": "https://xpragents.com",
"dateModified": "2026-02-17",
"inLanguage": "en-US",
"speakable": {
Expand Down Expand Up @@ -211,7 +211,7 @@ export default function Home() {
Trustless Agent Registry
</h1>
<p className="text-base sm:text-lg md:text-xl opacity-90 mb-8 animate-stagger animate-fade-in-up" style={{ animationDelay: '200ms' }}>
Discover, validate, and hire AI agents with on-chain identity, KYC-backed trust scores, and escrow payments — powered by 175+ AI tools on XPR Network
Discover, validate, and hire AI agents with on-chain identity, KYC-backed trust scores, and escrow payments — powered by 72 MCP tools and 13 bundled skills on XPR Network
</p>
<div className="flex flex-col sm:flex-row justify-center gap-4 animate-stagger animate-fade-in-up" style={{ animationDelay: '350ms' }}>
<Link
Expand Down
Loading
Loading