{
  "schemaVersion": "1.0",
  "item": {
    "slug": "open-wallet",
    "name": "Open Wallet",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/stephancill/open-wallet",
    "canonicalUrl": "https://clawhub.ai/stephancill/open-wallet",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/open-wallet",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=open-wallet",
    "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/open-wallet"
    },
    "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/open-wallet",
    "agentPageUrl": "https://openagent3.xyz/skills/open-wallet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/open-wallet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/open-wallet/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": "Open Wallet (tx.steer.fun)",
        "body": "Generate a link the user opens in their browser. The page shows the request, prompts them to connect their wallet, switches to the requested chainId, then executes the JSON-RPC request."
      },
      {
        "title": "Build The Link",
        "body": "Base URL:\n\nhttps://tx.steer.fun/\n\nQuery params:\n\nmethod: JSON-RPC method name.\nchainId: integer chain id to execute on (the app will switch chains before execution).\nparams: URL-encoded JSON (either an object or an array).\nredirect_url (optional): where to redirect after success/failure with the result.\n\nredirect_url modes:\n\nDefault: the app appends resultType/result (or error) query params to redirect_url.\nTemplate mode: if redirect_url contains {{...}}, the app replaces placeholders instead of appending query params.\n\nNotes:\n\nIf params is a JSON array, it is treated as the exact JSON-RPC params array.\nIf params is a JSON object, the app will map it to common method shapes (e.g. fill from from the connected wallet when possible).\nAvoid double-encoding: params should be encoded exactly once (e.g. encodeURIComponent(JSON.stringify(params))). If you see %2522 in the URL, it was encoded twice."
      },
      {
        "title": "Sign A Message (personal_sign)",
        "body": "Use a JSON object:\n\nhttps://tx.steer.fun/?method=personal_sign&chainId=1&params=%7B%22message%22%3A%22hello%22%7D\n\nExpected result: signature string."
      },
      {
        "title": "Send A Transaction (eth_sendTransaction)",
        "body": "Use a JSON object (the app will set from from the connected wallet if omitted):\n\nhttps://tx.steer.fun/?method=eth_sendTransaction&chainId=1&params=%7B%22to%22%3A%220x4c5Ce72478D6Ce160cb31Dd25fe6a15DC269592D%22%2C%22data%22%3A%220xd09de08a%22%7D\n\nExpected result: tx hash."
      },
      {
        "title": "Typed Data Sign (eth_signTypedData_v4)",
        "body": "Provide { address, typedData }:\n\nhttps://tx.steer.fun/?method=eth_signTypedData_v4&chainId=1&params=%7B%22address%22%3A%220xYourAddress%22%2C%22typedData%22%3A%7B%22types%22%3A%7B%7D%2C%22domain%22%3A%7B%7D%2C%22primaryType%22%3A%22%22%2C%22message%22%3A%7B%7D%7D%7D\n\nExpected result: signature string."
      },
      {
        "title": "Batch Calls (wallet_sendCalls)",
        "body": "Provide { calls: [{ to, data }, ...] } (and optionally from):\n\nhttps://tx.steer.fun/?method=wallet_sendCalls&chainId=1&params=%7B%22calls%22%3A%5B%7B%22to%22%3A%220x0000000000000000000000000000000000000000%22%2C%22data%22%3A%220x%22%7D%5D%7D\n\nExpected result: wallet-dependent (often an id or tx hash)."
      },
      {
        "title": "Option A: No redirect_url (manual copy)",
        "body": "If you omit redirect_url, the page shows a copyable response (or error) after execution.\n\nIn your message to the user, ask them to paste back:\n\nthe tx hash / signature string, or\nthe full JSON response (if it returns an object)."
      },
      {
        "title": "Option B: redirect_url (automatic return)",
        "body": "If you include redirect_url, the app redirects after success or failure.\n\nIt appends query params (default mode):\n\nOn success:\n\nresultType=string and result=<value> OR\nresultType=json and result=<JSON.stringify(value)>\n\n\nOn failure:\n\nerror=<message>\n\nTemplate mode (no bridge, good for messaging apps):\n\nIf redirect_url contains {{...}}, placeholders are replaced and no query params are appended.\nPlaceholders:\n\n{{result}}: URL-encoded result string (or URL-encoded JSON.stringify(result))\n{{result_raw}}: unencoded result string (or JSON.stringify(result))\n{{resultType}}: string or json\n{{error}}: URL-encoded error message\n{{error_raw}}: unencoded error message\n\nImplementation note for agents:\n\nConsider generating a “compose draft” deep link into your chat with the user and using that as redirect_url so, after approval, the user lands in a pre-filled message back to you containing the result.\n\nExample (Telegram share):\n\nNote: Telegram's share endpoint works best when you include both url= and text=. If you omit url=, it may redirect to telegram.org instead of showing the share UI.\n\nhttps://tx.steer.fun/?method=personal_sign&chainId=1&params=%7B%22message%22%3A%22hello%22%7D&redirect_url=https%3A%2F%2Ft.me%2Fshare%2Furl%3Furl%3Dhttps%253A%252F%252Ftx.steer.fun%252F%26text%3DSignature%253A%2520%7B%7Bresult%7D%7D"
      },
      {
        "title": "Safety Checks",
        "body": "Always show the user what the request does in plain language (what contract, what function, what chain, what value) before asking them to open the link.\nPrefer least-privilege requests; avoid requesting permissions you do not need."
      }
    ],
    "body": "Open Wallet (tx.steer.fun)\n\nGenerate a link the user opens in their browser. The page shows the request, prompts them to connect their wallet, switches to the requested chainId, then executes the JSON-RPC request.\n\nBuild The Link\n\nBase URL:\n\nhttps://tx.steer.fun/\n\nQuery params:\n\nmethod: JSON-RPC method name.\nchainId: integer chain id to execute on (the app will switch chains before execution).\nparams: URL-encoded JSON (either an object or an array).\nredirect_url (optional): where to redirect after success/failure with the result.\n\nredirect_url modes:\n\nDefault: the app appends resultType/result (or error) query params to redirect_url.\nTemplate mode: if redirect_url contains {{...}}, the app replaces placeholders instead of appending query params.\n\nNotes:\n\nIf params is a JSON array, it is treated as the exact JSON-RPC params array.\nIf params is a JSON object, the app will map it to common method shapes (e.g. fill from from the connected wallet when possible).\nAvoid double-encoding: params should be encoded exactly once (e.g. encodeURIComponent(JSON.stringify(params))). If you see %2522 in the URL, it was encoded twice.\nCommon Flows\nSign A Message (personal_sign)\n\nUse a JSON object:\n\nhttps://tx.steer.fun/?method=personal_sign&chainId=1&params=%7B%22message%22%3A%22hello%22%7D\n\n\nExpected result: signature string.\n\nSend A Transaction (eth_sendTransaction)\n\nUse a JSON object (the app will set from from the connected wallet if omitted):\n\nhttps://tx.steer.fun/?method=eth_sendTransaction&chainId=1&params=%7B%22to%22%3A%220x4c5Ce72478D6Ce160cb31Dd25fe6a15DC269592D%22%2C%22data%22%3A%220xd09de08a%22%7D\n\n\nExpected result: tx hash.\n\nTyped Data Sign (eth_signTypedData_v4)\n\nProvide { address, typedData }:\n\nhttps://tx.steer.fun/?method=eth_signTypedData_v4&chainId=1&params=%7B%22address%22%3A%220xYourAddress%22%2C%22typedData%22%3A%7B%22types%22%3A%7B%7D%2C%22domain%22%3A%7B%7D%2C%22primaryType%22%3A%22%22%2C%22message%22%3A%7B%7D%7D%7D\n\n\nExpected result: signature string.\n\nBatch Calls (wallet_sendCalls)\n\nProvide { calls: [{ to, data }, ...] } (and optionally from):\n\nhttps://tx.steer.fun/?method=wallet_sendCalls&chainId=1&params=%7B%22calls%22%3A%5B%7B%22to%22%3A%220x0000000000000000000000000000000000000000%22%2C%22data%22%3A%220x%22%7D%5D%7D\n\n\nExpected result: wallet-dependent (often an id or tx hash).\n\nGetting The Result Back\nOption A: No redirect_url (manual copy)\n\nIf you omit redirect_url, the page shows a copyable response (or error) after execution.\n\nIn your message to the user, ask them to paste back:\n\nthe tx hash / signature string, or\nthe full JSON response (if it returns an object).\nOption B: redirect_url (automatic return)\n\nIf you include redirect_url, the app redirects after success or failure.\n\nIt appends query params (default mode):\n\nOn success:\nresultType=string and result=<value> OR\nresultType=json and result=<JSON.stringify(value)>\nOn failure:\nerror=<message>\n\nTemplate mode (no bridge, good for messaging apps):\n\nIf redirect_url contains {{...}}, placeholders are replaced and no query params are appended.\nPlaceholders:\n{{result}}: URL-encoded result string (or URL-encoded JSON.stringify(result))\n{{result_raw}}: unencoded result string (or JSON.stringify(result))\n{{resultType}}: string or json\n{{error}}: URL-encoded error message\n{{error_raw}}: unencoded error message\n\nImplementation note for agents:\n\nConsider generating a “compose draft” deep link into your chat with the user and using that as redirect_url so, after approval, the user lands in a pre-filled message back to you containing the result.\n\nExample (Telegram share):\n\nNote: Telegram's share endpoint works best when you include both url= and text=. If you omit url=, it may redirect to telegram.org instead of showing the share UI.\n\nhttps://tx.steer.fun/?method=personal_sign&chainId=1&params=%7B%22message%22%3A%22hello%22%7D&redirect_url=https%3A%2F%2Ft.me%2Fshare%2Furl%3Furl%3Dhttps%253A%252F%252Ftx.steer.fun%252F%26text%3DSignature%253A%2520%7B%7Bresult%7D%7D\n\nSafety Checks\nAlways show the user what the request does in plain language (what contract, what function, what chain, what value) before asking them to open the link.\nPrefer least-privilege requests; avoid requesting permissions you do not need."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/stephancill/open-wallet",
    "publisherUrl": "https://clawhub.ai/stephancill/open-wallet",
    "owner": "stephancill",
    "version": "1.0.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/open-wallet",
    "downloadUrl": "https://openagent3.xyz/downloads/open-wallet",
    "agentUrl": "https://openagent3.xyz/skills/open-wallet/agent",
    "manifestUrl": "https://openagent3.xyz/skills/open-wallet/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/open-wallet/agent.md"
  }
}