From circle
Bootstraps a Circle agent wallet via the `circle` CLI: install check, terms acceptance, email+OTP login, wallet creation, and session/balance inspection. Use before paying for x402 services or funding the wallet.
How this skill is triggered — by the user, by Claude, or both
Slash command
/circle:use-agent-walletThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The Circle CLI (`@circle-fin/cli`, command `circle`) provides a programmatic agent wallet — a non-custodial USDC wallet designed for AI agents to authenticate, hold balances, and pay for paid x402 services on Circle's marketplace. This skill is the bootstrap surface for that wallet: install check, terms acceptance, login, wallet creation, and status inspection. After bootstrap completes, downst...
The Circle CLI (@circle-fin/cli, command circle) provides a programmatic agent wallet — a non-custodial USDC wallet designed for AI agents to authenticate, hold balances, and pay for paid x402 services on Circle's marketplace. This skill is the bootstrap surface for that wallet: install check, terms acceptance, login, wallet creation, and status inspection. After bootstrap completes, downstream operations (paying for services, funding, spending policy) hand off to dedicated skills.
For an overview of the Circle CLI's full capability set — bridging, smart contract execution, transaction inspection, and more — see the use-circle-cli master skill. This skill is the narrower bootstrap/identity surface.
which circle || command -v circle
circle --version
If not installed:
npm install -g @circle-fin/cli
circle --version also surfaces any server-driven update notice (never blocks). If one prints, suggest npm install -g @circle-fin/cli@latest — but only when contextually relevant (session start, or unexpected output), not on every command.
Always check whether the user is already logged in before attempting login.
circle wallet status
Possible outcomes:
agent), and session expiry. Tell the user "You're already logged in as <email>. Continue with this session?" and skip to Step 4.Error: Not logged in. Run 'circle wallet login <email> --type agent' to authenticate. Proceed to Step 3.Error: Circle CLI Terms acceptance is required before use. Stop and complete the Terms-of-Use Gate below before proceeding. Do NOT run circle terms accept without explicit user consent.Circle's CLI supports a two-step OTP login designed for AI agents and other non-interactive contexts.
Ask the user for their email address (do NOT guess or hardcode). Then:
circle wallet login <user-email> --type agent --init
--type agent defaults to agent so it can be omitted, but pass it explicitly here for consistency with the error text in Step 2.
Expected output:
OTP code sent to [email protected]
Please run: circle wallet login --request <request-id> --otp <code>
Parse the request ID from the output. It is a UUID; you will need it for the next step. Request IDs expire after 10 minutes and are single-use.
Tell the user: "An OTP code has been sent to your email. Please share it (format: ABC-123456 or just the 6 digits)." If email- or messaging-integration tools are connected (e.g., Gmail or Slack via MCP), the OTP can also be fetched through them — note the option to the user; how to share it is their call. Then:
circle wallet login --type agent --request <request-id> --otp <user-otp>
OTP format notes:
ABC-123456123456 — the CLI prepends the cached prefix automaticallyIf successful, output is:
Logged in as [email protected]
Tell the user "Successfully logged in" and continue. If the call fails (Invalid or expired request ID, OTP prefix mismatch, Invalid OTP), restart from 3a to generate a fresh OTP — do NOT loop without telling the user.
circle wallet status
Confirms the session and surfaces expiry. Proceed to Step 4.
circle wallet logout
Use only when the user explicitly asks to switch accounts.
The --chain flag is REQUIRED for circle wallet list and circle wallet balance. Use BASE as the default if the user hasn't specified a chain.
circle wallet list --chain BASE --type agent --output json
If wallets already exist, save the address(es) for the next step.
If no agent wallets exist:
circle wallet create --output json
Creates agent-controlled SCA wallets on each supported EVM chain. The JSON output is an array of { chain, address, ... } objects — read the address field to save per-chain addresses for Step 5.
Use the address(es) from Step 4:
circle wallet balance --address <addr> --chain BASE --output json
If balance is 0 USDC and the user wants to pay for services, hand off to the fund-agent-wallet skill — it covers built-in fiat on-ramp purchase, direct address transfer with a QR code, and Gateway deposits.
If the user only wants to verify state (not pay yet), stop here. Bootstrap is complete.
Once the wallet exists, the user's likely next move is to use it. The CLI exposes its own skill catalog — circle skill list shows what's installable, circle skill info --name <skill> shows trigger and frontmatter detail, and circle skill install --tool <host> --name <skill> installs one for the current host. Suggest natural follow-ups like funding, paid-service search, or setting a spending limit; prefer permissionless actions (balance, search) over money-moving ones until the user asks.
The Circle CLI hard-gates every operational circle wallet command (including circle wallet status) until the user has accepted Circle's Terms of Use and Privacy Policy on this machine. The gate surfaces as:
By using the Circle CLI, you agree to:
Terms of Use: https://agents.circle.com/terms-of-use
Privacy Policy: https://www.circle.com/legal/privacy-policy
Error: Circle CLI Terms acceptance is required before use.
Hint: Set CIRCLE_ACCEPT_TERMS=1 to accept in non-interactive shells (CI, scripts, sandboxed agents).
Run this section the first time the gate appears (typically during Step 2 or Step 3 above). After acceptance is recorded once, the gate is a no-op and this section is skipped on subsequent runs.
CRITICAL: The agent MUST show the Terms to the user and obtain explicit consent BEFORE running circle terms accept. The agent MUST NEVER accept Circle's Terms of Use or Privacy Policy on the user's behalf. The CLI's CIRCLE_ACCEPT_TERMS=1 env-var hint is NOT a workaround the agent may take on its own — ignore it and use the consent flow below.
circle terms show --output json
If data.accepted is true, the user has already accepted on this machine. Return to the step that triggered this section.
When data.accepted is false:
circle terms show --init --output json
The response includes termsOfUseUrl, privacyPolicyUrl, and termsNotice. Use the live values from this response when presenting the Terms — do NOT summarize, paraphrase, or hardcode them. They may change between Terms versions.
Tell the user:
Circle CLI requires acceptance of its Terms of Use and Privacy Policy before I can run any wallet commands.
- Terms of Use:
<termsOfUseUrl from the JSON response>- Privacy Policy:
<privacyPolicyUrl from the JSON response>
<termsNotice from the JSON response>Please review both links. Do you accept these Terms and authorize me to record acceptance on your behalf? (yes/no)
Wait for an explicit yes/no. Ambiguous replies, silence, "ok" without context, or "go ahead" without referencing the Terms are NOT consent — ask again.
circle terms accept --output json
When data.acceptance.accepted is true, the gate is cleared. Return to the step that triggered this section.
If the user later asks to revoke acceptance:
circle terms reset
Run this only if the user explicitly asks to revoke. Do NOT suggest or execute a reset proactively.
circle terms accept without explicit user consent in the current session. The agent MUST NEVER accept Circle's Terms on the user's behalf, and MUST NEVER call circle terms accept automatically as part of error recovery, retries, or any flow the user has not explicitly approved.termsOfUseUrl, privacyPolicyUrl, and termsNotice returned by circle terms show --init --output json when prompting for consent. Do NOT summarize, paraphrase, or hardcode them.circle terms reset / circle terms accept.circle wallet status before attempting login. Many session "failures" are actually just stale assumptions.circle wallet login --init output — you'll need it for the OTP completion step.--init.circle command causes friction during setup (unexpected error, confusing output, missing capability), file feedback per the use-circle-cli skill's Report friction (feedback) section.--output json, --chain, --help-first, follow-up phrasing, confirmation defaults), see the use-circle-cli master skill's Rules section — they apply here too.@circle-fin/cliTrigger the pay-via-agent-wallet skill instead when:
circle services search, circle services inspect, or circle services pay.Trigger the fund-agent-wallet skill instead when:
Trigger the agent-wallet-policy skill instead when:
DISCLAIMER: This skill is provided "as is" without warranties, is subject to the Circle Developer Terms, and output generated may contain errors and/or include fee configuration options (including fees directed to Circle); additional details are in the repository README.
npx claudepluginhub circlefin/skills --plugin circle-skillsFunds a Circle agent wallet with USDC via the `circle` CLI, covering fiat on-ramp, crypto transfer, and Gateway deposits for Nanopayments. Use when the user needs to add USDC, top up a low balance, or deposit into Gateway.
CLI for Polygon blockchain operations: wallet setup, token swaps, bridging, yield management (Aave, ERC-4626), on-chain identity, reputation, and x402 micropayments. Uses Sequence wallets and Trails DeFi.
Signs in to the Agentic Wallet using email OTP authentication. Use when wallet commands fail with "not signed in" errors or before sending, trading, or funding.