Agent skill

Recover Eco Funds

by circlefin in circlefin/skills

Recover USDC from a legacy Circle CLI Gateway --method eco deposit whose fixed refund recipient is the SCA's backing EOA.

Apache-2.0Auto-check passedBackend & APIs

Install Recover Eco Funds

skills CLI
$ npx skills add circlefin/skills --skill recover-eco-funds -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install circlefin/skills recover-eco-funds --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/circlefin/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/circle/skills/recover-eco-funds .claude/skills/recover-eco-funds && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
recover-eco-funds
GitHub stars
155
Token cost
~5.2k tokens
SKILL.md length
2,232 words
Files
6 (incl. scripts, references)
Skills in repo
19
Repo updated
First seen
Licence
Apache-2.0

At a glance

Recover USDC from a legacy Circle CLI Gateway --method eco deposit whose fixed refund recipient is the SCA's backing EOA.

  • Works in 3 steps: Diagnose without changing state → Self-issue the Eco refund → Move backing-EOA USDC to the linked SCA
  • Legacy Eco intents that are stuck
  • SKILL.md covers Overview, Understand the two recovery legs, Safety boundary and Create an evidence directory, plus 7 more sections
  • Runs JavaScript scripts from its folder; calls curl, tsx and node; reaches quotes.eco.com and agentic-wallet.circle.com

What it does

Recover Eco Funds is an agent skill from circlefin/skills. Recover USDC from a legacy Circle CLI Gateway --method eco deposit whose fixed refund recipient is the SCA's backing EOA. Use this skill for legacy Eco intents that are stuck, expired, waiting for refund, refunded to eoaOwnerAddress, missing from Gateway, or need a permissionless self-refund. Do not use its executable recovery phases for current Gateway v2 deposits, which set refundRecipient to the SCA. It covers calling Eco's Portal refund(...) with exact onchain intent data, then moving refunded USDC from the…

