{
  "schemaVersion": "1.0",
  "item": {
    "slug": "lifi-skill",
    "name": "LI.FI Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/fabriziogianni7/lifi-skill",
    "canonicalUrl": "https://clawhub.ai/fabriziogianni7/lifi-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/lifi-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=lifi-skill",
    "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/lifi-skill"
    },
    "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/lifi-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/lifi-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lifi-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lifi-skill/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": "CRITICAL RULES (read first)",
        "body": "ONLY use curl to call the LI.FI API. NEVER use web_search, web_fetch, or any other tool.\nONLY use the endpoints documented below. Do NOT guess or invent URLs.\nBase URL is https://li.quest/v1/. No other base URL.\nALWAYS include auth header: \"x-lifi-api-key: $LIFI_API_KEY\" (double quotes, dollar sign — shell expands it).\nALWAYS tell the user the quote is provided by LI.FI.\nDefault slippage: 10% (0.10). If the user has a custom slippage in their strategy (via defi_get_strategy), use that instead. The agent can also adjust dynamically per-transaction if the user requests it.\nDefault deadline: 10 minutes.\nALWAYS add &skipSimulation=true to all /v1/quote requests. Our EIP-7702 delegated wallets have on-chain code that breaks LI.FI's simulation.\nNEVER construct ERC-20 approve calldata (hex) yourself. ALWAYS use the defi_approve or defi_approve_and_send tools.\nALL swaps, bridges, and DeFi token operations MUST go through LI.FI. No exceptions. No manual DEX interactions."
      },
      {
        "title": "Transaction Links",
        "body": "After every transaction broadcast, always provide a clickable block explorer link:\n\nEVM: [View tx](https://basescan.org/tx/0xHASH) — use the correct explorer (etherscan.io, basescan.org, arbiscan.io, polygonscan.com, optimistic.etherscan.io)\nSui: [View tx](https://suiscan.xyz/txblock/{txDigest})"
      },
      {
        "title": "Sui",
        "body": "Sui chain ID: 9270000000000000. Use this for fromChain and toChain in LI.FI quote requests when the user wants Sui (e.g. fromChain=9270000000000000&toChain=9270000000000000 for same-chain Sui swap).\nLI.FI supports Sui for same-chain swaps and bridging to/from EVM and Solana.\nFor Sui quotes, use the user's suiAddress from defi_get_wallet as fromAddress.\nExecute Sui quotes with defi_send_sui_transaction — pass the transaction bytes (hex) from the LI.FI quote. Do not use defi_send_transaction or defi_approve_and_send for Sui.\nSui does not use ERC-20 approvals; there is no approval step for Sui swaps."
      },
      {
        "title": "GET /v1/chains — List supported chains",
        "body": "curl -s --request GET \\\n  --url https://li.quest/v1/chains \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\nUse for: listing chains, testing connectivity. If user asks for a test, use this."
      },
      {
        "title": "GET /v1/tokens — List tokens on chains",
        "body": "curl -s --request GET \\\n  --url 'https://li.quest/v1/tokens?chains=8453' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\nParams: chains (comma-separated chain IDs)."
      },
      {
        "title": "GET /v1/quote — Get swap/bridge quote with tx data",
        "body": "curl -s --request GET \\\n  --url 'https://li.quest/v1/quote?fromChain=8453&toChain=8453&fromToken=ETH&toToken=USDC&fromAddress=0xYOUR_ADDRESS&fromAmount=100000000000000&slippage=0.10&skipSimulation=true' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\nParams: fromChain, toChain, fromToken, toToken, fromAddress, toAddress (optional), fromAmount (in wei), slippage (decimal, e.g. 0.10 = 10%), skipSimulation=true (ALWAYS include).\n\nReturns: estimate (with toAmount, toAmountMin, approvalAddress) and transactionRequest (ready for wallet submission).\n\nAfter presenting a quote to the user, always include the estimated output amount, fees, and slippage. Get the user's wallet address with defi_get_wallet and use it as fromAddress in the quote.\n\nExecuting the quote\n\nCheck if ERC-20 approval is needed: If the quote's transactionRequest.value is \"0x0\" AND estimate.approvalAddress exists, the swap/bridge is using an ERC-20 token that needs approval first.\n\nIf approval IS needed: Use defi_approve_and_send with:\n\ntoken: the action.fromToken.address from the quote\nspender: the estimate.approvalAddress from the quote\napproveAmount: the action.fromAmount from the quote (or omit for unlimited)\nto, value, data, gasLimit: from the quote's transactionRequest\n\n\n\nIf approval is NOT needed (native ETH swap, value > 0x0): Use defi_send_transaction with the quote's transactionRequest fields: to, value, data, chainId, and gasLimit (ALWAYS pass gasLimit from the quote).\n\nNEVER construct approve calldata hex yourself. The defi_approve and defi_approve_and_send tools handle ABI encoding correctly.\n\nSui: For quotes where fromChain or toChain is Sui, use defi_send_sui_transaction with the quote's transaction bytes. No approval step."
      },
      {
        "title": "POST /v1/advanced/routes — Get multiple route options",
        "body": "curl -s --request POST \\\n  --url https://li.quest/v1/advanced/routes \\\n  --header 'Content-Type: application/json' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\" \\\n  --data '{\n  \"fromChainId\": 8453,\n  \"fromAmount\": \"100000000000000\",\n  \"fromTokenAddress\": \"0x0000000000000000000000000000000000000000\",\n  \"toChainId\": 8453,\n  \"toTokenAddress\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n  \"options\": {\n    \"slippage\": 0.10,\n    \"order\": \"RECOMMENDED\"\n  }\n}'"
      },
      {
        "title": "POST /v1/quote/contractCalls — Multi-step contract calls (BETA)",
        "body": "curl -s --request POST \\\n  --url https://li.quest/v1/quote/contractCalls \\\n  --header 'Content-Type: application/json' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\" \\\n  --data '{\n  \"fromChain\": 10,\n  \"fromToken\": \"0x4200000000000000000000000000000000000042\",\n  \"fromAddress\": \"0xYOUR_ADDRESS\",\n  \"toChain\": 1,\n  \"toToken\": \"ETH\",\n  \"toAmount\": \"100000000000001\",\n  \"contractCalls\": []\n}'"
      },
      {
        "title": "GET /v1/status — Check transfer status",
        "body": "curl -s --request GET \\\n  --url 'https://li.quest/v1/status?txHash=0xYOUR_TX_HASH&fromChain=8453' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\nPass fromChain to speed up the lookup."
      },
      {
        "title": "GET /v1/tools — List available bridges and exchanges",
        "body": "curl -s --request GET \\\n  --url 'https://li.quest/v1/tools?chains=8453' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\""
      },
      {
        "title": "Docs",
        "body": "LLM docs: https://docs.li.fi/llms.txt\nOpenAPI: https://gist.githubusercontent.com/kenny-io/7fede47200a757195000bfbe14c5baee/raw/725cf9d4a6920d5b930925b0412d766aa53c701c/lifi-openapi.yaml"
      }
    ],
    "body": "LI.FI Agent Skill\nCRITICAL RULES (read first)\nONLY use curl to call the LI.FI API. NEVER use web_search, web_fetch, or any other tool.\nONLY use the endpoints documented below. Do NOT guess or invent URLs.\nBase URL is https://li.quest/v1/. No other base URL.\nALWAYS include auth header: \"x-lifi-api-key: $LIFI_API_KEY\" (double quotes, dollar sign — shell expands it).\nALWAYS tell the user the quote is provided by LI.FI.\nDefault slippage: 10% (0.10). If the user has a custom slippage in their strategy (via defi_get_strategy), use that instead. The agent can also adjust dynamically per-transaction if the user requests it.\nDefault deadline: 10 minutes.\nALWAYS add &skipSimulation=true to all /v1/quote requests. Our EIP-7702 delegated wallets have on-chain code that breaks LI.FI's simulation.\nNEVER construct ERC-20 approve calldata (hex) yourself. ALWAYS use the defi_approve or defi_approve_and_send tools.\nALL swaps, bridges, and DeFi token operations MUST go through LI.FI. No exceptions. No manual DEX interactions.\nTransaction Links\n\nAfter every transaction broadcast, always provide a clickable block explorer link:\n\nEVM: [View tx](https://basescan.org/tx/0xHASH) — use the correct explorer (etherscan.io, basescan.org, arbiscan.io, polygonscan.com, optimistic.etherscan.io)\nSui: [View tx](https://suiscan.xyz/txblock/{txDigest})\nSui\nSui chain ID: 9270000000000000. Use this for fromChain and toChain in LI.FI quote requests when the user wants Sui (e.g. fromChain=9270000000000000&toChain=9270000000000000 for same-chain Sui swap).\nLI.FI supports Sui for same-chain swaps and bridging to/from EVM and Solana.\nFor Sui quotes, use the user's suiAddress from defi_get_wallet as fromAddress.\nExecute Sui quotes with defi_send_sui_transaction — pass the transaction bytes (hex) from the LI.FI quote. Do not use defi_send_transaction or defi_approve_and_send for Sui.\nSui does not use ERC-20 approvals; there is no approval step for Sui swaps.\nEndpoints\nGET /v1/chains — List supported chains\ncurl -s --request GET \\\n  --url https://li.quest/v1/chains \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\n\nUse for: listing chains, testing connectivity. If user asks for a test, use this.\n\nGET /v1/tokens — List tokens on chains\ncurl -s --request GET \\\n  --url 'https://li.quest/v1/tokens?chains=8453' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\n\nParams: chains (comma-separated chain IDs).\n\nGET /v1/quote — Get swap/bridge quote with tx data\ncurl -s --request GET \\\n  --url 'https://li.quest/v1/quote?fromChain=8453&toChain=8453&fromToken=ETH&toToken=USDC&fromAddress=0xYOUR_ADDRESS&fromAmount=100000000000000&slippage=0.10&skipSimulation=true' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\n\nParams: fromChain, toChain, fromToken, toToken, fromAddress, toAddress (optional), fromAmount (in wei), slippage (decimal, e.g. 0.10 = 10%), skipSimulation=true (ALWAYS include).\n\nReturns: estimate (with toAmount, toAmountMin, approvalAddress) and transactionRequest (ready for wallet submission).\n\nAfter presenting a quote to the user, always include the estimated output amount, fees, and slippage. Get the user's wallet address with defi_get_wallet and use it as fromAddress in the quote.\n\nExecuting the quote\n\nCheck if ERC-20 approval is needed: If the quote's transactionRequest.value is \"0x0\" AND estimate.approvalAddress exists, the swap/bridge is using an ERC-20 token that needs approval first.\n\nIf approval IS needed: Use defi_approve_and_send with:\n\ntoken: the action.fromToken.address from the quote\nspender: the estimate.approvalAddress from the quote\napproveAmount: the action.fromAmount from the quote (or omit for unlimited)\nto, value, data, gasLimit: from the quote's transactionRequest\n\nIf approval is NOT needed (native ETH swap, value > 0x0): Use defi_send_transaction with the quote's transactionRequest fields: to, value, data, chainId, and gasLimit (ALWAYS pass gasLimit from the quote).\n\nNEVER construct approve calldata hex yourself. The defi_approve and defi_approve_and_send tools handle ABI encoding correctly.\n\nSui: For quotes where fromChain or toChain is Sui, use defi_send_sui_transaction with the quote's transaction bytes. No approval step.\n\nPOST /v1/advanced/routes — Get multiple route options\ncurl -s --request POST \\\n  --url https://li.quest/v1/advanced/routes \\\n  --header 'Content-Type: application/json' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\" \\\n  --data '{\n  \"fromChainId\": 8453,\n  \"fromAmount\": \"100000000000000\",\n  \"fromTokenAddress\": \"0x0000000000000000000000000000000000000000\",\n  \"toChainId\": 8453,\n  \"toTokenAddress\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n  \"options\": {\n    \"slippage\": 0.10,\n    \"order\": \"RECOMMENDED\"\n  }\n}'\n\nPOST /v1/quote/contractCalls — Multi-step contract calls (BETA)\ncurl -s --request POST \\\n  --url https://li.quest/v1/quote/contractCalls \\\n  --header 'Content-Type: application/json' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\" \\\n  --data '{\n  \"fromChain\": 10,\n  \"fromToken\": \"0x4200000000000000000000000000000000000042\",\n  \"fromAddress\": \"0xYOUR_ADDRESS\",\n  \"toChain\": 1,\n  \"toToken\": \"ETH\",\n  \"toAmount\": \"100000000000001\",\n  \"contractCalls\": []\n}'\n\nGET /v1/status — Check transfer status\ncurl -s --request GET \\\n  --url 'https://li.quest/v1/status?txHash=0xYOUR_TX_HASH&fromChain=8453' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\n\nPass fromChain to speed up the lookup.\n\nGET /v1/tools — List available bridges and exchanges\ncurl -s --request GET \\\n  --url 'https://li.quest/v1/tools?chains=8453' \\\n  --header \"x-lifi-api-key: $LIFI_API_KEY\"\n\nDocs\nLLM docs: https://docs.li.fi/llms.txt\nOpenAPI: https://gist.githubusercontent.com/kenny-io/7fede47200a757195000bfbe14c5baee/raw/725cf9d4a6920d5b930925b0412d766aa53c701c/lifi-openapi.yaml"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/fabriziogianni7/lifi-skill",
    "publisherUrl": "https://clawhub.ai/fabriziogianni7/lifi-skill",
    "owner": "fabriziogianni7",
    "version": "2.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/lifi-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/lifi-skill",
    "agentUrl": "https://openagent3.xyz/skills/lifi-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lifi-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lifi-skill/agent.md"
  }
}