← SquidlorCONTENT HISTORY

Update to Squidlor

Snapshot Oct 8, 2026 · 18:03 UTC · version 0.1.0

Collection source: downloaded plugin package.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Use when the user wants to send, transfer or pay a token to an address (\"send 50 USDC to 0x...\", \"pay 0.1 ETH to\", \"transfer\"), or asks what a wallet holds. Uses the Squidlor MCP tools get_wallet_overview and quote_send. quote_send returns an UNSIGNED transaction for the user to sign with their own wallet; nothing here can sign or move funds.",
  "included_files": [],
  "name": "squidlor-transfer",
  "skill_md_contents": "---\nname: squidlor-transfer\ndescription: >-\n  Use when the user wants to send, transfer or pay a token to an address (\"send\n  50 USDC to 0x...\", \"pay 0.1 ETH to\", \"transfer\"), or asks what a wallet holds.\n  Uses the Squidlor MCP tools get_wallet_overview and quote_send. quote_send\n  returns an UNSIGNED transaction for the user to sign with their own wallet;\n  nothing here can sign or move funds.\n---\n\n# Squidlor transfers\n\n`quote_send` builds a token transfer the user can sign. It resolves the token from\nwhat the sender wallet actually holds, checks the balance, and returns the\nunsigned transaction fields. Codex has no wallet, so the output of this skill is a\ntransaction the user signs elsewhere, never a sent transfer.\n\nTransfers work on Ethereum (1), BNB Chain (56), Polygon (137), Arbitrum (42161),\nOptimism (10) and zkSync (324). Squidlor's price feeds live on Arc; that is not a\ntransfer chain here.\n\n## Hard rules\n\n1. **Never ask for, accept, or store a private key or seed phrase.** If the user\n   offers one, refuse and explain that the transaction is signed in their wallet.\n2. **Never write an address from memory.** Sender and recipient come from the\n   user, in this conversation, as full `0x` addresses. If either is missing, ask.\n3. **Confirm before quoting.** Repeat token, amount, recipient and chain back to\n   the user and get a yes before calling `quote_send`.\n4. **Pass the sender explicitly.** This surface has no linked wallet, so every\n   `quote_send` and `get_wallet_overview` call needs `wallet: \"<sender address>\"`.\n5. **One quote, then stop.** After presenting the transaction, do not re-call\n   `quote_send` unless the user changes something.\n\n## Steps\n\n1. Collect: sender address, recipient address, token ticker, amount in whole\n   units (`25` for 25 USDC, never base units), and the chain if known.\n2. If the user has not said which chain, or asks what they hold, call\n   `get_wallet_overview` with `wallet: \"<sender>\"` and show the balances.\n3. Confirm the four facts with the user (rule 3).\n4. Call `quote_send` with `symbol`, `amount`, `to`, `wallet`, and `chainId`.\n   - `AMBIGUOUS_CHAIN`: the ticker is held on several chains. Show them and ask\n     which one. Do not pick the larger balance.\n   - `TOKEN_NOT_HELD`: the wallet does not hold that ticker on any chain the\n     engine could read. Say so; a chain the engine could not reach is absent, so\n     this is not proof of zero.\n   - `NO_LINKED_WALLET`: you forgot `wallet`. Add it and retry once.\n5. Present the result.\n\n## Presenting the unsigned transaction\n\nThe result has `transfer` (what is being sent) and `transaction` (what to sign).\nShow both, in this form:\n\n```\nTransfer: <amount> <symbol> on <chain name> (<chainId>)\nFrom:     <transaction.from>\nTo:       <transfer.to>\n\nUnsigned transaction (sign in your own wallet):\n  chainId: <transfer.chainId>\n  to:      <transaction.to>\n  value:   <transaction.value>\n  data:    <transaction.data>\n```\n\nExplain the shape once: for a native-coin send, `to` is the recipient and `value`\nis the amount in wei; for an ERC-20 send, `to` is the token contract, `value` is\n`0`, and `data` is the `transfer(recipient, amount)` calldata. Say that\n`transaction.data` is calldata, not a transaction hash, and that there is no\nexplorer link until the user has signed and broadcast it.\n\nWays to sign, offered as options and not instructions to run:\n\n- Foundry: `cast send --rpc-url <rpc> --ledger <to> <data> --value <value>`\n  (or `--interactive` to be prompted for a key; never put a key on the command\n  line).\n- A wallet or dapp that accepts a raw transaction (`to`, `value`, `data`) on the\n  named chain.\n- The Squidlor chat at https://chat.squidlor.com, which runs the same `quote_send`\n  with a connected browser wallet and signs in place.\n\nIf the result has `indicative: true` or a `transaction` of `null`, there is\nnothing to sign. Report the reason in the result and stop; do not tell the user\nto look for a signing step that does not exist.\n"
}

SHA-256 of public snapshot: 0b1fa642fe2a2eda4ca5c94386bdd0bb46987cc98ed8492ad3786b56e676a6e0