Its SKILL.md is about 5.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/eoa-to-sca.md` and `references/self-refund.md`).

It sits in Backend & APIs. It works with Circle USDC. The repository describes itself as: Circle's open source skills for AI-assisted development. The licence is Apache-2.0.

When your agent uses it

  • Legacy Eco intents that are stuck
  • Waiting for refund
  • Refunded to eoaOwnerAddress
  • Missing from Gateway

Example prompts

  • “s backing EOA and the CLI reports”
  • “/recover-eco-funds”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Read, Bash(mkdir -p ./eco-recovery-evidence), Bash(circle --version), Bash(circle wallet status --output json), Bash(circle gateway deposit --help), Bash(circle wallet execute --help), Bash(circle contract query --help), Bash(circle wallet list --chain * --type agent --output json), Bash(circle wallet balance --address * --chain * --output json), Bash(circle gateway balance --address * --chain * --output json), Bash(circle transaction list --address * --chain * --operation transfer --tx-type outbound --state confirmed --output json), Bash(curl -fsS "https://api.eco.com/circle-gateway/v2/depositAddresses/*"), Bash(curl -fsS --request POST --url https://quotes.eco.com/api/v3/intents/intentStatus --header "Content-Type: application/json" --data '{"intentHash":"*"}'), Bash(curl -fsS --request POST --url https://quotes.eco.com/api/v3/intents/intentStatus --header "Content-Type: application/json" --data '{"intentCreatedHash":"*"}'), Bash(*/node_modules/.bin/tsx */scripts/eco-self-refund.mjs *), Bash(node */scripts/sign-eoa-authorization.mjs *)

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Diagnose without changing state
  2. Self-issue the Eco refund
  3. Move backing-EOA USDC to the linked SCA

What it can do on your machine

Read from SKILL.md and the folder at commit 04cbd18. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash(mkdir -p ./eco-recovery-evidence)
    • Bash(circle --version)
    • Bash(circle wallet status --output json)
    • Bash(circle gateway deposit --help)
    • Bash(circle wallet execute --help)
    • Bash(circle contract query --help)
    • Bash(circle wallet list --chain * --type agent --output json)
    • Bash(circle wallet balance --address * --chain * --output json)
    • Bash(circle gateway balance --address * --chain * --output json)

    …and 8 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • curl
    • tsx
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • quotes.eco.com
    • agentic-wallet.circle.com
    • api.eco.com

    Also links to:

    • docs.eco.com
    • github.com
    • eips.ethereum.org
    • developers.circle.com
    • console.circle.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Recover Eco Funds loads about 5.2k tokens when it runs, and up to ~9.1k if it reads all its reference files. Until then it costs about 198 tokens; SKILL.md has 2,232 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~198
When it runs · the whole SKILL.md, loaded when a task matches
~5.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from circlefin/skills at commit 04cbd18, republished under its Apache-2.0 licence (© circlefin). 2,232 words, ~5,154 tokens.

Download SKILL.mdSave it as .claude/skills/recover-eco-funds/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
recover-eco-funds
description
Recover USDC from a legacy Circle CLI Gateway `--method eco` deposit whose fixed refund recipient is the SCA's backing EOA. Use this skill for legacy Eco intents that are stuck, expired, waiting for refund, refunded to `eoaOwnerAddress`, missing from Gateway, or need a permissionless self-refund. Do not use its executable recovery phases for current Gateway v2 deposits, which set `refundRecipient` to the SCA. It covers calling Eco's Portal `refund(...)` with exact onchain intent data, then moving refunded USDC from the backing EOA to the linked SCA with ERC-3009, relayed by the SCA so the backing EOA needs no gas. The backing-EOA sweep also applies when USDC was sent directly to an Agent Wallet's backing EOA and the CLI reports "Wallet not found" for that address.
allowed-tools
Read, Bash(mkdir -p ./eco-recovery-evidence), Bash(circle --version), Bash(circle wallet status --output json), Bash(circle gateway deposit --help), Bash(circle wallet execute --help), Bash(circle contract query --help), Bash(circle wallet list --chain * --type agent --output json), Bash(circle wallet balance --address * --chain * --output json), Bash(circle gateway balance --address * --chain * --output json), Bash(circle transaction list --address * --chain * --operation transfer --tx-type outbound --state confirmed --output json), Bash(curl -fsS "https://api.eco.com/circle-gateway/v2/depositAddresses/*"), Bash(curl -fsS --request POST --url https://quotes.eco.com/api/v3/intents/intentStatus --header "Content-Type: application/json" --data '{"intentHash":"*"}'), Bash(curl -fsS --request POST --url https://quotes.eco.com/api/v3/intents/intentStatus --header "Content-Type: application/json" --data '{"intentCreatedHash":"*"}'), Bash(*/node_modules/.bin/tsx */scripts/eco-self-refund.mjs *), Bash(node */scripts/sign-eoa-authorization.mjs *)
requirements.runtimes
node

Recover Legacy Eco Funds

Overview

Recover funds from a legacy Circle CLI Eco deposit without guessing intent data, refund recipients, or transaction state. The workflow is evidence-first and defaults to read-only inspection.

Legacy-only recovery: The executable recovery phases in this skill are for deposits whose already-published intent fixes reward.creator to the Circle SCA's API-verified eoaOwnerAddress. Current Gateway v2/Circle CLI deposits set refundRecipient to the SCA and should refund directly there. For a current deposit, use the read-only status checks below, reconcile the SCA and Gateway balances, and escalate through the normal support path if necessary; do not run the legacy backing-EOA sweep.

Do not classify a deposit as legacy from its age or endpoint version alone. Decode the IntentPublished event and compare the fixed reward.creator with both the SCA and its API-verified eoaOwnerAddress:

  • reward.creator == eoaOwnerAddress: legacy recovery may apply after all read-only checks.
  • reward.creator == SCA: current direct-to-SCA refund behavior; stop before the executable legacy phases.
  • neither: stop because the selected Circle wallet does not own the fixed refund recipient.

If there is no Eco deposit and USDC was simply sent to an Agent Wallet's backing EOA (the CLI reports "Wallet not found" for that address), skip Phases 1 and 2 and go straight to Phase 3.

Use the use-circle-cli and use-agent-wallet skills first if the Circle CLI is not installed, the Terms gate is unresolved, or the agent session is invalid. Do not trigger multiple login requests: each fresh request invalidates the prior OTP.

Understand the two recovery legs

A legacy Eco deposit can require two separate operations:

  1. Eco self-refund: call Portal.refund(destination, routeHash, reward) on the vault/refund chain after the reward deadline. The Portal validates the intent and instructs its deterministic vault to return funds to reward.creator. Anyone may relay this call, but the recipient is fixed by the original intent.
  2. Backing EOA sweep: if reward.creator was the SCA's backing EOA, authorize USDC to move from that EOA to the linked SCA with ERC-3009. The SCA relays the token call and pays gas; the backing EOA does not need native gas.

Current Gateway v2/Circle CLI Eco deposits set the SCA as the refund recipient. They are outside the executable scope of this skill: use status and balance reconciliation, and do not run the backing-EOA sweep.

Safety boundary

  • Treat event/creation chain, vault/refund chain, intent destination value, Gateway destination chain, SCA, backing EOA, creation-chain Portal, refund-chain Portal, vault, token, amount, route hash, intent hash, and deadline as different fields. Never substitute one for another. A composed Eco flow can publish the event on one chain while leaving the refundable vault on another, and Portal deployment addresses need not match across chains.
  • Derive the backing EOA from the Circle wallet API's eoaOwnerAddress; do not accept a user-supplied owner without comparing it to that field.
  • Before a legacy self-refund broadcast, require reward.creator to equal the selected Circle wallet's API-verified eoaOwnerAddress. If it equals the SCA, classify it as the current direct-to-SCA flow and stop before executable recovery. Although refund(...) is permissionless, never spend the user's gas to refund an unrelated wallet.
  • Reconstruct the refund tuple from the source-chain IntentPublished event. The Eco status API is useful context but is not authoritative enough to build calldata.
  • Verify the reconstructed intent hash equals the event's indexed intent hash.
  • Refuse a refund before the onchain deadline or when reward status is already Withdrawn or Refunded.
  • Simulate the exact calldata from the exact SCA before broadcasting.
  • Ask for explicit approval immediately before each money-moving action. Present chain, token, raw and decimal amount, source, destination, contract, intent/nonce, and estimated gas.
  • Use one persisted idempotency key per intended broadcast. On an ambiguous response, reconcile onchain state before attempting anything new.
  • Never log user tokens, session secrets, OTPs, private keys, or raw EIP-712 signatures. Log a signature hash instead.
  • If CIRCLE_PROXY_URL overrides Circle's default, inspect the exact origin and obtain explicit user trust before sending an agent session token through it. The Phase 2 helper requires --allow-proxy-origin <scheme://host> when an override is present. The Phase 3 script talks only to Circle production and refuses to run while an override is set.
  • Never use refundTo(...) as a shortcut. It can change the recipient and is creator-restricted on current Eco contracts. The permissionless refund(...) path is sufficient.

Create an evidence directory

Create a dedicated directory before diagnosis, for example:

bash
mkdir -p ./eco-recovery-evidence

Capture command time, CLI version, Circle chain code, RPC URL host, public addresses, intent and transaction hashes, sanitized stdout/stderr, exit code, pre/post balances, simulation result, idempotency key, and final explorer link. Keep the directory private because public addresses and account relationships may still be sensitive.

Do not place raw signatures or authentication material in this directory.

Phase 1: Diagnose without changing state

Run current help before relying on remembered flags:

bash
circle --version
circle wallet status --output json
circle gateway deposit --help
circle wallet execute --help
circle contract query --help

Identify the SCA and inspect the creation chain, candidate vault/refund chains, and Gateway destination:

bash
circle wallet list --chain <SOURCE_CHAIN> --type agent --output json
circle wallet balance --address <SCA> --chain <SOURCE_CHAIN> --output json
circle gateway balance --address <SCA> --chain <GATEWAY_DESTINATION_CHAIN> --output json

Collect at least one intent identifier:

  • Eco intent hash, or
  • creation-chain transaction hash that published the intent, or
  • Eco deposit address plus the funding transaction that reached it.
Check the current Eco intent status for a Circle SCA

Eco does not provide a list-intents-by-SCA endpoint. Map the SCA to the single-use Eco vault created for the deposit, then query that vault and its intent:

  1. Identify the source-chain SCA:

    bash
    circle wallet list --chain <SOURCE_CHAIN> --type agent --output json
  2. Get <VAULT_ADDRESS> from the original circle gateway deposit --output json result or the saved evidence. Its vaultAddress, sourceAddress, sourceBlockchain, transferTxHash, and deadline fields identify the deposit. If that output was not saved, list the SCA's confirmed outbound transfers and find the exact USDC funding transaction; its destinationAddress is the Eco vault:

    bash
    circle transaction list \
      --address <SCA> \
      --chain <SOURCE_CHAIN> \
      --operation transfer \
      --tx-type outbound \
      --state confirmed \
      --output json

    Match the intended amount, time, USDC token, and transaction hash. Do not select a vault from address alone when multiple deposits exist.

  3. Query the current Gateway deposit-vault record. Use the EVM chain ID for the chain that funded the vault (8453 for Base mainnet or 84532 for Base Sepolia; verify current CLI support with circle gateway deposit --help):

    bash
    curl -fsS \
      "https://api.eco.com/circle-gateway/v2/depositAddresses/<VAULT_ADDRESS>?sourceChainId=<SOURCE_CHAIN_EVM_ID>"

    Record state, vaultAddress, amount, deadline, sourceChainId, and intentHash. States such as PENDING and FUNDING_DETECTED are still in progress; PUBLISHED means an intent was published, while FAILED, REFUNDED_BY_USER, and RECOVERY_PUBLISHED require reconciliation before another action.

  4. When the vault record contains an intentHash, query the intent lifecycle:

    bash
    curl -fsS \
      --request POST \
      --url https://quotes.eco.com/api/v3/intents/intentStatus \
      --header "Content-Type: application/json" \
      --data '{"intentHash":"<INTENT_HASH>"}'

    If only the creation transaction hash is available, use the alternate accepted identifier:

    bash
    curl -fsS \
      --request POST \
      --url https://quotes.eco.com/api/v3/intents/intentStatus \
      --header "Content-Type: application/json" \
      --data '{"intentCreatedHash":"<CREATION_TRANSACTION_HASH>"}'

    Capture data.status, data.intentCreated, data.fulfillment, and data.refund, including every transaction hash and explorer URL present.

These APIs are supporting evidence. If the response says WaitingForRefund, continue with onchain reconstruction; never build refund calldata or broadcast from an API status alone.

Classify the state:

Observed stateAction
Intent still before deadlineWait or escalate; do not refund
Intent fulfilled/completedReconcile Gateway or destination funds; do not refund
Legacy intent, deadline passed, unfulfilled, vault fundedRun the Eco self-refund leg
Fixed refund recipient is the SCACurrent flow: reconcile or escalate; do not run legacy recovery
Reward status already RefundedLocate the refund recipient balance; do not call refund again
USDC is at the SCARecovery is complete
USDC is at the verified backing EOARun the backing EOA sweep leg
Vault and both wallet balances are zeroStop and trace transfer events; do not guess

Helper prerequisites

The Phase 2 helper (eco-self-refund.mjs) requires a trusted circle-cli developer checkout with dependencies installed because the current public command surface does not expose raw contract calldata submission. It reuses Circle CLI's existing secure session and challenge code; it does not read or print keychain secrets directly.

The Phase 3 helper (sign-eoa-authorization.mjs) needs only Node.js 20.18.2+ and the public @circle-fin/cli 1.1.4 or newer, logged in with circle wallet login. No checkout is required.

Resolve both paths explicitly:

text
<SKILL_DIR>       directory containing this SKILL.md
<CIRCLE_CLI_REPO> trusted circle-cli checkout containing apps/cli and node_modules

If a newer installed CLI exposes native recovery, raw-calldata, or backing-owner commands in --help, prefer those commands and retain the same preflight, approval, and evidence requirements.

Show full SKILL.md (944 more words)Show less

Phase 2: Self-issue the Eco refund

Do not enter this phase until the onchain event proves the deposit is legacy or otherwise proves that the fixed recipient is owned by the selected wallet and requires this manual path. If reward.creator is the SCA, stop and use the current-flow reconciliation path.

Read references/self-refund.md before acting. It defines the exact event fields, tuple, onchain checks, and raw-calldata fallback.

Prefer a native Circle CLI recovery command if the installed CLI exposes one in --help. Otherwise use the bundled helper from a trusted circle-cli checkout:

bash
<CIRCLE_CLI_REPO>/node_modules/.bin/tsx \
  <SKILL_DIR>/scripts/eco-self-refund.mjs \
  --circle-cli-repo <CIRCLE_CLI_REPO> \
  --chain <REFUND_CHAIN> \
  --event-chain-id <CREATION_CHAIN_EVM_ID> \
  --refund-chain-id <REFUND_CHAIN_EVM_ID> \
  --event-rpc-url <CREATION_CHAIN_RPC_URL> \
  --refund-rpc-url <REFUND_CHAIN_RPC_URL> \
  --sca <SCA> \
  --event-portal <CREATION_CHAIN_ECO_PORTAL> \
  --portal <REFUND_CHAIN_ECO_PORTAL> \
  --creation-tx <SOURCE_TX_HASH> \
  --intent-hash <INTENT_HASH> \
  --evidence-dir <EVIDENCE_DIR> \
  --estimate-fee

The invocation is read-only. It decodes IntentPublished from the explicitly selected creation-chain Portal, verifies the intent hash, then reads reward status and vault balances from the separately selected refund-chain Portal, constructs the exact refund(...) calldata, and performs eth_call from the SCA. --estimate-fee additionally loads the Circle session, verifies that the fixed recipient is the selected SCA or its API-reported backing EOA, and includes the fee estimate in the approval preflight. Omit that flag only for session-free diagnosis; such output is not sufficient for approval. If the selected chain has no funded vault, stop and inspect other chains indicated by the composed Eco route; do not assume the event chain owns the vault or that both Portal addresses are identical.

After showing a preflight with recipientOwnership.checked: true and an estimatedFee, and receiving explicit user approval, re-run with both:

bash
--submit --confirm-intent <INTENT_HASH>

The confirmation value binds approval to one intent rather than to an open-ended refund operation.

When CIRCLE_PROXY_URL is set, the helper stops before sending a session token. Inspect the reported origin, ask the user to trust that exact origin, and only then add --allow-proxy-origin <scheme://host>.

After confirmation, verify:

  • Circle transaction state is confirmed and has a transaction hash.
  • Portal reward status is Refunded.
  • Each reward-token vault balance is zero or lower by the refunded amount.
  • The fixed refund recipient's balance increased.
  • The receipt includes IntentRefunded for the expected intent and recipient.

The optional normal circle wallet execute tuple-form estimate is not preauthorized by this skill's allowed-tools because its dynamic tuple arguments cannot be narrowly scoped. Run it only through the host's normal interactive command approval. If that estimate fails while direct RPC simulation succeeds, use the preauthorized helper's raw calldata path. Do not change tuple values to make the hosted parser accept them.

Phase 3: Move backing-EOA USDC to the linked SCA

Skip this phase when the refund already reached the SCA.

Read references/eoa-to-sca.md before acting. This is a standard USDC ERC-3009 transfer authorized by the backing EOA and relayed by its linked SCA.

Confirm the backing EOA's balance, then show the chain, USDC contract, backing EOA, SCA, and raw and decimal amount, and get explicit user approval before signing:

bash
circle contract query "balanceOf(address)" <BACKING_EOA> --contract <USDC_CONTRACT> --chain <SOURCE_CHAIN>

node <SKILL_DIR>/scripts/sign-eoa-authorization.mjs \
  --chain <SOURCE_CHAIN> \
  --sca <SCA> \
  --eoa <BACKING_EOA> \
  --usdc <USDC_CONTRACT> \
  --amount-atomic <RAW_USDC_AMOUNT>

The helper:

  1. Requires --sca to be one of the logged-in account's Agent Wallets and its API-reported eoaOwnerAddress to equal --eoa.
  2. Builds TransferWithAuthorization with from=backing EOA, to=linked SCA, exact raw amount, a fresh 32-byte nonce, and a one-hour expiry, using the live USDC name()/version() for the EIP-712 domain.
  3. Requests typed-data signing with walletAddress=<backing EOA> and blockchain=<SOURCE_CHAIN>. Signing by the SCA wallet ID is incorrect because it can produce an EIP-1271 replay-safe SCA wrapper instead of the raw EOA signature USDC expects.
  4. Recovers the signer locally and requires it to equal the backing EOA.
  5. Prints, without submitting, the authorizationState check, the circle wallet execute ... --estimate fee estimate, the single submit command with a fixed idempotency key, and the verification queries.

The script talks only to Circle production (https://agentic-wallet.circle.com). If CIRCLE_PROXY_URL is set, it stops before reading the session. Unset the variable, run circle wallet login again, and re-run; the printed circle wallet execute commands must also run without the override.

Run the printed commands in order before the authorization expires. Show the --estimate result and get explicit approval for the transfer and network fee before running the submit command. The submit command contains the raw signature; keep it out of the evidence directory and record a signature hash instead.

After confirmation, verify:

  • Backing EOA USDC decreased by the exact amount.
  • SCA USDC increased by the exact amount.
  • authorizationState(backing EOA, nonce) is true.
  • The receipt contains the expected USDC transfer.

Ambiguous or failed submissions

Do not create a fresh authorization or idempotency key just because a client timed out.

For Eco refund ambiguity, check reward status, vault balance, recipient balance, transaction list, and IntentRefunded logs. If any proves success, record the result and stop.

For ERC-3009 ambiguity, check authorizationState, both USDC balances, transaction list, and transfer logs. A consumed nonce or completed balance movement proves the authorization was used. Never sign a second transfer until the first is reconciled.

If a signed authorization was never submitted, let its validBefore expire before creating another with the same amount unless onchain state proves the nonce unused and the original signature cannot be replayed by an unintended party.

Completion report

Report:

  • Initial diagnosis and selected branch.
  • Creation/event, vault/refund, intent-destination, and Gateway-destination chain names and IDs.
  • SCA, verified backing EOA, creation-chain Portal, refund-chain Portal, vault, token, and fixed refund recipient.
  • Intent hash, route hash, deadline, reward status before/after.
  • Amounts in atomic units and USDC.
  • Simulation results and gas estimate.
  • Circle transaction IDs, onchain transaction hashes, and explorer links.
  • Pre/post balances and ERC-3009 authorization state.
  • Evidence-directory path and a note that secrets/signatures were excluded.

DISCLAIMER: This skill is provided "as is" without warranties, is subject to the Circle Developer Terms, and output generated may contain errors. Review every address, amount, deadline, contract, simulation, fee, and approval before broadcasting a transaction.

© circlefin, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts, references) in plugins/circle/skills/recover-eco-funds of circlefin/skills.

  • SKILL.md
  • references/eoa-to-sca.md
  • references/self-refund.md
  • scripts/_shared.mjs
  • scripts/eco-self-refund.mjs
  • scripts/sign-eoa-authorization.mjs

Open the folder on GitHubat commit 04cbd18

Compare with similar skills

Recover Eco Funds next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Recover Eco Funds compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Recover Eco Funds this skillcirclefin/skills155—~5.2kAutomated safety check: PassApache-2.0
Agentic Walletcoinbase/agentic-wallet-skills1262 repos~1kAutomated safety check: PassMIT
Deposit QrSuperior-Trade/superior-skills215—~1.1kAutomated safety check: PassMIT
Alchemy Agentic Gatewaymoonpay/skills113—~2.1kAutomated safety check: NotesMIT
Mppxinternet-court/internet-court-skill6.6k1 repos~1.1kAutomated safety check: PassApache-2.0
CapacitrBankrBot/skills1.2k—~3kAutomated safety check: PassNone

Similar skills

  • Agentic Wallet

    coinbase/agentic-wallet-skills

    Crypto wallet operations via the awal CLI — sign in, check balances, send USDC/ETH/POL/SOL, trade tokens, fund the wallet, and use the x402 payment protocol to discover paid services, pay for API…

    126 GitHub starsUsed in 2 repos~1k tokens
    Backend & APIsAuto-check passed
  • Deposit Qr

    Superior-Trade/superior-skills

    A skill your agent uses when a user needs a QR code or wallet payment URI to fund a Superior-managed EVM wallet on a specific chain before using Lighter, Polymarket, Hyperliquid, or other Superior…

    215 GitHub stars~1.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • A skill your agent uses when accessing Alchemy APIs for RPC calls, token balances, NFT metadata, asset transfers, transaction simulation, or Alchemy-specific features.

    113 GitHub stars~2.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check: notes
  • Mppx

    internet-court/internet-court-skill

    TypeScript SDK for the Payment HTTP Authentication Scheme. An agent skill from internet-court/internet-court-skill.

    6.6k GitHub starsUsed in 1 repo~1.1k tokens
    Backend & APIsAuto-check passed
  • Capacitr

    BankrBot/skills

    Paste a URL or free text and get matched Polymarket / Hyperliquid / Deribit markets with Quotient edge scores.

    1.2k GitHub stars~3k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Uniswap V3 Swap

    keypo-us/keypo-cli

    A skill your agent uses when the user wants to swap tokens on Base Sepolia (or Base mainnet) using Uniswap V3.

    182 GitHub stars~3.2k tokensUpdated 6 mo ago
    Backend & APIsAuto-check passed

More from circlefin/skills

All 19 skills in this repo
  • Agent Wallet Policy

    circlefin/skills

    View spending policy on a Circle agent wallet — per-transaction, daily, weekly, and monthly USDC caps via the circle CLI.

    155 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Bridge Tokens

    circlefin/skills

    Build browser or server token bridging across chains with Circle App Kit or standalone Bridge Kit.

    155 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check: notes
  • Fund Agent Wallet

    circlefin/skills

    Fund a Circle agent wallet with USDC via the circle CLI. An agent skill from circlefin/skills.

    155 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Accept Agent Payments

    circlefin/skills

    A skill your agent uses when a developer wants to monetize an API, endpoint, service, model, dataset, tool, or agent-facing resource with Circle USDC pay-per-call payments, Gateway Nanopayments…

    155 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check: warnings
  • Pay Via Agent Wallet

    circlefin/skills

    A skill your agent uses when the user wants to call a paid API, look something up online, search for data, get prices, odds, or stats, or use any paid service with automatic USDC payment.

    155 GitHub stars~3.9k tokensUpdated yesterday
    Auto-check passed
  • Swap Tokens

    circlefin/skills

    Build browser or server token swaps with Circle App Kit or standalone Swap Kit.

    155 GitHub stars~4.6k tokensUpdated yesterday
    Auto-check: notes

Works with

Categories

Questions about Recover Eco Funds

What does Recover Eco Funds do?

Recover USDC from a legacy Circle CLI Gateway --method eco deposit whose fixed refund recipient is the SCA's backing EOA. Recover Eco Funds is an agent skill from circlefin/skills. Recover USDC from a legacy Circle CLI Gateway --method eco deposit whose fixed refund recipient is the SCA's backing EOA.

When should I use Recover Eco Funds?

Recover Eco Funds fits situations like: legacy Eco intents that are stuck; waiting for refund; refunded to eoaOwnerAddress; missing from Gateway.

How do I install Recover Eco Funds in Claude Code?

Run `npx skills add circlefin/skills --skill recover-eco-funds -a claude-code`. Or copy the skill folder (plugins/circle/skills/recover-eco-funds in circlefin/skills) into .claude/skills/recover-eco-funds in your project. Claude Code loads it when a task matches its description.

How do I install Recover Eco Funds in Codex?

Run `npx skills add circlefin/skills --skill recover-eco-funds -a codex`. Or copy the skill folder (plugins/circle/skills/recover-eco-funds in circlefin/skills) into .agents/skills/recover-eco-funds in your project. Codex loads it when a task matches its description.

Can I use Recover Eco Funds in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add circlefin/skills --skill recover-eco-funds -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/recover-eco-funds, .gemini/skills/recover-eco-funds, .github/skills/recover-eco-funds and .opencode/skills/recover-eco-funds in your project.

What does Recover Eco Funds need to run?

Going by SKILL.md and its folder, Recover Eco Funds needs JavaScript for the scripts in its folder and the command-line tools its instructions call (curl, tsx and node). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash(mkdir -p ./eco-recovery-evidence), Bash(circle --version), Bash(circle wallet status --output json), Bash(circle gateway deposit --help), Bash(circle wallet execute --help), Bash(circle contract query --help), Bash(circle wallet list --chain * --type agent --output json), Bash(circle wallet balance --address * --chain * --output json), Bash(circle gateway balance --address * --chain * --output json), Bash(circle transaction list --address * --chain * --operation transfer --tx-type outbound --state confirmed --output json), Bash(curl -fsS "https://api.eco.com/circle-gateway/v2/depositAddresses/*"), Bash(curl -fsS --request POST --url https://quotes.eco.com/api/v3/intents/intentStatus --header "Content-Type: application/json" --data '{"intentHash":"*"}'), Bash(curl -fsS --request POST --url https://quotes.eco.com/api/v3/intents/intentStatus --header "Content-Type: application/json" --data '{"intentCreatedHash":"*"}'), Bash(*/node_modules/.bin/tsx */scripts/eco-self-refund.mjs *), Bash(node */scripts/sign-eoa-authorization.mjs *).

Does Recover Eco Funds access the network?

SKILL.md names 8 domains. In commands or code: quotes.eco.com, agentic-wallet.circle.com and api.eco.com; the agent is likely to contact these when it follows the instructions. As links in the text: docs.eco.com, github.com, eips.ethereum.org, developers.circle.com and console.circle.com. This is read from the text; nothing was executed.

Is Recover Eco Funds safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Recover Eco Funds use?

Recover Eco Funds is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Recover Eco Funds use?

About 5.2k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4k tokens, read only when the agent opens those files.

What are the alternatives to Recover Eco Funds?

Skills that share tags, products or a category with Recover Eco Funds: Agentic Wallet (coinbase/agentic-wallet-skills, 126 stars), Deposit Qr (Superior-Trade/superior-skills, 215 stars), Alchemy Agentic Gateway (moonpay/skills, 113 stars) and Mppx (internet-court/internet-court-skill, 6.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Recover Eco Funds?

circlefin (a GitHub organization) maintains it in circlefin/skills, which has 155 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 9, 2026.

Source: circlefin/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.