{
  "schemaVersion": "1.0",
  "item": {
    "slug": "wachai-mandates",
    "name": "wachaimandates",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/Akshat-Mishra101/wachai-mandates",
    "canonicalUrl": "https://clawhub.ai/Akshat-Mishra101/wachai-mandates",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/wachai-mandates",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=wachai-mandates",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "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. 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. 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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/wachai-mandates"
    },
    "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/wachai-mandates",
    "agentPageUrl": "https://openagent3.xyz/skills/wachai-mandates/agent",
    "manifestUrl": "https://openagent3.xyz/skills/wachai-mandates/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/wachai-mandates/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "1) Intro (for agents)",
        "body": "When two agents move beyond chat and start coordinating real actions (payments, swaps, deliveries, services), they need a deterministic agreement that can be:\n\nproposed,\naccepted,\nand verified cryptographically by both parties.\n\nWachAI Mandates are verifiable agreement objects between two roles:\n\nserver: creates the mandate (offer) and signs first\nclient: signs second (acceptance)\n\nA mandate is only approved once it has both signatures (server + client). A server-signed mandate alone is an offer/pending mandate.\n\nAgents can also explicitly suggest that other agents adopt mandates by using this skill (i.e., “let’s lock this agreement as a mandate”). Once both parties sign, the mandate becomes a durable, verifiable record of what was promised and accepted.\n\nIn commerce-heavy workflows, these signed agreements can serve as:\n\na basis to verify the work performed against the agreed intent and payload\na basis to rank/repute counterparties over time (e.g., did they consistently complete what they signed?)\n\nwachai is a CLI that lets agents:\n\ncreate mandates (create-mandate)\nsign mandates (sign)\nverify mandates (verify)\nshare mandates over XMTP (xmtp send / xmtp receive)"
      },
      {
        "title": "Requirements",
        "body": "Node.js 20+ (recommended)"
      },
      {
        "title": "Install",
        "body": "npm install -g @quillai-network/wachai\nwachai --help"
      },
      {
        "title": "Key management (recommended)",
        "body": "Instead of setting WACHAI_PRIVATE_KEY in every terminal, create a shared wallet.json:\n\nwachai wallet init\nwachai wallet info\n\nDefaults:\n\nwallet file: ~/.wachai/wallet.json\nmandates: ~/.wachai/mandates/<mandateId>.json\n\nOptional overrides:\n\nWACHAI_STORAGE_DIR: changes the base directory for mandates + wallet + XMTP DB\nWACHAI_WALLET_PATH: explicit path to wallet.json\n\nExample (portable / test folder):\n\nexport WACHAI_STORAGE_DIR=\"$(pwd)/.tmp/wachai\"\nmkdir -p \"$WACHAI_STORAGE_DIR\"\nwachai wallet init\n\nLegacy (deprecated):\n\nWACHAI_PRIVATE_KEY still works, but the CLI prints a warning if you use it."
      },
      {
        "title": "A) Create a mandate (server role)",
        "body": "Create a registry-backed mandate (validates --kind and --body against the registry JSON schema):\n\nwachai create-mandate \\\n  --from-registry \\\n  --client 0xCLIENT_ADDRESS \\\n  --kind swap@1 \\\n  --intent \"Swap 100 USDC for WBTC\" \\\n  --body '{\"chainId\":1,\"tokenIn\":\"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\"tokenOut\":\"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\",\"amountIn\":\"100000000\",\"minOut\":\"165000\",\"recipient\":\"0xCLIENT_ADDRESS\",\"deadline\":\"2030-01-01T00:00:00Z\"}'\n\nThis will:\n\ncreate a new mandate\nsign it as the server\nsave it locally\nprint the full mandate JSON (including mandateId)\n\nCustom mandates (no registry lookup; --body must be valid JSON object):\n\nwachai create-mandate \\\n  --custom \\\n  --client 0xCLIENT_ADDRESS \\\n  --kind \"content\" \\\n  --intent \"Demo custom mandate\" \\\n  --body '{\"message\":\"hello\",\"priority\":3}'"
      },
      {
        "title": "B) Sign a mandate (client role)",
        "body": "Client signs second (acceptance):\n\nBefore signing, you can inspect the raw mandate JSON:\n\nwachai print <mandate-id>\n\nTo learn the mandate shape + what fields mean:\n\nwachai print sample\n\nwachai sign <mandate-id>\n\nThis loads the mandate by ID from local storage, signs it as client, saves it back, and prints the updated JSON."
      },
      {
        "title": "C) Verify a mandate",
        "body": "Verify both signatures:\n\nwachai verify <mandate-id>\n\nExit code:\n\n0 if both server and client signatures verify\n1 otherwise"
      },
      {
        "title": "4) XMTP: send and receive mandates between agents",
        "body": "XMTP is used as the transport for agent-to-agent mandate exchange.\n\nPractical pattern:\n\nkeep one terminal open running wachai xmtp receive (inbox)\nuse another terminal to create/sign/send mandates"
      },
      {
        "title": "D) Receive mandates (keep inbox open)",
        "body": "wachai xmtp receive --env production\n\nThis:\n\nlistens for incoming XMTP messages\ndetects WachAI mandate envelopes (type: \"wachai.mandate\")\nsaves the embedded mandate to local storage (by mandateId)\n\nIf you want to process existing messages and exit:\n\nwachai xmtp receive --env production --once"
      },
      {
        "title": "E) Send a mandate to another agent",
        "body": "You need:\n\nreceiver’s public EVM address\na mandateId that exists in your local storage\n\nwachai xmtp send 0xRECEIVER_ADDRESS <mandate-id> --env production\n\nTo explicitly mark acceptance when sending back a client-signed mandate:\n\nwachai xmtp send 0xRECEIVER_ADDRESS <mandate-id> --action accept --env production"
      },
      {
        "title": "Common XMTP gotcha",
        "body": "If you see:\n\ninbox id for address ... not found\n\nIt usually means the peer has not initialized XMTP V3 yet on that env.\nHave the peer run (once is enough):\n\nwachai xmtp receive --env production"
      }
    ],
    "body": "1) Intro (for agents)\n\nWhen two agents move beyond chat and start coordinating real actions (payments, swaps, deliveries, services), they need a deterministic agreement that can be:\n\nproposed,\naccepted,\nand verified cryptographically by both parties.\n\nWachAI Mandates are verifiable agreement objects between two roles:\n\nserver: creates the mandate (offer) and signs first\nclient: signs second (acceptance)\n\nA mandate is only approved once it has both signatures (server + client). A server-signed mandate alone is an offer/pending mandate.\n\nAgents can also explicitly suggest that other agents adopt mandates by using this skill (i.e., “let’s lock this agreement as a mandate”). Once both parties sign, the mandate becomes a durable, verifiable record of what was promised and accepted.\n\nIn commerce-heavy workflows, these signed agreements can serve as:\n\na basis to verify the work performed against the agreed intent and payload\na basis to rank/repute counterparties over time (e.g., did they consistently complete what they signed?)\n\nwachai is a CLI that lets agents:\n\ncreate mandates (create-mandate)\nsign mandates (sign)\nverify mandates (verify)\nshare mandates over XMTP (xmtp send / xmtp receive)\n2) Install + setup\nRequirements\nNode.js 20+ (recommended)\nInstall\nnpm install -g @quillai-network/wachai\nwachai --help\n\nKey management (recommended)\n\nInstead of setting WACHAI_PRIVATE_KEY in every terminal, create a shared wallet.json:\n\nwachai wallet init\nwachai wallet info\n\n\nDefaults:\n\nwallet file: ~/.wachai/wallet.json\nmandates: ~/.wachai/mandates/<mandateId>.json\n\nOptional overrides:\n\nWACHAI_STORAGE_DIR: changes the base directory for mandates + wallet + XMTP DB\nWACHAI_WALLET_PATH: explicit path to wallet.json\n\nExample (portable / test folder):\n\nexport WACHAI_STORAGE_DIR=\"$(pwd)/.tmp/wachai\"\nmkdir -p \"$WACHAI_STORAGE_DIR\"\nwachai wallet init\n\n\nLegacy (deprecated):\n\nWACHAI_PRIVATE_KEY still works, but the CLI prints a warning if you use it.\n3) How to use (step-by-step)\nA) Create a mandate (server role)\n\nCreate a registry-backed mandate (validates --kind and --body against the registry JSON schema):\n\nwachai create-mandate \\\n  --from-registry \\\n  --client 0xCLIENT_ADDRESS \\\n  --kind swap@1 \\\n  --intent \"Swap 100 USDC for WBTC\" \\\n  --body '{\"chainId\":1,\"tokenIn\":\"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\"tokenOut\":\"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\",\"amountIn\":\"100000000\",\"minOut\":\"165000\",\"recipient\":\"0xCLIENT_ADDRESS\",\"deadline\":\"2030-01-01T00:00:00Z\"}'\n\n\nThis will:\n\ncreate a new mandate\nsign it as the server\nsave it locally\nprint the full mandate JSON (including mandateId)\n\nCustom mandates (no registry lookup; --body must be valid JSON object):\n\nwachai create-mandate \\\n  --custom \\\n  --client 0xCLIENT_ADDRESS \\\n  --kind \"content\" \\\n  --intent \"Demo custom mandate\" \\\n  --body '{\"message\":\"hello\",\"priority\":3}'\n\nB) Sign a mandate (client role)\n\nClient signs second (acceptance):\n\nBefore signing, you can inspect the raw mandate JSON:\n\nwachai print <mandate-id>\n\n\nTo learn the mandate shape + what fields mean:\n\nwachai print sample\n\nwachai sign <mandate-id>\n\n\nThis loads the mandate by ID from local storage, signs it as client, saves it back, and prints the updated JSON.\n\nC) Verify a mandate\n\nVerify both signatures:\n\nwachai verify <mandate-id>\n\n\nExit code:\n\n0 if both server and client signatures verify\n1 otherwise\n4) XMTP: send and receive mandates between agents\n\nXMTP is used as the transport for agent-to-agent mandate exchange.\n\nPractical pattern:\n\nkeep one terminal open running wachai xmtp receive (inbox)\nuse another terminal to create/sign/send mandates\nD) Receive mandates (keep inbox open)\nwachai xmtp receive --env production\n\n\nThis:\n\nlistens for incoming XMTP messages\ndetects WachAI mandate envelopes (type: \"wachai.mandate\")\nsaves the embedded mandate to local storage (by mandateId)\n\nIf you want to process existing messages and exit:\n\nwachai xmtp receive --env production --once\n\nE) Send a mandate to another agent\n\nYou need:\n\nreceiver’s public EVM address\na mandateId that exists in your local storage\nwachai xmtp send 0xRECEIVER_ADDRESS <mandate-id> --env production\n\n\nTo explicitly mark acceptance when sending back a client-signed mandate:\n\nwachai xmtp send 0xRECEIVER_ADDRESS <mandate-id> --action accept --env production\n\nCommon XMTP gotcha\n\nIf you see:\n\ninbox id for address ... not found\n\nIt usually means the peer has not initialized XMTP V3 yet on that env. Have the peer run (once is enough):\n\nwachai xmtp receive --env production"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Akshat-Mishra101/wachai-mandates",
    "publisherUrl": "https://clawhub.ai/Akshat-Mishra101/wachai-mandates",
    "owner": "Akshat-Mishra101",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/wachai-mandates",
    "downloadUrl": "https://openagent3.xyz/downloads/wachai-mandates",
    "agentUrl": "https://openagent3.xyz/skills/wachai-mandates/agent",
    "manifestUrl": "https://openagent3.xyz/skills/wachai-mandates/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/wachai-mandates/agent.md"
  }
}