{
  "schemaVersion": "1.0",
  "item": {
    "slug": "8004-mcp",
    "name": "Agent identity and reputation registration",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/MonteCrypto999/8004-mcp",
    "canonicalUrl": "https://clawhub.ai/MonteCrypto999/8004-mcp",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/8004-mcp",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=8004-mcp",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "skill.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/8004-mcp"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/8004-mcp",
    "agentPageUrl": "https://openagent3.xyz/skills/8004-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/8004-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/8004-mcp/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "8004-MCP - Agent Registry Protocol",
        "body": "Multi-chain MCP server for ERC-8004 Agent Registry. Query agents, reputation, and feedback across Solana + EVM chains."
      },
      {
        "title": "1. Check System Health",
        "body": "await client.callTool({ name: 'health_check', arguments: {} });\n// Returns: { server: 'ok', chains: {...}, walletStore: 'not_initialized', ... }"
      },
      {
        "title": "2. Initialize Wallet Store (One-Time)",
        "body": "The wallet store encrypts all your wallets with a single master password.\n\n// ⚠️ SAVE THIS PASSWORD - Cannot be recovered if lost!\nawait client.callTool({ name: 'wallet_store_init', arguments: {\n  password: 'YourSecureMasterPassword123!'\n}});\n// Returns: { initialized: true, message: 'Wallet store created' }"
      },
      {
        "title": "3. Create a Wallet",
        "body": "await client.callTool({ name: 'wallet_create', arguments: {\n  name: 'my-eth-wallet',\n  chainType: 'evm'  // or 'solana'\n}});\n// Returns: { name: 'my-eth-wallet', address: '0x...', chainType: 'evm' }"
      },
      {
        "title": "4. Fund Your Wallet",
        "body": "Check the \"Approximate Costs\" section below for funding amounts.\n\n// Get faucet info (testnet) or ask owner (mainnet)\nconst funding = await client.callTool({ name: 'faucet_info', arguments: {\n  chain: 'eth'  // or 'sol', 'base'\n}});\n// Returns faucet URLs and wallet address\n\n⚠️ Important for Agents:\n\nSee \"Approximate Costs\" section for funding amounts\nFaucets require captchas - you can't use them directly\nAsk your owner to fund your wallet\nOn mainnet: no faucets, must ask owner for real funds"
      },
      {
        "title": "5. On New Sessions - Unlock Store",
        "body": "await client.callTool({ name: 'wallet_store_unlock', arguments: {\n  password: 'YourSecureMasterPassword123!'\n}});\n// Now all write operations work"
      },
      {
        "title": "Common Issues",
        "body": "SymptomCauseSolutionSTORE_NOT_INITIALIZEDFirst runCall wallet_store_initSTORE_LOCKEDNew sessionCall wallet_store_unlockINVALID_PASSWORDWrong passwordCheck password (no recovery!)Timeout on wallet opsStore lockedUnlock firstINSUFFICIENT_BALANCEEmpty walletAsk owner to fund (see below)"
      },
      {
        "title": "Requesting Funds from Owner",
        "body": "As an agent, you cannot use faucets directly (captchas). Ask your owner:\n\n// 1. Get your wallet address\nconst info = await client.callTool({ name: 'faucet_info', arguments: { chain: 'eth' }});\n\n// 2. Ask owner to fund (see \"Approximate Costs\" section for amounts)\n// Example: \"Please fund my wallet 0x1234... with ~0.01 SOL or ~$0.50 in ETH\"\n\n// 3. Wait for owner to send funds, then proceed with agent_register"
      },
      {
        "title": "Quick Start (MCP Client)",
        "body": "import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { spawn } from 'child_process';\n\nconst server = spawn('npx', ['@quantulabs/8004-mcp'], {\n  stdio: ['pipe', 'pipe', 'inherit'],\n  env: { ...process.env, NETWORK_MODE: 'testnet' }\n});\n\nconst client = new Client(\n  { name: 'my-agent', version: '1.0.0' },\n  { capabilities: {} }\n);\n\nawait client.connect(new StdioClientTransport({\n  reader: server.stdout,\n  writer: server.stdin,\n}));\n\n// Ready - use client.callTool()"
      },
      {
        "title": "Global ID Format",
        "body": "ChainFormatExampleSolanasol:<pubkey>sol:HHCVWcqs...Ethereumeth:<chainId>:<tokenId>eth:11155111:738Basebase:<chainId>:<tokenId>base:84532:42"
      },
      {
        "title": "Read Operations (No wallet needed)",
        "body": "agent_search\n\nSearch agents across chains.\n\nawait client.callTool({ name: 'agent_search', arguments: {\n  query: 'trading bot',      // Search name/description\n  chain: 'eth',              // Optional: sol, eth, base, arb, poly, op\n  limit: 20,                 // Default: 20, max: 100\n  offset: 0,                 // Pagination offset\n  cursor: 'abc...',          // Cursor pagination (EVM only, faster)\n  // Advanced filters (EVM only):\n  hasMcp: true,              // Has MCP endpoint\n  hasA2a: true,              // Has A2A endpoint\n  active: true,              // Active agents only\n  x402support: true,         // Supports x402 payments\n  mcpTools: ['web-search'],  // Has specific MCP tools\n  a2aSkills: ['translation'] // Has specific A2A skills\n}});\n// Returns: { results: IAgentSummary[], total, hasMore, cursor? }\n\ncache_search\n\nFast fuzzy search (FTS5). Use for partial name matches.\n\nawait client.callTool({ name: 'cache_search', arguments: {\n  query: 'Upsense',  // Partial match works\n  chain: 'all',\n  limit: 20\n}});\n\nagent_get\n\nGet agent details by ID.\n\nawait client.callTool({ name: 'agent_get', arguments: {\n  id: 'eth:11155111:738'  // Global ID\n}});\n// Returns: IAgent with name, description, owner, endpoints, metadata\n\nagent_exists\n\nCheck if agent exists.\n\nawait client.callTool({ name: 'agent_exists', arguments: {\n  id: 'sol:HHCVWcqs...'\n}});\n// Returns: { exists: boolean }\n\nreputation_get\n\nGet reputation summary.\n\nawait client.callTool({ name: 'reputation_get', arguments: {\n  id: 'sol:HHCVWcqs...'\n}});\n// Returns: { averageScore, totalFeedbacks, trustTier (Solana only) }\n\nfeedback_list\n\nList feedbacks for an agent.\n\nawait client.callTool({ name: 'feedback_list', arguments: {\n  id: 'sol:HHCVWcqs...',\n  limit: 20,\n  minScore: 50  // Optional filter\n}});\n\nleaderboard_get\n\nTop agents by reputation.\n\nawait client.callTool({ name: 'leaderboard_get', arguments: {\n  chain: 'sol',\n  limit: 10\n}});\n\nsolana_atom_stats_get\n\nATOM reputation metrics (Solana only).\n\nawait client.callTool({ name: 'solana_atom_stats_get', arguments: {\n  asset: 'HHCVWcqs...'  // Solana pubkey (no sol: prefix)\n}});\n// Returns: { qualityScore, trustTier, uniqueClients, fastEma, slowEma }\n\nsolana_integrity_verify\n\nVerify indexer data integrity (Solana only).\n\nawait client.callTool({ name: 'solana_integrity_verify', arguments: {\n  asset: 'HHCVWcqs...'\n}});\n// Returns: { status: 'valid' | 'syncing' | 'corrupted' }"
      },
      {
        "title": "Write Operations (Wallet required)",
        "body": "Wallet Store Setup (Master Password)\n\n// 1. Initialize store (one-time) - SAVE THE MASTER PASSWORD!\nawait client.callTool({ name: 'wallet_store_init', arguments: {\n  password: 'MySecureMaster123!'\n}});\n\n// 2. Create wallets (stored in encrypted store)\nawait client.callTool({ name: 'wallet_create', arguments: {\n  name: 'my-solana',\n  chainType: 'solana'  // or 'evm'\n}});\n\n// 3. On new session, unlock store with master password\nawait client.callTool({ name: 'wallet_store_unlock', arguments: {\n  password: 'MySecureMaster123!'\n}});\n\n// 4. Now write operations work (all wallets unlocked)\n\nfeedback_give\n\nSubmit feedback for an agent.\n\nawait client.callTool({ name: 'feedback_give', arguments: {\n  id: 'sol:HHCVWcqs...',\n  value: 85,              // Score 0-100\n  tag1: 'uptime',         // Category tag\n  tag2: 'day',            // Period tag\n  comment: 'Great agent', // Optional\n  skipSend: false         // true = dry-run (returns unsigned tx)\n}});\n\nagent_register\n\nRegister new agent on-chain. See \"Approximate Costs\" section for funding.\n\nawait client.callTool({ name: 'agent_register', arguments: {\n  chain: 'eth',  // or 'sol', 'base', etc.\n  name: 'My Agent',\n  description: 'Does cool stuff',\n  tokenUri: 'https://example.com/agent.json',  // Optional: your hosted metadata\n  // If no tokenUri: SDK uploads to IPFS automatically\n}});"
      },
      {
        "title": "Solana (Devnet/Mainnet)",
        "body": "OperationCostNotesagent_register~0.01 SOLIncludes ATOM stats accountfeedback_give~0.0005 SOLEvent-based, low rentfeedback_response_append~0.0005 SOLEvent-basedagent_uri_update~0.00005 SOLTx fee only"
      },
      {
        "title": "EVM - L2 Chains (Base, Arbitrum, Optimism)",
        "body": "Recommended for lowest costs.\n\nOperationGasTypical Costagent_register150-200k$0.01-0.50feedback_give100k$0.01-0.30feedback_response_append60k$0.01-0.20agent_uri_update50k$0.01-0.15"
      },
      {
        "title": "EVM - Ethereum Mainnet",
        "body": "High variability - gas spikes during congestion.\n\nOperationGasCost (25-100 gwei)agent_register150-200k$10-60feedback_give100k$7-30feedback_response_append60k$4-18agent_uri_update50k$3-15\n\nTip: Use L2 chains (Base, Arbitrum) for 10-100x lower costs than Ethereum mainnet."
      },
      {
        "title": "Dry-Run Mode (skipSend)",
        "body": "Test write operations without funds or broadcasting:\n\n// Returns unsigned transaction, no funds needed\nconst preview = await client.callTool({ name: 'feedback_give', arguments: {\n  id: 'sol:HHCVWcqs...',\n  value: 85,\n  tag1: 'uptime',\n  skipSend: true  // Dry-run\n}});\n// preview.content[0].text contains: { unsigned: true, transaction: \"base64...\", message: \"...\" }\n\nSupported on: feedback_give, agent_register, agent_transfer, agent_uri_update, feedback_revoke, solana_validation_request, solana_validation_respond"
      },
      {
        "title": "Network Configuration",
        "body": "// Check current network\nawait client.callTool({ name: 'network_get', arguments: {} });\n\n// Switch to mainnet\nawait client.callTool({ name: 'network_set', arguments: { mode: 'mainnet' } });\n\n// Switch to testnet (default)\nawait client.callTool({ name: 'network_set', arguments: { mode: 'testnet' } });\n\nNetworkSolanaEthereumBasetestnetdevnetSepolia (11155111)Base Sepolia (84532)mainnetmainnet-betaMainnet (1)Base (8453)"
      },
      {
        "title": "x402 Protocol",
        "body": "Payment-linked reputation.\n\n// 1. Build identity for 402 response\nconst identity = await client.callTool({ name: 'x402_identity_build', arguments: {\n  agentId: 'sol:HHCVWcqs...'\n}});\n\n// 2. Parse payment proof from response header\nconst proof = await client.callTool({ name: 'x402_proof_parse', arguments: {\n  paymentResponse: 'base64-encoded-header...'\n}});\n\n// 3. Submit feedback with proof\nawait client.callTool({ name: 'x402_feedback_submit', arguments: {\n  agentId: 'sol:HHCVWcqs...',\n  value: 90,\n  tag1: 'x402-resource-delivered',\n  tag2: 'exact-svm',\n  proofOfPayment: proof.proofOfPayment\n}});"
      },
      {
        "title": "Error Codes",
        "body": "ErrorCauseSolutionSTORE_LOCKEDWrite op without unlockCall wallet_store_unlock with master passwordSTORE_NOT_INITIALIZEDNo wallet storeCall wallet_store_init firstINVALID_PASSWORDWrong master passwordCheck password (cannot recover if lost)AGENT_NOT_FOUNDInvalid IDVerify global ID formatINSUFFICIENT_BALANCEWallet emptyFund wallet addressPROVIDER_NOT_AVAILABLEChain not initializedCheck network_get"
      },
      {
        "title": "OASF Standards",
        "body": "// List valid skill slugs\nawait client.callTool({ name: 'oasf_list_skills', arguments: {} });\n\n// List valid domain slugs\nawait client.callTool({ name: 'oasf_list_domains', arguments: {} });\n\n// List feedback tags\nawait client.callTool({ name: 'oasf_list_tags', arguments: {} });"
      },
      {
        "title": "Agent Operations",
        "body": "agent_get - Get agent by ID\nagent_exists - Check existence\nagent_search - Search with filters\nagent_list_by_owner - List by owner address\nagent_register - Register new agent (write)\nagent_transfer - Transfer ownership (write)\nagent_uri_update - Update metadata URI (write)\nagent_metadata_set - Set on-chain metadata (Solana, write)"
      },
      {
        "title": "Feedback Operations",
        "body": "feedback_give - Submit feedback (write)\nfeedback_read - Read single feedback\nfeedback_list - List feedbacks\nfeedback_revoke - Revoke feedback (write)\nfeedback_response_append - Respond to feedback (write)"
      },
      {
        "title": "Reputation Operations",
        "body": "reputation_get - Get summary\nleaderboard_get - Top agents"
      },
      {
        "title": "Collection Operations",
        "body": "collection_get - Get collection details\ncollection_list - List collections\ncollection_agents - List agents in collection\ncollection_base_get - Get base registry\ncollection_create - Create collection (Solana, write)\ncollection_uri_update - Update collection URI (Solana, write)"
      },
      {
        "title": "Wallet Store (Master Password)",
        "body": "wallet_store_init - Initialize store with master password\nwallet_store_unlock - Unlock all wallets with master password\nwallet_store_lock - Lock store (secure wipe)\nwallet_store_status - Get store status\nwallet_store_change_password - Change master password\nwallet_store_migrate - Migrate legacy wallets"
      },
      {
        "title": "Wallet Operations",
        "body": "wallet_list - List wallets in store\nwallet_info - Wallet details\nwallet_create - Create new wallet (requires unlocked store)\nwallet_import - Import private key (requires unlocked store)\nwallet_delete - Delete wallet (requires unlocked store)\nwallet_security - Configure auto-lock timeout"
      },
      {
        "title": "Cache Operations",
        "body": "cache_search - Fast FTS5 search\ncache_refresh - Force refresh\ncache_stats - Cache statistics\ncache_sync_status - Sync status"
      },
      {
        "title": "Solana-Specific",
        "body": "solana_atom_stats_get - ATOM metrics\nsolana_atom_stats_initialize - Init ATOM account (write)\nsolana_trust_tier_get - Trust tier\nsolana_enriched_summary_get - Combined metrics\nsolana_agent_wallet_get - Get operational wallet\nsolana_sign - Sign with agent wallet\nsolana_verify - Verify signature\nsolana_validation_request - Request validation (write)\nsolana_validation_respond - Respond to validation (write)\nsolana_validation_read - Read validation\nsolana_validation_wait - Wait for response\nsolana_validation_pending_get - Pending validations\nsolana_integrity_verify - O(1) integrity check\nsolana_integrity_verify_deep - Deep verification"
      },
      {
        "title": "EVM-Specific",
        "body": "evm_agent_wallet_set - Set operational wallet (write)\nevm_agent_wallet_unset - Remove operational wallet (write)"
      },
      {
        "title": "x402 Protocol",
        "body": "x402_identity_build - Build agent identity\nx402_proof_parse - Parse payment proof\nx402_feedback_build - Build feedback file\nx402_feedback_submit - Submit with proof (write)"
      },
      {
        "title": "Configuration & Health",
        "body": "config_get - Current config\nconfig_set - Update config\nconfig_reset - Reset to defaults\nnetwork_get - Network status\nnetwork_set - Switch network\nhealth_check - System health (server, chains, wallet store, cache)\nfaucet_info - Testnet faucet URLs and funding info"
      },
      {
        "title": "OASF Standards",
        "body": "oasf_list_skills - Valid skill slugs\noasf_list_domains - Valid domain slugs\noasf_list_tags - Feedback tags\noasf_validate_skill - Validate skill\noasf_validate_domain - Validate domain\noasf_validate_tag - Validate tag"
      },
      {
        "title": "Crawler",
        "body": "crawler_fetch_mcp - Fetch MCP capabilities\ncrawler_fetch_a2a - Fetch A2A agent card\ncrawler_is_alive - Health check"
      },
      {
        "title": "IPFS (Configured by default)",
        "body": "ipfs_configure - Override default IPFS/Pinata settings (optional)\nipfs_add_json - Store JSON (max 1MB)\nipfs_add_registration - Store registration file\nipfs_get_registration - Retrieve registration\n\nNote: IPFS is pre-configured with a shared Pinata account. No setup required for basic usage."
      },
      {
        "title": "Claude Code Integration",
        "body": "This section is for Claude Code / AI assistants using 8004-MCP tools."
      },
      {
        "title": "Intent Mapping",
        "body": "User SaysToolNotes\"find agents\", \"search for X\"agent_search or cache_searchUse cache_search for partial names\"agent details\", \"info on X\"agent_getPass global ID\"is X reliable?\", \"reputation\"reputation_getReturns score + trust tier\"top agents\", \"best agents\"leaderboard_getChain optional\"reviews for X\", \"feedback\"feedback_list\"my wallets\"wallet_list\"switch to mainnet\"network_setmode: 'mainnet'\"OASF skills/domains/tags\"oasf_list_*"
      },
      {
        "title": "DO NOT use web search for:",
        "body": "Agent registry queries (use 8004 tools)\nReputation/feedback lookups\nOASF standards\nx402 protocol"
      },
      {
        "title": "Search Strategy",
        "body": "Exact name known → agent_search with nameQuery\nPartial name → cache_search (fuzzy FTS5)\nBy capabilities → agent_search with hasMcp, hasA2a, mcpTools, etc.\nBy owner → agent_search with owner"
      },
      {
        "title": "Write Operation Flow",
        "body": "Check wallet_store_status - is store initialized and unlocked?\nIf not initialized: wallet_store_init (save master password!)\nIf locked: wallet_store_unlock with master password\nIf no wallet: wallet_create for needed chain\nExecute write operation\nReport transaction hash on success"
      }
    ],
    "body": "8004-MCP - Agent Registry Protocol\n\nMulti-chain MCP server for ERC-8004 Agent Registry. Query agents, reputation, and feedback across Solana + EVM chains.\n\n⚡ First Time Setup (IMPORTANT)\n1. Check System Health\nawait client.callTool({ name: 'health_check', arguments: {} });\n// Returns: { server: 'ok', chains: {...}, walletStore: 'not_initialized', ... }\n\n2. Initialize Wallet Store (One-Time)\n\nThe wallet store encrypts all your wallets with a single master password.\n\n// ⚠️ SAVE THIS PASSWORD - Cannot be recovered if lost!\nawait client.callTool({ name: 'wallet_store_init', arguments: {\n  password: 'YourSecureMasterPassword123!'\n}});\n// Returns: { initialized: true, message: 'Wallet store created' }\n\n3. Create a Wallet\nawait client.callTool({ name: 'wallet_create', arguments: {\n  name: 'my-eth-wallet',\n  chainType: 'evm'  // or 'solana'\n}});\n// Returns: { name: 'my-eth-wallet', address: '0x...', chainType: 'evm' }\n\n4. Fund Your Wallet\n\nCheck the \"Approximate Costs\" section below for funding amounts.\n\n// Get faucet info (testnet) or ask owner (mainnet)\nconst funding = await client.callTool({ name: 'faucet_info', arguments: {\n  chain: 'eth'  // or 'sol', 'base'\n}});\n// Returns faucet URLs and wallet address\n\n\n⚠️ Important for Agents:\n\nSee \"Approximate Costs\" section for funding amounts\nFaucets require captchas - you can't use them directly\nAsk your owner to fund your wallet\nOn mainnet: no faucets, must ask owner for real funds\n5. On New Sessions - Unlock Store\nawait client.callTool({ name: 'wallet_store_unlock', arguments: {\n  password: 'YourSecureMasterPassword123!'\n}});\n// Now all write operations work\n\nCommon Issues\nSymptom\tCause\tSolution\nSTORE_NOT_INITIALIZED\tFirst run\tCall wallet_store_init\nSTORE_LOCKED\tNew session\tCall wallet_store_unlock\nINVALID_PASSWORD\tWrong password\tCheck password (no recovery!)\nTimeout on wallet ops\tStore locked\tUnlock first\nINSUFFICIENT_BALANCE\tEmpty wallet\tAsk owner to fund (see below)\nRequesting Funds from Owner\n\nAs an agent, you cannot use faucets directly (captchas). Ask your owner:\n\n// 1. Get your wallet address\nconst info = await client.callTool({ name: 'faucet_info', arguments: { chain: 'eth' }});\n\n// 2. Ask owner to fund (see \"Approximate Costs\" section for amounts)\n// Example: \"Please fund my wallet 0x1234... with ~0.01 SOL or ~$0.50 in ETH\"\n\n// 3. Wait for owner to send funds, then proceed with agent_register\n\nQuick Start (MCP Client)\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { spawn } from 'child_process';\n\nconst server = spawn('npx', ['@quantulabs/8004-mcp'], {\n  stdio: ['pipe', 'pipe', 'inherit'],\n  env: { ...process.env, NETWORK_MODE: 'testnet' }\n});\n\nconst client = new Client(\n  { name: 'my-agent', version: '1.0.0' },\n  { capabilities: {} }\n);\n\nawait client.connect(new StdioClientTransport({\n  reader: server.stdout,\n  writer: server.stdin,\n}));\n\n// Ready - use client.callTool()\n\nGlobal ID Format\nChain\tFormat\tExample\nSolana\tsol:<pubkey>\tsol:HHCVWcqs...\nEthereum\teth:<chainId>:<tokenId>\teth:11155111:738\nBase\tbase:<chainId>:<tokenId>\tbase:84532:42\nCore Tools\nRead Operations (No wallet needed)\nagent_search\n\nSearch agents across chains.\n\nawait client.callTool({ name: 'agent_search', arguments: {\n  query: 'trading bot',      // Search name/description\n  chain: 'eth',              // Optional: sol, eth, base, arb, poly, op\n  limit: 20,                 // Default: 20, max: 100\n  offset: 0,                 // Pagination offset\n  cursor: 'abc...',          // Cursor pagination (EVM only, faster)\n  // Advanced filters (EVM only):\n  hasMcp: true,              // Has MCP endpoint\n  hasA2a: true,              // Has A2A endpoint\n  active: true,              // Active agents only\n  x402support: true,         // Supports x402 payments\n  mcpTools: ['web-search'],  // Has specific MCP tools\n  a2aSkills: ['translation'] // Has specific A2A skills\n}});\n// Returns: { results: IAgentSummary[], total, hasMore, cursor? }\n\ncache_search\n\nFast fuzzy search (FTS5). Use for partial name matches.\n\nawait client.callTool({ name: 'cache_search', arguments: {\n  query: 'Upsense',  // Partial match works\n  chain: 'all',\n  limit: 20\n}});\n\nagent_get\n\nGet agent details by ID.\n\nawait client.callTool({ name: 'agent_get', arguments: {\n  id: 'eth:11155111:738'  // Global ID\n}});\n// Returns: IAgent with name, description, owner, endpoints, metadata\n\nagent_exists\n\nCheck if agent exists.\n\nawait client.callTool({ name: 'agent_exists', arguments: {\n  id: 'sol:HHCVWcqs...'\n}});\n// Returns: { exists: boolean }\n\nreputation_get\n\nGet reputation summary.\n\nawait client.callTool({ name: 'reputation_get', arguments: {\n  id: 'sol:HHCVWcqs...'\n}});\n// Returns: { averageScore, totalFeedbacks, trustTier (Solana only) }\n\nfeedback_list\n\nList feedbacks for an agent.\n\nawait client.callTool({ name: 'feedback_list', arguments: {\n  id: 'sol:HHCVWcqs...',\n  limit: 20,\n  minScore: 50  // Optional filter\n}});\n\nleaderboard_get\n\nTop agents by reputation.\n\nawait client.callTool({ name: 'leaderboard_get', arguments: {\n  chain: 'sol',\n  limit: 10\n}});\n\nsolana_atom_stats_get\n\nATOM reputation metrics (Solana only).\n\nawait client.callTool({ name: 'solana_atom_stats_get', arguments: {\n  asset: 'HHCVWcqs...'  // Solana pubkey (no sol: prefix)\n}});\n// Returns: { qualityScore, trustTier, uniqueClients, fastEma, slowEma }\n\nsolana_integrity_verify\n\nVerify indexer data integrity (Solana only).\n\nawait client.callTool({ name: 'solana_integrity_verify', arguments: {\n  asset: 'HHCVWcqs...'\n}});\n// Returns: { status: 'valid' | 'syncing' | 'corrupted' }\n\nWrite Operations (Wallet required)\nWallet Store Setup (Master Password)\n// 1. Initialize store (one-time) - SAVE THE MASTER PASSWORD!\nawait client.callTool({ name: 'wallet_store_init', arguments: {\n  password: 'MySecureMaster123!'\n}});\n\n// 2. Create wallets (stored in encrypted store)\nawait client.callTool({ name: 'wallet_create', arguments: {\n  name: 'my-solana',\n  chainType: 'solana'  // or 'evm'\n}});\n\n// 3. On new session, unlock store with master password\nawait client.callTool({ name: 'wallet_store_unlock', arguments: {\n  password: 'MySecureMaster123!'\n}});\n\n// 4. Now write operations work (all wallets unlocked)\n\nfeedback_give\n\nSubmit feedback for an agent.\n\nawait client.callTool({ name: 'feedback_give', arguments: {\n  id: 'sol:HHCVWcqs...',\n  value: 85,              // Score 0-100\n  tag1: 'uptime',         // Category tag\n  tag2: 'day',            // Period tag\n  comment: 'Great agent', // Optional\n  skipSend: false         // true = dry-run (returns unsigned tx)\n}});\n\nagent_register\n\nRegister new agent on-chain. See \"Approximate Costs\" section for funding.\n\nawait client.callTool({ name: 'agent_register', arguments: {\n  chain: 'eth',  // or 'sol', 'base', etc.\n  name: 'My Agent',\n  description: 'Does cool stuff',\n  tokenUri: 'https://example.com/agent.json',  // Optional: your hosted metadata\n  // If no tokenUri: SDK uploads to IPFS automatically\n}});\n\nApproximate Costs\nSolana (Devnet/Mainnet)\nOperation\tCost\tNotes\nagent_register\t~0.01 SOL\tIncludes ATOM stats account\nfeedback_give\t~0.0005 SOL\tEvent-based, low rent\nfeedback_response_append\t~0.0005 SOL\tEvent-based\nagent_uri_update\t~0.00005 SOL\tTx fee only\nEVM - L2 Chains (Base, Arbitrum, Optimism)\n\nRecommended for lowest costs.\n\nOperation\tGas\tTypical Cost\nagent_register\t150-200k\t$0.01-0.50\nfeedback_give\t100k\t$0.01-0.30\nfeedback_response_append\t60k\t$0.01-0.20\nagent_uri_update\t50k\t$0.01-0.15\nEVM - Ethereum Mainnet\n\nHigh variability - gas spikes during congestion.\n\nOperation\tGas\tCost (25-100 gwei)\nagent_register\t150-200k\t$10-60\nfeedback_give\t100k\t$7-30\nfeedback_response_append\t60k\t$4-18\nagent_uri_update\t50k\t$3-15\n\nTip: Use L2 chains (Base, Arbitrum) for 10-100x lower costs than Ethereum mainnet.\n\nDry-Run Mode (skipSend)\n\nTest write operations without funds or broadcasting:\n\n// Returns unsigned transaction, no funds needed\nconst preview = await client.callTool({ name: 'feedback_give', arguments: {\n  id: 'sol:HHCVWcqs...',\n  value: 85,\n  tag1: 'uptime',\n  skipSend: true  // Dry-run\n}});\n// preview.content[0].text contains: { unsigned: true, transaction: \"base64...\", message: \"...\" }\n\n\nSupported on: feedback_give, agent_register, agent_transfer, agent_uri_update, feedback_revoke, solana_validation_request, solana_validation_respond\n\nNetwork Configuration\n// Check current network\nawait client.callTool({ name: 'network_get', arguments: {} });\n\n// Switch to mainnet\nawait client.callTool({ name: 'network_set', arguments: { mode: 'mainnet' } });\n\n// Switch to testnet (default)\nawait client.callTool({ name: 'network_set', arguments: { mode: 'testnet' } });\n\nNetwork\tSolana\tEthereum\tBase\ntestnet\tdevnet\tSepolia (11155111)\tBase Sepolia (84532)\nmainnet\tmainnet-beta\tMainnet (1)\tBase (8453)\nx402 Protocol\n\nPayment-linked reputation.\n\n// 1. Build identity for 402 response\nconst identity = await client.callTool({ name: 'x402_identity_build', arguments: {\n  agentId: 'sol:HHCVWcqs...'\n}});\n\n// 2. Parse payment proof from response header\nconst proof = await client.callTool({ name: 'x402_proof_parse', arguments: {\n  paymentResponse: 'base64-encoded-header...'\n}});\n\n// 3. Submit feedback with proof\nawait client.callTool({ name: 'x402_feedback_submit', arguments: {\n  agentId: 'sol:HHCVWcqs...',\n  value: 90,\n  tag1: 'x402-resource-delivered',\n  tag2: 'exact-svm',\n  proofOfPayment: proof.proofOfPayment\n}});\n\nError Codes\nError\tCause\tSolution\nSTORE_LOCKED\tWrite op without unlock\tCall wallet_store_unlock with master password\nSTORE_NOT_INITIALIZED\tNo wallet store\tCall wallet_store_init first\nINVALID_PASSWORD\tWrong master password\tCheck password (cannot recover if lost)\nAGENT_NOT_FOUND\tInvalid ID\tVerify global ID format\nINSUFFICIENT_BALANCE\tWallet empty\tFund wallet address\nPROVIDER_NOT_AVAILABLE\tChain not initialized\tCheck network_get\nOASF Standards\n// List valid skill slugs\nawait client.callTool({ name: 'oasf_list_skills', arguments: {} });\n\n// List valid domain slugs\nawait client.callTool({ name: 'oasf_list_domains', arguments: {} });\n\n// List feedback tags\nawait client.callTool({ name: 'oasf_list_tags', arguments: {} });\n\nAll Tools Reference\nAgent Operations\nagent_get - Get agent by ID\nagent_exists - Check existence\nagent_search - Search with filters\nagent_list_by_owner - List by owner address\nagent_register - Register new agent (write)\nagent_transfer - Transfer ownership (write)\nagent_uri_update - Update metadata URI (write)\nagent_metadata_set - Set on-chain metadata (Solana, write)\nFeedback Operations\nfeedback_give - Submit feedback (write)\nfeedback_read - Read single feedback\nfeedback_list - List feedbacks\nfeedback_revoke - Revoke feedback (write)\nfeedback_response_append - Respond to feedback (write)\nReputation Operations\nreputation_get - Get summary\nleaderboard_get - Top agents\nCollection Operations\ncollection_get - Get collection details\ncollection_list - List collections\ncollection_agents - List agents in collection\ncollection_base_get - Get base registry\ncollection_create - Create collection (Solana, write)\ncollection_uri_update - Update collection URI (Solana, write)\nWallet Store (Master Password)\nwallet_store_init - Initialize store with master password\nwallet_store_unlock - Unlock all wallets with master password\nwallet_store_lock - Lock store (secure wipe)\nwallet_store_status - Get store status\nwallet_store_change_password - Change master password\nwallet_store_migrate - Migrate legacy wallets\nWallet Operations\nwallet_list - List wallets in store\nwallet_info - Wallet details\nwallet_create - Create new wallet (requires unlocked store)\nwallet_import - Import private key (requires unlocked store)\nwallet_delete - Delete wallet (requires unlocked store)\nwallet_security - Configure auto-lock timeout\nCache Operations\ncache_search - Fast FTS5 search\ncache_refresh - Force refresh\ncache_stats - Cache statistics\ncache_sync_status - Sync status\nSolana-Specific\nsolana_atom_stats_get - ATOM metrics\nsolana_atom_stats_initialize - Init ATOM account (write)\nsolana_trust_tier_get - Trust tier\nsolana_enriched_summary_get - Combined metrics\nsolana_agent_wallet_get - Get operational wallet\nsolana_sign - Sign with agent wallet\nsolana_verify - Verify signature\nsolana_validation_request - Request validation (write)\nsolana_validation_respond - Respond to validation (write)\nsolana_validation_read - Read validation\nsolana_validation_wait - Wait for response\nsolana_validation_pending_get - Pending validations\nsolana_integrity_verify - O(1) integrity check\nsolana_integrity_verify_deep - Deep verification\nEVM-Specific\nevm_agent_wallet_set - Set operational wallet (write)\nevm_agent_wallet_unset - Remove operational wallet (write)\nx402 Protocol\nx402_identity_build - Build agent identity\nx402_proof_parse - Parse payment proof\nx402_feedback_build - Build feedback file\nx402_feedback_submit - Submit with proof (write)\nConfiguration & Health\nconfig_get - Current config\nconfig_set - Update config\nconfig_reset - Reset to defaults\nnetwork_get - Network status\nnetwork_set - Switch network\nhealth_check - System health (server, chains, wallet store, cache)\nfaucet_info - Testnet faucet URLs and funding info\nOASF Standards\noasf_list_skills - Valid skill slugs\noasf_list_domains - Valid domain slugs\noasf_list_tags - Feedback tags\noasf_validate_skill - Validate skill\noasf_validate_domain - Validate domain\noasf_validate_tag - Validate tag\nCrawler\ncrawler_fetch_mcp - Fetch MCP capabilities\ncrawler_fetch_a2a - Fetch A2A agent card\ncrawler_is_alive - Health check\nIPFS (Configured by default)\nipfs_configure - Override default IPFS/Pinata settings (optional)\nipfs_add_json - Store JSON (max 1MB)\nipfs_add_registration - Store registration file\nipfs_get_registration - Retrieve registration\n\nNote: IPFS is pre-configured with a shared Pinata account. No setup required for basic usage.\n\nClaude Code Integration\n\nThis section is for Claude Code / AI assistants using 8004-MCP tools.\n\nIntent Mapping\nUser Says\tTool\tNotes\n\"find agents\", \"search for X\"\tagent_search or cache_search\tUse cache_search for partial names\n\"agent details\", \"info on X\"\tagent_get\tPass global ID\n\"is X reliable?\", \"reputation\"\treputation_get\tReturns score + trust tier\n\"top agents\", \"best agents\"\tleaderboard_get\tChain optional\n\"reviews for X\", \"feedback\"\tfeedback_list\t\n\"my wallets\"\twallet_list\t\n\"switch to mainnet\"\tnetwork_set\tmode: 'mainnet'\n\"OASF skills/domains/tags\"\toasf_list_*\t\nDO NOT use web search for:\nAgent registry queries (use 8004 tools)\nReputation/feedback lookups\nOASF standards\nx402 protocol\nSearch Strategy\nExact name known → agent_search with nameQuery\nPartial name → cache_search (fuzzy FTS5)\nBy capabilities → agent_search with hasMcp, hasA2a, mcpTools, etc.\nBy owner → agent_search with owner\nWrite Operation Flow\nCheck wallet_store_status - is store initialized and unlocked?\nIf not initialized: wallet_store_init (save master password!)\nIf locked: wallet_store_unlock with master password\nIf no wallet: wallet_create for needed chain\nExecute write operation\nReport transaction hash on success"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/MonteCrypto999/8004-mcp",
    "publisherUrl": "https://clawhub.ai/MonteCrypto999/8004-mcp",
    "owner": "MonteCrypto999",
    "version": "0.2.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/8004-mcp",
    "downloadUrl": "https://openagent3.xyz/downloads/8004-mcp",
    "agentUrl": "https://openagent3.xyz/skills/8004-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/8004-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/8004-mcp/agent.md"
  }
}