[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-circle-use-agent-wallet":3,"mdc--761zep-key":37,"related-org-circle-use-agent-wallet":1757,"related-repo-circle-use-agent-wallet":1894},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"use-agent-wallet","manage Circle agent wallets for AI","Set up and manage a Circle agent wallet through the `circle` CLI. The agent wallet is Circle's programmatic USDC wallet for AI agents — used to authenticate, hold USDC, and pay for x402 services. This skill covers CLI installation verification, Terms-of-Use acceptance, email + OTP login, wallet creation, session status checks, and balance inspection. Use whenever the user wants to set up, log in to, or inspect the state of their Circle agent wallet, or whenever a downstream skill (like paying for an x402 service or funding the wallet) needs the wallet bootstrapped first. Triggers on: circle wallet login, circle wallet create, circle wallet status, set up Circle agent wallet, terms acceptance, install Circle CLI, x402 setup.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"circle","Circle","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fcircle.png","circlefin",[13,15,17,20,23],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":16,"type":14},"x402",{"name":18,"slug":19,"type":14},"Web3","web3",{"name":21,"slug":22,"type":14},"Payments","payments",{"name":24,"slug":25,"type":14},"Agents","agents",130,"https:\u002F\u002Fgithub.com\u002Fcirclefin\u002Fskills","2026-07-12T08:14:53.237765",null,35,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Circle's open source skills for AI-assisted development.","https:\u002F\u002Fgithub.com\u002Fcirclefin\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fcircle\u002Fskills\u002Fuse-agent-wallet","---\nname: use-agent-wallet\ndescription: \"Set up and manage a Circle agent wallet through the `circle` CLI. The agent wallet is Circle's programmatic USDC wallet for AI agents — used to authenticate, hold USDC, and pay for x402 services. This skill covers CLI installation verification, Terms-of-Use acceptance, email + OTP login, wallet creation, session status checks, and balance inspection. Use whenever the user wants to set up, log in to, or inspect the state of their Circle agent wallet, or whenever a downstream skill (like paying for an x402 service or funding the wallet) needs the wallet bootstrapped first. Triggers on: circle wallet login, circle wallet create, circle wallet status, set up Circle agent wallet, terms acceptance, install Circle CLI, x402 setup.\"\n---\n\n## Overview\n\nThe Circle CLI (`@circle-fin\u002Fcli`, 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.\n\nFor 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\u002Fidentity surface.\n\n## Prerequisites \u002F Setup\n\n### Step 1 — Verify the CLI is installed\n\n```bash\nwhich circle || command -v circle\ncircle --version\n```\n\nIf not installed:\n\n```bash\nnpm install -g @circle-fin\u002Fcli\n```\n\n`circle --version` also surfaces any server-driven update notice (never blocks). If one prints, suggest `npm install -g @circle-fin\u002Fcli@latest` — but only when contextually relevant (session start, or unexpected output), not on every command.\n\n### Step 2 — Check session status\n\n**Always check whether the user is already logged in before attempting login.**\n\n```bash\ncircle wallet status\n```\n\nPossible outcomes:\n\n- **Logged in** — output shows email, wallet type (`agent`), and session expiry. Tell the user \"You're already logged in as `\u003Cemail>`. Continue with this session?\" and skip to Step 4.\n- **Not logged in** — output is `Error: Not logged in. Run 'circle wallet login \u003Cemail> --type agent' to authenticate.` Proceed to Step 3.\n- **Terms not accepted** — output is `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.\n\n## Step 3 — Login (email + OTP, two-step non-interactive flow)\n\nCircle's CLI supports a two-step OTP login designed for AI agents and other non-interactive contexts.\n\n### 3a. Initialize login (request OTP)\n\nAsk the user for their email address (do NOT guess or hardcode). Then:\n\n```bash\ncircle wallet login \u003Cuser-email> --type agent --init\n```\n\n`--type agent` defaults to `agent` so it can be omitted, but pass it explicitly here for consistency with the error text in Step 2.\n\nExpected output:\n\n```\nOTP code sent to user@example.com\nPlease run: circle wallet login --request \u003Crequest-id> --otp \u003Ccode>\n```\n\nParse 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.\n\n### 3b. Complete login (verify OTP)\n\nTell 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:\n\n```bash\ncircle wallet login --type agent --request \u003Crequest-id> --otp \u003Cuser-otp>\n```\n\nOTP format notes:\n\n- Full form: `ABC-123456`\n- Bare digits: `123456` — the CLI prepends the cached prefix automatically\n- The CLI validates the prefix matches what was sent (anti-phishing)\n\nIf successful, output is:\n\n```\nLogged in as user@example.com\n```\n\nTell 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.\n\n### 3c. Verify session\n\n```bash\ncircle wallet status\n```\n\nConfirms the session and surfaces expiry. Proceed to Step 4.\n\n### Logging out \u002F switching accounts\n\n```bash\ncircle wallet logout\n```\n\nUse only when the user explicitly asks to switch accounts.\n\n## Step 4 — Check or create the agent wallet\n\n**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.\n\n```bash\ncircle wallet list --chain BASE --type agent --output json\n```\n\nIf wallets already exist, save the address(es) for the next step.\n\nIf no agent wallets exist:\n\n```bash\ncircle wallet create --output json\n```\n\nCreates 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.\n\n## Step 5 — Check wallet balance\n\nUse the address(es) from Step 4:\n\n```bash\ncircle wallet balance --address \u003Caddr> --chain BASE --output json\n```\n\nIf 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.\n\nIf the user only wants to verify state (not pay yet), stop here. Bootstrap is complete.\n\n## After bootstrap\n\nOnce 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 \u003Cskill>` shows trigger and frontmatter detail, and `circle skill install --tool \u003Chost> --name \u003Cskill>` 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.\n\n## Terms-of-Use Gate\n\nThe 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:\n\n```\nBy using the Circle CLI, you agree to:\n  Terms of Use:    https:\u002F\u002Fagents.circle.com\u002Fterms-of-use\n  Privacy Policy:  https:\u002F\u002Fwww.circle.com\u002Flegal\u002Fprivacy-policy\n\nError: Circle CLI Terms acceptance is required before use.\n  Hint: Set CIRCLE_ACCEPT_TERMS=1 to accept in non-interactive shells (CI, scripts, sandboxed agents).\n```\n\nRun 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.\n\n**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.**\n\n### Read current acceptance status\n\n```bash\ncircle terms show --output json\n```\n\nIf `data.accepted` is `true`, the user has already accepted on this machine. Return to the step that triggered this section.\n\n### Fetch the Terms info to present to the user\n\nWhen `data.accepted` is `false`:\n\n```bash\ncircle terms show --init --output json\n```\n\nThe 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.\n\n### Show the Terms and request consent\n\nTell the user:\n\n> Circle CLI requires acceptance of its Terms of Use and Privacy Policy before I can run any wallet commands.\n>\n> - Terms of Use: `\u003CtermsOfUseUrl from the JSON response>`\n> - Privacy Policy: `\u003CprivacyPolicyUrl from the JSON response>`\n>\n> `\u003CtermsNotice from the JSON response>`\n>\n> Please review both links. Do you accept these Terms and authorize me to record acceptance on your behalf? (yes\u002Fno)\n\n**Wait for an explicit yes\u002Fno.** Ambiguous replies, silence, \"ok\" without context, or \"go ahead\" without referencing the Terms are NOT consent — ask again.\n\n### After explicit consent only\n\n```bash\ncircle terms accept --output json\n```\n\nWhen `data.acceptance.accepted` is `true`, the gate is cleared. Return to the step that triggered this section.\n\nIf the user later asks to revoke acceptance:\n\n```bash\ncircle terms reset\n```\n\nRun this only if the user explicitly asks to revoke. Do NOT suggest or execute a reset proactively.\n\n## Rules\n\n### Security\n\n- NEVER guess or hardcode the user's email address for agent wallet login.\n- OTP codes provided during an active authentication session are safe to handle — accept them in chat, use them immediately, do not retain or reuse afterward.\n- NEVER include real private keys, API keys, or other persistent secrets in skill files or persist them anywhere.\n- NEVER run `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.\n- ALWAYS show the live `termsOfUseUrl`, `privacyPolicyUrl`, and `termsNotice` returned by `circle terms show --init --output json` when prompting for consent. Do NOT summarize, paraphrase, or hardcode them.\n- If the user declines the Terms, stop the flow. Do not retry, work around the gate, or call `circle terms reset` \u002F `circle terms accept`.\n\n### Best practices\n\n- ALWAYS check `circle wallet status` before attempting login. Many session \"failures\" are actually just stale assumptions.\n- Parse and store the request ID from `circle wallet login --init` output — you'll need it for the OTP completion step.\n- Request IDs are single-use and expire after 10 minutes. If you see \"Invalid or expired request ID\", restart from `--init`.\n- If a `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.\n- For general CLI rules (`--output json`, `--chain`, `--help`-first, follow-up phrasing, confirmation defaults), see the `use-circle-cli` master skill's Rules section — they apply here too.\n\n## Reference Links\n\n- Setup walkthrough (full bootstrap doc): https:\u002F\u002Fagents.circle.com\u002Fskills\u002Fsetup.md\n- Login flow detail: https:\u002F\u002Fagents.circle.com\u002Fskills\u002Fwallet-login.md\n- CLI package on npm: `@circle-fin\u002Fcli`\n- Circle Developer Docs: https:\u002F\u002Fdevelopers.circle.com\u002Fllms.txt — Always read this when looking for source documentation on Circle products.\n\n## Alternatives\n\nTrigger the `pay-via-agent-wallet` skill instead when:\n\n- The user wants to call, pay for, or use a paid x402 service.\n- The user mentions `circle services search`, `circle services inspect`, or `circle services pay`.\n- A downstream task requires money to move out of the agent wallet to a paid endpoint.\n\nTrigger the `fund-agent-wallet` skill instead when:\n\n- The agent wallet has 0 USDC and the user wants to add funds.\n- The user mentions deposit, fiat on-ramp, fiat purchase, QR-code transfer, or Gateway deposit.\n- A payment flow blocks because of insufficient balance.\n\nTrigger the `agent-wallet-policy` skill instead when:\n\n- The user wants to set, view, or reset spending limits on the wallet.\n- The user mentions per-tx \u002F daily \u002F weekly \u002F monthly caps, spending policy, or wallet rules.\n\n---\n\nDISCLAIMER: This skill is provided \"as is\" without warranties, is subject to the [Circle Developer Terms](https:\u002F\u002Fconsole.circle.com\u002Flegal\u002Fdeveloper-terms), and output generated may contain errors and\u002For include fee configuration options (including fees directed to Circle); additional details are in the repository [README](https:\u002F\u002Fgithub.com\u002Fcirclefin\u002Fskills\u002Fblob\u002Fmaster\u002FREADME.md).\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,51,73,94,100,107,171,176,206,225,231,239,263,268,349,355,360,366,371,430,448,453,463,468,474,479,555,560,592,597,606,634,640,661,666,672,695,700,706,740,791,796,801,832,853,859,864,926,939,944,950,979,984,1005,1014,1019,1042,1048,1080,1101,1107,1126,1161,1196,1202,1207,1255,1265,1271,1302,1320,1325,1348,1353,1359,1365,1453,1459,1558,1564,1614,1620,1633,1673,1683,1701,1712,1725,1729,1751],{"type":43,"tag":44,"props":45,"children":47},"element","h2",{"id":46},"overview",[48],{"type":49,"value":50},"text","Overview",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55,57,64,66,71],{"type":49,"value":56},"The Circle CLI (",{"type":43,"tag":58,"props":59,"children":61},"code",{"className":60},[],[62],{"type":49,"value":63},"@circle-fin\u002Fcli",{"type":49,"value":65},", command ",{"type":43,"tag":58,"props":67,"children":69},{"className":68},[],[70],{"type":49,"value":8},{"type":49,"value":72},") 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.",{"type":43,"tag":52,"props":74,"children":75},{},[76,78,84,86,92],{"type":49,"value":77},"For an overview of the Circle CLI's ",{"type":43,"tag":79,"props":80,"children":81},"strong",{},[82],{"type":49,"value":83},"full",{"type":49,"value":85}," capability set — bridging, smart contract execution, transaction inspection, and more — see the ",{"type":43,"tag":58,"props":87,"children":89},{"className":88},[],[90],{"type":49,"value":91},"use-circle-cli",{"type":49,"value":93}," master skill. This skill is the narrower bootstrap\u002Fidentity surface.",{"type":43,"tag":44,"props":95,"children":97},{"id":96},"prerequisites-setup",[98],{"type":49,"value":99},"Prerequisites \u002F Setup",{"type":43,"tag":101,"props":102,"children":104},"h3",{"id":103},"step-1-verify-the-cli-is-installed",[105],{"type":49,"value":106},"Step 1 — Verify the CLI is installed",{"type":43,"tag":108,"props":109,"children":114},"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","which circle || command -v circle\ncircle --version\n","bash","",[115],{"type":43,"tag":58,"props":116,"children":117},{"__ignoreMap":113},[118,157],{"type":43,"tag":119,"props":120,"children":123},"span",{"class":121,"line":122},"line",1,[124,130,136,142,147,152],{"type":43,"tag":119,"props":125,"children":127},{"style":126},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[128],{"type":49,"value":129},"which",{"type":43,"tag":119,"props":131,"children":133},{"style":132},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[134],{"type":49,"value":135}," circle",{"type":43,"tag":119,"props":137,"children":139},{"style":138},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[140],{"type":49,"value":141}," ||",{"type":43,"tag":119,"props":143,"children":144},{"style":126},[145],{"type":49,"value":146}," command",{"type":43,"tag":119,"props":148,"children":149},{"style":132},[150],{"type":49,"value":151}," -v",{"type":43,"tag":119,"props":153,"children":154},{"style":132},[155],{"type":49,"value":156}," circle\n",{"type":43,"tag":119,"props":158,"children":160},{"class":121,"line":159},2,[161,166],{"type":43,"tag":119,"props":162,"children":164},{"style":163},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[165],{"type":49,"value":8},{"type":43,"tag":119,"props":167,"children":168},{"style":132},[169],{"type":49,"value":170}," --version\n",{"type":43,"tag":52,"props":172,"children":173},{},[174],{"type":49,"value":175},"If not installed:",{"type":43,"tag":108,"props":177,"children":179},{"className":110,"code":178,"language":112,"meta":113,"style":113},"npm install -g @circle-fin\u002Fcli\n",[180],{"type":43,"tag":58,"props":181,"children":182},{"__ignoreMap":113},[183],{"type":43,"tag":119,"props":184,"children":185},{"class":121,"line":122},[186,191,196,201],{"type":43,"tag":119,"props":187,"children":188},{"style":163},[189],{"type":49,"value":190},"npm",{"type":43,"tag":119,"props":192,"children":193},{"style":132},[194],{"type":49,"value":195}," install",{"type":43,"tag":119,"props":197,"children":198},{"style":132},[199],{"type":49,"value":200}," -g",{"type":43,"tag":119,"props":202,"children":203},{"style":132},[204],{"type":49,"value":205}," @circle-fin\u002Fcli\n",{"type":43,"tag":52,"props":207,"children":208},{},[209,215,217,223],{"type":43,"tag":58,"props":210,"children":212},{"className":211},[],[213],{"type":49,"value":214},"circle --version",{"type":49,"value":216}," also surfaces any server-driven update notice (never blocks). If one prints, suggest ",{"type":43,"tag":58,"props":218,"children":220},{"className":219},[],[221],{"type":49,"value":222},"npm install -g @circle-fin\u002Fcli@latest",{"type":49,"value":224}," — but only when contextually relevant (session start, or unexpected output), not on every command.",{"type":43,"tag":101,"props":226,"children":228},{"id":227},"step-2-check-session-status",[229],{"type":49,"value":230},"Step 2 — Check session status",{"type":43,"tag":52,"props":232,"children":233},{},[234],{"type":43,"tag":79,"props":235,"children":236},{},[237],{"type":49,"value":238},"Always check whether the user is already logged in before attempting login.",{"type":43,"tag":108,"props":240,"children":242},{"className":110,"code":241,"language":112,"meta":113,"style":113},"circle wallet status\n",[243],{"type":43,"tag":58,"props":244,"children":245},{"__ignoreMap":113},[246],{"type":43,"tag":119,"props":247,"children":248},{"class":121,"line":122},[249,253,258],{"type":43,"tag":119,"props":250,"children":251},{"style":163},[252],{"type":49,"value":8},{"type":43,"tag":119,"props":254,"children":255},{"style":132},[256],{"type":49,"value":257}," wallet",{"type":43,"tag":119,"props":259,"children":260},{"style":132},[261],{"type":49,"value":262}," status\n",{"type":43,"tag":52,"props":264,"children":265},{},[266],{"type":49,"value":267},"Possible outcomes:",{"type":43,"tag":269,"props":270,"children":271},"ul",{},[272,299,317],{"type":43,"tag":273,"props":274,"children":275},"li",{},[276,281,283,289,291,297],{"type":43,"tag":79,"props":277,"children":278},{},[279],{"type":49,"value":280},"Logged in",{"type":49,"value":282}," — output shows email, wallet type (",{"type":43,"tag":58,"props":284,"children":286},{"className":285},[],[287],{"type":49,"value":288},"agent",{"type":49,"value":290},"), and session expiry. Tell the user \"You're already logged in as ",{"type":43,"tag":58,"props":292,"children":294},{"className":293},[],[295],{"type":49,"value":296},"\u003Cemail>",{"type":49,"value":298},". Continue with this session?\" and skip to Step 4.",{"type":43,"tag":273,"props":300,"children":301},{},[302,307,309,315],{"type":43,"tag":79,"props":303,"children":304},{},[305],{"type":49,"value":306},"Not logged in",{"type":49,"value":308}," — output is ",{"type":43,"tag":58,"props":310,"children":312},{"className":311},[],[313],{"type":49,"value":314},"Error: Not logged in. Run 'circle wallet login \u003Cemail> --type agent' to authenticate.",{"type":49,"value":316}," Proceed to Step 3.",{"type":43,"tag":273,"props":318,"children":319},{},[320,325,326,332,334,339,341,347],{"type":43,"tag":79,"props":321,"children":322},{},[323],{"type":49,"value":324},"Terms not accepted",{"type":49,"value":308},{"type":43,"tag":58,"props":327,"children":329},{"className":328},[],[330],{"type":49,"value":331},"Error: Circle CLI Terms acceptance is required before use.",{"type":49,"value":333}," Stop and complete the ",{"type":43,"tag":79,"props":335,"children":336},{},[337],{"type":49,"value":338},"Terms-of-Use Gate",{"type":49,"value":340}," below before proceeding. Do NOT run ",{"type":43,"tag":58,"props":342,"children":344},{"className":343},[],[345],{"type":49,"value":346},"circle terms accept",{"type":49,"value":348}," without explicit user consent.",{"type":43,"tag":44,"props":350,"children":352},{"id":351},"step-3-login-email-otp-two-step-non-interactive-flow",[353],{"type":49,"value":354},"Step 3 — Login (email + OTP, two-step non-interactive flow)",{"type":43,"tag":52,"props":356,"children":357},{},[358],{"type":49,"value":359},"Circle's CLI supports a two-step OTP login designed for AI agents and other non-interactive contexts.",{"type":43,"tag":101,"props":361,"children":363},{"id":362},"_3a-initialize-login-request-otp",[364],{"type":49,"value":365},"3a. Initialize login (request OTP)",{"type":43,"tag":52,"props":367,"children":368},{},[369],{"type":49,"value":370},"Ask the user for their email address (do NOT guess or hardcode). Then:",{"type":43,"tag":108,"props":372,"children":374},{"className":110,"code":373,"language":112,"meta":113,"style":113},"circle wallet login \u003Cuser-email> --type agent --init\n",[375],{"type":43,"tag":58,"props":376,"children":377},{"__ignoreMap":113},[378],{"type":43,"tag":119,"props":379,"children":380},{"class":121,"line":122},[381,385,389,394,399,404,410,415,420,425],{"type":43,"tag":119,"props":382,"children":383},{"style":163},[384],{"type":49,"value":8},{"type":43,"tag":119,"props":386,"children":387},{"style":132},[388],{"type":49,"value":257},{"type":43,"tag":119,"props":390,"children":391},{"style":132},[392],{"type":49,"value":393}," login",{"type":43,"tag":119,"props":395,"children":396},{"style":138},[397],{"type":49,"value":398}," \u003C",{"type":43,"tag":119,"props":400,"children":401},{"style":132},[402],{"type":49,"value":403},"user-emai",{"type":43,"tag":119,"props":405,"children":407},{"style":406},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[408],{"type":49,"value":409},"l",{"type":43,"tag":119,"props":411,"children":412},{"style":138},[413],{"type":49,"value":414},">",{"type":43,"tag":119,"props":416,"children":417},{"style":132},[418],{"type":49,"value":419}," --type",{"type":43,"tag":119,"props":421,"children":422},{"style":132},[423],{"type":49,"value":424}," agent",{"type":43,"tag":119,"props":426,"children":427},{"style":132},[428],{"type":49,"value":429}," --init\n",{"type":43,"tag":52,"props":431,"children":432},{},[433,439,441,446],{"type":43,"tag":58,"props":434,"children":436},{"className":435},[],[437],{"type":49,"value":438},"--type agent",{"type":49,"value":440}," defaults to ",{"type":43,"tag":58,"props":442,"children":444},{"className":443},[],[445],{"type":49,"value":288},{"type":49,"value":447}," so it can be omitted, but pass it explicitly here for consistency with the error text in Step 2.",{"type":43,"tag":52,"props":449,"children":450},{},[451],{"type":49,"value":452},"Expected output:",{"type":43,"tag":108,"props":454,"children":458},{"className":455,"code":457,"language":49},[456],"language-text","OTP code sent to user@example.com\nPlease run: circle wallet login --request \u003Crequest-id> --otp \u003Ccode>\n",[459],{"type":43,"tag":58,"props":460,"children":461},{"__ignoreMap":113},[462],{"type":49,"value":457},{"type":43,"tag":52,"props":464,"children":465},{},[466],{"type":49,"value":467},"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.",{"type":43,"tag":101,"props":469,"children":471},{"id":470},"_3b-complete-login-verify-otp",[472],{"type":49,"value":473},"3b. Complete login (verify OTP)",{"type":43,"tag":52,"props":475,"children":476},{},[477],{"type":49,"value":478},"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:",{"type":43,"tag":108,"props":480,"children":482},{"className":110,"code":481,"language":112,"meta":113,"style":113},"circle wallet login --type agent --request \u003Crequest-id> --otp \u003Cuser-otp>\n",[483],{"type":43,"tag":58,"props":484,"children":485},{"__ignoreMap":113},[486],{"type":43,"tag":119,"props":487,"children":488},{"class":121,"line":122},[489,493,497,501,505,509,514,518,523,528,532,537,541,546,550],{"type":43,"tag":119,"props":490,"children":491},{"style":163},[492],{"type":49,"value":8},{"type":43,"tag":119,"props":494,"children":495},{"style":132},[496],{"type":49,"value":257},{"type":43,"tag":119,"props":498,"children":499},{"style":132},[500],{"type":49,"value":393},{"type":43,"tag":119,"props":502,"children":503},{"style":132},[504],{"type":49,"value":419},{"type":43,"tag":119,"props":506,"children":507},{"style":132},[508],{"type":49,"value":424},{"type":43,"tag":119,"props":510,"children":511},{"style":132},[512],{"type":49,"value":513}," --request",{"type":43,"tag":119,"props":515,"children":516},{"style":138},[517],{"type":49,"value":398},{"type":43,"tag":119,"props":519,"children":520},{"style":132},[521],{"type":49,"value":522},"request-i",{"type":43,"tag":119,"props":524,"children":525},{"style":406},[526],{"type":49,"value":527},"d",{"type":43,"tag":119,"props":529,"children":530},{"style":138},[531],{"type":49,"value":414},{"type":43,"tag":119,"props":533,"children":534},{"style":132},[535],{"type":49,"value":536}," --otp",{"type":43,"tag":119,"props":538,"children":539},{"style":138},[540],{"type":49,"value":398},{"type":43,"tag":119,"props":542,"children":543},{"style":132},[544],{"type":49,"value":545},"user-ot",{"type":43,"tag":119,"props":547,"children":548},{"style":406},[549],{"type":49,"value":52},{"type":43,"tag":119,"props":551,"children":552},{"style":138},[553],{"type":49,"value":554},">\n",{"type":43,"tag":52,"props":556,"children":557},{},[558],{"type":49,"value":559},"OTP format notes:",{"type":43,"tag":269,"props":561,"children":562},{},[563,574,587],{"type":43,"tag":273,"props":564,"children":565},{},[566,568],{"type":49,"value":567},"Full form: ",{"type":43,"tag":58,"props":569,"children":571},{"className":570},[],[572],{"type":49,"value":573},"ABC-123456",{"type":43,"tag":273,"props":575,"children":576},{},[577,579,585],{"type":49,"value":578},"Bare digits: ",{"type":43,"tag":58,"props":580,"children":582},{"className":581},[],[583],{"type":49,"value":584},"123456",{"type":49,"value":586}," — the CLI prepends the cached prefix automatically",{"type":43,"tag":273,"props":588,"children":589},{},[590],{"type":49,"value":591},"The CLI validates the prefix matches what was sent (anti-phishing)",{"type":43,"tag":52,"props":593,"children":594},{},[595],{"type":49,"value":596},"If successful, output is:",{"type":43,"tag":108,"props":598,"children":601},{"className":599,"code":600,"language":49},[456],"Logged in as user@example.com\n",[602],{"type":43,"tag":58,"props":603,"children":604},{"__ignoreMap":113},[605],{"type":49,"value":600},{"type":43,"tag":52,"props":607,"children":608},{},[609,611,617,619,625,626,632],{"type":49,"value":610},"Tell the user \"Successfully logged in\" and continue. If the call fails (",{"type":43,"tag":58,"props":612,"children":614},{"className":613},[],[615],{"type":49,"value":616},"Invalid or expired request ID",{"type":49,"value":618},", ",{"type":43,"tag":58,"props":620,"children":622},{"className":621},[],[623],{"type":49,"value":624},"OTP prefix mismatch",{"type":49,"value":618},{"type":43,"tag":58,"props":627,"children":629},{"className":628},[],[630],{"type":49,"value":631},"Invalid OTP",{"type":49,"value":633},"), restart from 3a to generate a fresh OTP — do NOT loop without telling the user.",{"type":43,"tag":101,"props":635,"children":637},{"id":636},"_3c-verify-session",[638],{"type":49,"value":639},"3c. Verify session",{"type":43,"tag":108,"props":641,"children":642},{"className":110,"code":241,"language":112,"meta":113,"style":113},[643],{"type":43,"tag":58,"props":644,"children":645},{"__ignoreMap":113},[646],{"type":43,"tag":119,"props":647,"children":648},{"class":121,"line":122},[649,653,657],{"type":43,"tag":119,"props":650,"children":651},{"style":163},[652],{"type":49,"value":8},{"type":43,"tag":119,"props":654,"children":655},{"style":132},[656],{"type":49,"value":257},{"type":43,"tag":119,"props":658,"children":659},{"style":132},[660],{"type":49,"value":262},{"type":43,"tag":52,"props":662,"children":663},{},[664],{"type":49,"value":665},"Confirms the session and surfaces expiry. Proceed to Step 4.",{"type":43,"tag":101,"props":667,"children":669},{"id":668},"logging-out-switching-accounts",[670],{"type":49,"value":671},"Logging out \u002F switching accounts",{"type":43,"tag":108,"props":673,"children":675},{"className":110,"code":674,"language":112,"meta":113,"style":113},"circle wallet logout\n",[676],{"type":43,"tag":58,"props":677,"children":678},{"__ignoreMap":113},[679],{"type":43,"tag":119,"props":680,"children":681},{"class":121,"line":122},[682,686,690],{"type":43,"tag":119,"props":683,"children":684},{"style":163},[685],{"type":49,"value":8},{"type":43,"tag":119,"props":687,"children":688},{"style":132},[689],{"type":49,"value":257},{"type":43,"tag":119,"props":691,"children":692},{"style":132},[693],{"type":49,"value":694}," logout\n",{"type":43,"tag":52,"props":696,"children":697},{},[698],{"type":49,"value":699},"Use only when the user explicitly asks to switch accounts.",{"type":43,"tag":44,"props":701,"children":703},{"id":702},"step-4-check-or-create-the-agent-wallet",[704],{"type":49,"value":705},"Step 4 — Check or create the agent wallet",{"type":43,"tag":52,"props":707,"children":708},{},[709,738],{"type":43,"tag":79,"props":710,"children":711},{},[712,714,720,722,728,730,736],{"type":49,"value":713},"The ",{"type":43,"tag":58,"props":715,"children":717},{"className":716},[],[718],{"type":49,"value":719},"--chain",{"type":49,"value":721}," flag is REQUIRED for ",{"type":43,"tag":58,"props":723,"children":725},{"className":724},[],[726],{"type":49,"value":727},"circle wallet list",{"type":49,"value":729}," and ",{"type":43,"tag":58,"props":731,"children":733},{"className":732},[],[734],{"type":49,"value":735},"circle wallet balance",{"type":49,"value":737},".",{"type":49,"value":739}," Use BASE as the default if the user hasn't specified a chain.",{"type":43,"tag":108,"props":741,"children":743},{"className":110,"code":742,"language":112,"meta":113,"style":113},"circle wallet list --chain BASE --type agent --output json\n",[744],{"type":43,"tag":58,"props":745,"children":746},{"__ignoreMap":113},[747],{"type":43,"tag":119,"props":748,"children":749},{"class":121,"line":122},[750,754,758,763,768,773,777,781,786],{"type":43,"tag":119,"props":751,"children":752},{"style":163},[753],{"type":49,"value":8},{"type":43,"tag":119,"props":755,"children":756},{"style":132},[757],{"type":49,"value":257},{"type":43,"tag":119,"props":759,"children":760},{"style":132},[761],{"type":49,"value":762}," list",{"type":43,"tag":119,"props":764,"children":765},{"style":132},[766],{"type":49,"value":767}," --chain",{"type":43,"tag":119,"props":769,"children":770},{"style":132},[771],{"type":49,"value":772}," BASE",{"type":43,"tag":119,"props":774,"children":775},{"style":132},[776],{"type":49,"value":419},{"type":43,"tag":119,"props":778,"children":779},{"style":132},[780],{"type":49,"value":424},{"type":43,"tag":119,"props":782,"children":783},{"style":132},[784],{"type":49,"value":785}," --output",{"type":43,"tag":119,"props":787,"children":788},{"style":132},[789],{"type":49,"value":790}," json\n",{"type":43,"tag":52,"props":792,"children":793},{},[794],{"type":49,"value":795},"If wallets already exist, save the address(es) for the next step.",{"type":43,"tag":52,"props":797,"children":798},{},[799],{"type":49,"value":800},"If no agent wallets exist:",{"type":43,"tag":108,"props":802,"children":804},{"className":110,"code":803,"language":112,"meta":113,"style":113},"circle wallet create --output json\n",[805],{"type":43,"tag":58,"props":806,"children":807},{"__ignoreMap":113},[808],{"type":43,"tag":119,"props":809,"children":810},{"class":121,"line":122},[811,815,819,824,828],{"type":43,"tag":119,"props":812,"children":813},{"style":163},[814],{"type":49,"value":8},{"type":43,"tag":119,"props":816,"children":817},{"style":132},[818],{"type":49,"value":257},{"type":43,"tag":119,"props":820,"children":821},{"style":132},[822],{"type":49,"value":823}," create",{"type":43,"tag":119,"props":825,"children":826},{"style":132},[827],{"type":49,"value":785},{"type":43,"tag":119,"props":829,"children":830},{"style":132},[831],{"type":49,"value":790},{"type":43,"tag":52,"props":833,"children":834},{},[835,837,843,845,851],{"type":49,"value":836},"Creates agent-controlled SCA wallets on each supported EVM chain. The JSON output is an array of ",{"type":43,"tag":58,"props":838,"children":840},{"className":839},[],[841],{"type":49,"value":842},"{ chain, address, ... }",{"type":49,"value":844}," objects — read the ",{"type":43,"tag":58,"props":846,"children":848},{"className":847},[],[849],{"type":49,"value":850},"address",{"type":49,"value":852}," field to save per-chain addresses for Step 5.",{"type":43,"tag":44,"props":854,"children":856},{"id":855},"step-5-check-wallet-balance",[857],{"type":49,"value":858},"Step 5 — Check wallet balance",{"type":43,"tag":52,"props":860,"children":861},{},[862],{"type":49,"value":863},"Use the address(es) from Step 4:",{"type":43,"tag":108,"props":865,"children":867},{"className":110,"code":866,"language":112,"meta":113,"style":113},"circle wallet balance --address \u003Caddr> --chain BASE --output json\n",[868],{"type":43,"tag":58,"props":869,"children":870},{"__ignoreMap":113},[871],{"type":43,"tag":119,"props":872,"children":873},{"class":121,"line":122},[874,878,882,887,892,896,901,906,910,914,918,922],{"type":43,"tag":119,"props":875,"children":876},{"style":163},[877],{"type":49,"value":8},{"type":43,"tag":119,"props":879,"children":880},{"style":132},[881],{"type":49,"value":257},{"type":43,"tag":119,"props":883,"children":884},{"style":132},[885],{"type":49,"value":886}," balance",{"type":43,"tag":119,"props":888,"children":889},{"style":132},[890],{"type":49,"value":891}," --address",{"type":43,"tag":119,"props":893,"children":894},{"style":138},[895],{"type":49,"value":398},{"type":43,"tag":119,"props":897,"children":898},{"style":132},[899],{"type":49,"value":900},"add",{"type":43,"tag":119,"props":902,"children":903},{"style":406},[904],{"type":49,"value":905},"r",{"type":43,"tag":119,"props":907,"children":908},{"style":138},[909],{"type":49,"value":414},{"type":43,"tag":119,"props":911,"children":912},{"style":132},[913],{"type":49,"value":767},{"type":43,"tag":119,"props":915,"children":916},{"style":132},[917],{"type":49,"value":772},{"type":43,"tag":119,"props":919,"children":920},{"style":132},[921],{"type":49,"value":785},{"type":43,"tag":119,"props":923,"children":924},{"style":132},[925],{"type":49,"value":790},{"type":43,"tag":52,"props":927,"children":928},{},[929,931,937],{"type":49,"value":930},"If balance is 0 USDC and the user wants to pay for services, hand off to the ",{"type":43,"tag":58,"props":932,"children":934},{"className":933},[],[935],{"type":49,"value":936},"fund-agent-wallet",{"type":49,"value":938}," skill — it covers built-in fiat on-ramp purchase, direct address transfer with a QR code, and Gateway deposits.",{"type":43,"tag":52,"props":940,"children":941},{},[942],{"type":49,"value":943},"If the user only wants to verify state (not pay yet), stop here. Bootstrap is complete.",{"type":43,"tag":44,"props":945,"children":947},{"id":946},"after-bootstrap",[948],{"type":49,"value":949},"After bootstrap",{"type":43,"tag":52,"props":951,"children":952},{},[953,955,961,963,969,971,977],{"type":49,"value":954},"Once the wallet exists, the user's likely next move is to use it. The CLI exposes its own skill catalog — ",{"type":43,"tag":58,"props":956,"children":958},{"className":957},[],[959],{"type":49,"value":960},"circle skill list",{"type":49,"value":962}," shows what's installable, ",{"type":43,"tag":58,"props":964,"children":966},{"className":965},[],[967],{"type":49,"value":968},"circle skill info --name \u003Cskill>",{"type":49,"value":970}," shows trigger and frontmatter detail, and ",{"type":43,"tag":58,"props":972,"children":974},{"className":973},[],[975],{"type":49,"value":976},"circle skill install --tool \u003Chost> --name \u003Cskill>",{"type":49,"value":978}," 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.",{"type":43,"tag":44,"props":980,"children":982},{"id":981},"terms-of-use-gate",[983],{"type":49,"value":338},{"type":43,"tag":52,"props":985,"children":986},{},[987,989,995,997,1003],{"type":49,"value":988},"The Circle CLI hard-gates every operational ",{"type":43,"tag":58,"props":990,"children":992},{"className":991},[],[993],{"type":49,"value":994},"circle wallet",{"type":49,"value":996}," command (including ",{"type":43,"tag":58,"props":998,"children":1000},{"className":999},[],[1001],{"type":49,"value":1002},"circle wallet status",{"type":49,"value":1004},") until the user has accepted Circle's Terms of Use and Privacy Policy on this machine. The gate surfaces as:",{"type":43,"tag":108,"props":1006,"children":1009},{"className":1007,"code":1008,"language":49},[456],"By using the Circle CLI, you agree to:\n  Terms of Use:    https:\u002F\u002Fagents.circle.com\u002Fterms-of-use\n  Privacy Policy:  https:\u002F\u002Fwww.circle.com\u002Flegal\u002Fprivacy-policy\n\nError: Circle CLI Terms acceptance is required before use.\n  Hint: Set CIRCLE_ACCEPT_TERMS=1 to accept in non-interactive shells (CI, scripts, sandboxed agents).\n",[1010],{"type":43,"tag":58,"props":1011,"children":1012},{"__ignoreMap":113},[1013],{"type":49,"value":1008},{"type":43,"tag":52,"props":1015,"children":1016},{},[1017],{"type":49,"value":1018},"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.",{"type":43,"tag":52,"props":1020,"children":1021},{},[1022],{"type":43,"tag":79,"props":1023,"children":1024},{},[1025,1027,1032,1034,1040],{"type":49,"value":1026},"CRITICAL: The agent MUST show the Terms to the user and obtain explicit consent BEFORE running ",{"type":43,"tag":58,"props":1028,"children":1030},{"className":1029},[],[1031],{"type":49,"value":346},{"type":49,"value":1033},". The agent MUST NEVER accept Circle's Terms of Use or Privacy Policy on the user's behalf. The CLI's ",{"type":43,"tag":58,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":49,"value":1039},"CIRCLE_ACCEPT_TERMS=1",{"type":49,"value":1041}," env-var hint is NOT a workaround the agent may take on its own — ignore it and use the consent flow below.",{"type":43,"tag":101,"props":1043,"children":1045},{"id":1044},"read-current-acceptance-status",[1046],{"type":49,"value":1047},"Read current acceptance status",{"type":43,"tag":108,"props":1049,"children":1051},{"className":110,"code":1050,"language":112,"meta":113,"style":113},"circle terms show --output json\n",[1052],{"type":43,"tag":58,"props":1053,"children":1054},{"__ignoreMap":113},[1055],{"type":43,"tag":119,"props":1056,"children":1057},{"class":121,"line":122},[1058,1062,1067,1072,1076],{"type":43,"tag":119,"props":1059,"children":1060},{"style":163},[1061],{"type":49,"value":8},{"type":43,"tag":119,"props":1063,"children":1064},{"style":132},[1065],{"type":49,"value":1066}," terms",{"type":43,"tag":119,"props":1068,"children":1069},{"style":132},[1070],{"type":49,"value":1071}," show",{"type":43,"tag":119,"props":1073,"children":1074},{"style":132},[1075],{"type":49,"value":785},{"type":43,"tag":119,"props":1077,"children":1078},{"style":132},[1079],{"type":49,"value":790},{"type":43,"tag":52,"props":1081,"children":1082},{},[1083,1085,1091,1093,1099],{"type":49,"value":1084},"If ",{"type":43,"tag":58,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":49,"value":1090},"data.accepted",{"type":49,"value":1092}," is ",{"type":43,"tag":58,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":49,"value":1098},"true",{"type":49,"value":1100},", the user has already accepted on this machine. Return to the step that triggered this section.",{"type":43,"tag":101,"props":1102,"children":1104},{"id":1103},"fetch-the-terms-info-to-present-to-the-user",[1105],{"type":49,"value":1106},"Fetch the Terms info to present to the user",{"type":43,"tag":52,"props":1108,"children":1109},{},[1110,1112,1117,1118,1124],{"type":49,"value":1111},"When ",{"type":43,"tag":58,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":49,"value":1090},{"type":49,"value":1092},{"type":43,"tag":58,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":49,"value":1123},"false",{"type":49,"value":1125},":",{"type":43,"tag":108,"props":1127,"children":1129},{"className":110,"code":1128,"language":112,"meta":113,"style":113},"circle terms show --init --output json\n",[1130],{"type":43,"tag":58,"props":1131,"children":1132},{"__ignoreMap":113},[1133],{"type":43,"tag":119,"props":1134,"children":1135},{"class":121,"line":122},[1136,1140,1144,1148,1153,1157],{"type":43,"tag":119,"props":1137,"children":1138},{"style":163},[1139],{"type":49,"value":8},{"type":43,"tag":119,"props":1141,"children":1142},{"style":132},[1143],{"type":49,"value":1066},{"type":43,"tag":119,"props":1145,"children":1146},{"style":132},[1147],{"type":49,"value":1071},{"type":43,"tag":119,"props":1149,"children":1150},{"style":132},[1151],{"type":49,"value":1152}," --init",{"type":43,"tag":119,"props":1154,"children":1155},{"style":132},[1156],{"type":49,"value":785},{"type":43,"tag":119,"props":1158,"children":1159},{"style":132},[1160],{"type":49,"value":790},{"type":43,"tag":52,"props":1162,"children":1163},{},[1164,1166,1172,1173,1179,1181,1187,1189,1194],{"type":49,"value":1165},"The response includes ",{"type":43,"tag":58,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":49,"value":1171},"termsOfUseUrl",{"type":49,"value":618},{"type":43,"tag":58,"props":1174,"children":1176},{"className":1175},[],[1177],{"type":49,"value":1178},"privacyPolicyUrl",{"type":49,"value":1180},", and ",{"type":43,"tag":58,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":49,"value":1186},"termsNotice",{"type":49,"value":1188},". ",{"type":43,"tag":79,"props":1190,"children":1191},{},[1192],{"type":49,"value":1193},"Use the live values from this response when presenting the Terms — do NOT summarize, paraphrase, or hardcode them.",{"type":49,"value":1195}," They may change between Terms versions.",{"type":43,"tag":101,"props":1197,"children":1199},{"id":1198},"show-the-terms-and-request-consent",[1200],{"type":49,"value":1201},"Show the Terms and request consent",{"type":43,"tag":52,"props":1203,"children":1204},{},[1205],{"type":49,"value":1206},"Tell the user:",{"type":43,"tag":1208,"props":1209,"children":1210},"blockquote",{},[1211,1216,1241,1250],{"type":43,"tag":52,"props":1212,"children":1213},{},[1214],{"type":49,"value":1215},"Circle CLI requires acceptance of its Terms of Use and Privacy Policy before I can run any wallet commands.",{"type":43,"tag":269,"props":1217,"children":1218},{},[1219,1230],{"type":43,"tag":273,"props":1220,"children":1221},{},[1222,1224],{"type":49,"value":1223},"Terms of Use: ",{"type":43,"tag":58,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":49,"value":1229},"\u003CtermsOfUseUrl from the JSON response>",{"type":43,"tag":273,"props":1231,"children":1232},{},[1233,1235],{"type":49,"value":1234},"Privacy Policy: ",{"type":43,"tag":58,"props":1236,"children":1238},{"className":1237},[],[1239],{"type":49,"value":1240},"\u003CprivacyPolicyUrl from the JSON response>",{"type":43,"tag":52,"props":1242,"children":1243},{},[1244],{"type":43,"tag":58,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":49,"value":1249},"\u003CtermsNotice from the JSON response>",{"type":43,"tag":52,"props":1251,"children":1252},{},[1253],{"type":49,"value":1254},"Please review both links. Do you accept these Terms and authorize me to record acceptance on your behalf? (yes\u002Fno)",{"type":43,"tag":52,"props":1256,"children":1257},{},[1258,1263],{"type":43,"tag":79,"props":1259,"children":1260},{},[1261],{"type":49,"value":1262},"Wait for an explicit yes\u002Fno.",{"type":49,"value":1264}," Ambiguous replies, silence, \"ok\" without context, or \"go ahead\" without referencing the Terms are NOT consent — ask again.",{"type":43,"tag":101,"props":1266,"children":1268},{"id":1267},"after-explicit-consent-only",[1269],{"type":49,"value":1270},"After explicit consent only",{"type":43,"tag":108,"props":1272,"children":1274},{"className":110,"code":1273,"language":112,"meta":113,"style":113},"circle terms accept --output json\n",[1275],{"type":43,"tag":58,"props":1276,"children":1277},{"__ignoreMap":113},[1278],{"type":43,"tag":119,"props":1279,"children":1280},{"class":121,"line":122},[1281,1285,1289,1294,1298],{"type":43,"tag":119,"props":1282,"children":1283},{"style":163},[1284],{"type":49,"value":8},{"type":43,"tag":119,"props":1286,"children":1287},{"style":132},[1288],{"type":49,"value":1066},{"type":43,"tag":119,"props":1290,"children":1291},{"style":132},[1292],{"type":49,"value":1293}," accept",{"type":43,"tag":119,"props":1295,"children":1296},{"style":132},[1297],{"type":49,"value":785},{"type":43,"tag":119,"props":1299,"children":1300},{"style":132},[1301],{"type":49,"value":790},{"type":43,"tag":52,"props":1303,"children":1304},{},[1305,1306,1312,1313,1318],{"type":49,"value":1111},{"type":43,"tag":58,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":49,"value":1311},"data.acceptance.accepted",{"type":49,"value":1092},{"type":43,"tag":58,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":49,"value":1098},{"type":49,"value":1319},", the gate is cleared. Return to the step that triggered this section.",{"type":43,"tag":52,"props":1321,"children":1322},{},[1323],{"type":49,"value":1324},"If the user later asks to revoke acceptance:",{"type":43,"tag":108,"props":1326,"children":1328},{"className":110,"code":1327,"language":112,"meta":113,"style":113},"circle terms reset\n",[1329],{"type":43,"tag":58,"props":1330,"children":1331},{"__ignoreMap":113},[1332],{"type":43,"tag":119,"props":1333,"children":1334},{"class":121,"line":122},[1335,1339,1343],{"type":43,"tag":119,"props":1336,"children":1337},{"style":163},[1338],{"type":49,"value":8},{"type":43,"tag":119,"props":1340,"children":1341},{"style":132},[1342],{"type":49,"value":1066},{"type":43,"tag":119,"props":1344,"children":1345},{"style":132},[1346],{"type":49,"value":1347}," reset\n",{"type":43,"tag":52,"props":1349,"children":1350},{},[1351],{"type":49,"value":1352},"Run this only if the user explicitly asks to revoke. Do NOT suggest or execute a reset proactively.",{"type":43,"tag":44,"props":1354,"children":1356},{"id":1355},"rules",[1357],{"type":49,"value":1358},"Rules",{"type":43,"tag":101,"props":1360,"children":1362},{"id":1361},"security",[1363],{"type":49,"value":1364},"Security",{"type":43,"tag":269,"props":1366,"children":1367},{},[1368,1373,1378,1383,1402,1434],{"type":43,"tag":273,"props":1369,"children":1370},{},[1371],{"type":49,"value":1372},"NEVER guess or hardcode the user's email address for agent wallet login.",{"type":43,"tag":273,"props":1374,"children":1375},{},[1376],{"type":49,"value":1377},"OTP codes provided during an active authentication session are safe to handle — accept them in chat, use them immediately, do not retain or reuse afterward.",{"type":43,"tag":273,"props":1379,"children":1380},{},[1381],{"type":49,"value":1382},"NEVER include real private keys, API keys, or other persistent secrets in skill files or persist them anywhere.",{"type":43,"tag":273,"props":1384,"children":1385},{},[1386,1388,1393,1395,1400],{"type":49,"value":1387},"NEVER run ",{"type":43,"tag":58,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":49,"value":346},{"type":49,"value":1394}," 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 ",{"type":43,"tag":58,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":49,"value":346},{"type":49,"value":1401}," automatically as part of error recovery, retries, or any flow the user has not explicitly approved.",{"type":43,"tag":273,"props":1403,"children":1404},{},[1405,1407,1412,1413,1418,1419,1424,1426,1432],{"type":49,"value":1406},"ALWAYS show the live ",{"type":43,"tag":58,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":49,"value":1171},{"type":49,"value":618},{"type":43,"tag":58,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":49,"value":1178},{"type":49,"value":1180},{"type":43,"tag":58,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":49,"value":1186},{"type":49,"value":1425}," returned by ",{"type":43,"tag":58,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":49,"value":1431},"circle terms show --init --output json",{"type":49,"value":1433}," when prompting for consent. Do NOT summarize, paraphrase, or hardcode them.",{"type":43,"tag":273,"props":1435,"children":1436},{},[1437,1439,1445,1447,1452],{"type":49,"value":1438},"If the user declines the Terms, stop the flow. Do not retry, work around the gate, or call ",{"type":43,"tag":58,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":49,"value":1444},"circle terms reset",{"type":49,"value":1446}," \u002F ",{"type":43,"tag":58,"props":1448,"children":1450},{"className":1449},[],[1451],{"type":49,"value":346},{"type":49,"value":737},{"type":43,"tag":101,"props":1454,"children":1456},{"id":1455},"best-practices",[1457],{"type":49,"value":1458},"Best practices",{"type":43,"tag":269,"props":1460,"children":1461},{},[1462,1474,1487,1499,1525],{"type":43,"tag":273,"props":1463,"children":1464},{},[1465,1467,1472],{"type":49,"value":1466},"ALWAYS check ",{"type":43,"tag":58,"props":1468,"children":1470},{"className":1469},[],[1471],{"type":49,"value":1002},{"type":49,"value":1473}," before attempting login. Many session \"failures\" are actually just stale assumptions.",{"type":43,"tag":273,"props":1475,"children":1476},{},[1477,1479,1485],{"type":49,"value":1478},"Parse and store the request ID from ",{"type":43,"tag":58,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":49,"value":1484},"circle wallet login --init",{"type":49,"value":1486}," output — you'll need it for the OTP completion step.",{"type":43,"tag":273,"props":1488,"children":1489},{},[1490,1492,1498],{"type":49,"value":1491},"Request IDs are single-use and expire after 10 minutes. If you see \"Invalid or expired request ID\", restart from ",{"type":43,"tag":58,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":49,"value":1497},"--init",{"type":49,"value":737},{"type":43,"tag":273,"props":1500,"children":1501},{},[1502,1504,1509,1511,1516,1518,1523],{"type":49,"value":1503},"If a ",{"type":43,"tag":58,"props":1505,"children":1507},{"className":1506},[],[1508],{"type":49,"value":8},{"type":49,"value":1510}," command causes friction during setup (unexpected error, confusing output, missing capability), file feedback per the ",{"type":43,"tag":58,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":49,"value":91},{"type":49,"value":1517}," skill's ",{"type":43,"tag":79,"props":1519,"children":1520},{},[1521],{"type":49,"value":1522},"Report friction (feedback)",{"type":49,"value":1524}," section.",{"type":43,"tag":273,"props":1526,"children":1527},{},[1528,1530,1536,1537,1542,1543,1549,1551,1556],{"type":49,"value":1529},"For general CLI rules (",{"type":43,"tag":58,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":49,"value":1535},"--output json",{"type":49,"value":618},{"type":43,"tag":58,"props":1538,"children":1540},{"className":1539},[],[1541],{"type":49,"value":719},{"type":49,"value":618},{"type":43,"tag":58,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":49,"value":1548},"--help",{"type":49,"value":1550},"-first, follow-up phrasing, confirmation defaults), see the ",{"type":43,"tag":58,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":49,"value":91},{"type":49,"value":1557}," master skill's Rules section — they apply here too.",{"type":43,"tag":44,"props":1559,"children":1561},{"id":1560},"reference-links",[1562],{"type":49,"value":1563},"Reference Links",{"type":43,"tag":269,"props":1565,"children":1566},{},[1567,1580,1591,1601],{"type":43,"tag":273,"props":1568,"children":1569},{},[1570,1572],{"type":49,"value":1571},"Setup walkthrough (full bootstrap doc): ",{"type":43,"tag":1573,"props":1574,"children":1578},"a",{"href":1575,"rel":1576},"https:\u002F\u002Fagents.circle.com\u002Fskills\u002Fsetup.md",[1577],"nofollow",[1579],{"type":49,"value":1575},{"type":43,"tag":273,"props":1581,"children":1582},{},[1583,1585],{"type":49,"value":1584},"Login flow detail: ",{"type":43,"tag":1573,"props":1586,"children":1589},{"href":1587,"rel":1588},"https:\u002F\u002Fagents.circle.com\u002Fskills\u002Fwallet-login.md",[1577],[1590],{"type":49,"value":1587},{"type":43,"tag":273,"props":1592,"children":1593},{},[1594,1596],{"type":49,"value":1595},"CLI package on npm: ",{"type":43,"tag":58,"props":1597,"children":1599},{"className":1598},[],[1600],{"type":49,"value":63},{"type":43,"tag":273,"props":1602,"children":1603},{},[1604,1606,1612],{"type":49,"value":1605},"Circle Developer Docs: ",{"type":43,"tag":1573,"props":1607,"children":1610},{"href":1608,"rel":1609},"https:\u002F\u002Fdevelopers.circle.com\u002Fllms.txt",[1577],[1611],{"type":49,"value":1608},{"type":49,"value":1613}," — Always read this when looking for source documentation on Circle products.",{"type":43,"tag":44,"props":1615,"children":1617},{"id":1616},"alternatives",[1618],{"type":49,"value":1619},"Alternatives",{"type":43,"tag":52,"props":1621,"children":1622},{},[1623,1625,1631],{"type":49,"value":1624},"Trigger the ",{"type":43,"tag":58,"props":1626,"children":1628},{"className":1627},[],[1629],{"type":49,"value":1630},"pay-via-agent-wallet",{"type":49,"value":1632}," skill instead when:",{"type":43,"tag":269,"props":1634,"children":1635},{},[1636,1641,1668],{"type":43,"tag":273,"props":1637,"children":1638},{},[1639],{"type":49,"value":1640},"The user wants to call, pay for, or use a paid x402 service.",{"type":43,"tag":273,"props":1642,"children":1643},{},[1644,1646,1652,1653,1659,1661,1667],{"type":49,"value":1645},"The user mentions ",{"type":43,"tag":58,"props":1647,"children":1649},{"className":1648},[],[1650],{"type":49,"value":1651},"circle services search",{"type":49,"value":618},{"type":43,"tag":58,"props":1654,"children":1656},{"className":1655},[],[1657],{"type":49,"value":1658},"circle services inspect",{"type":49,"value":1660},", or ",{"type":43,"tag":58,"props":1662,"children":1664},{"className":1663},[],[1665],{"type":49,"value":1666},"circle services pay",{"type":49,"value":737},{"type":43,"tag":273,"props":1669,"children":1670},{},[1671],{"type":49,"value":1672},"A downstream task requires money to move out of the agent wallet to a paid endpoint.",{"type":43,"tag":52,"props":1674,"children":1675},{},[1676,1677,1682],{"type":49,"value":1624},{"type":43,"tag":58,"props":1678,"children":1680},{"className":1679},[],[1681],{"type":49,"value":936},{"type":49,"value":1632},{"type":43,"tag":269,"props":1684,"children":1685},{},[1686,1691,1696],{"type":43,"tag":273,"props":1687,"children":1688},{},[1689],{"type":49,"value":1690},"The agent wallet has 0 USDC and the user wants to add funds.",{"type":43,"tag":273,"props":1692,"children":1693},{},[1694],{"type":49,"value":1695},"The user mentions deposit, fiat on-ramp, fiat purchase, QR-code transfer, or Gateway deposit.",{"type":43,"tag":273,"props":1697,"children":1698},{},[1699],{"type":49,"value":1700},"A payment flow blocks because of insufficient balance.",{"type":43,"tag":52,"props":1702,"children":1703},{},[1704,1705,1711],{"type":49,"value":1624},{"type":43,"tag":58,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":49,"value":1710},"agent-wallet-policy",{"type":49,"value":1632},{"type":43,"tag":269,"props":1713,"children":1714},{},[1715,1720],{"type":43,"tag":273,"props":1716,"children":1717},{},[1718],{"type":49,"value":1719},"The user wants to set, view, or reset spending limits on the wallet.",{"type":43,"tag":273,"props":1721,"children":1722},{},[1723],{"type":49,"value":1724},"The user mentions per-tx \u002F daily \u002F weekly \u002F monthly caps, spending policy, or wallet rules.",{"type":43,"tag":1726,"props":1727,"children":1728},"hr",{},[],{"type":43,"tag":52,"props":1730,"children":1731},{},[1732,1734,1741,1743,1750],{"type":49,"value":1733},"DISCLAIMER: This skill is provided \"as is\" without warranties, is subject to the ",{"type":43,"tag":1573,"props":1735,"children":1738},{"href":1736,"rel":1737},"https:\u002F\u002Fconsole.circle.com\u002Flegal\u002Fdeveloper-terms",[1577],[1739],{"type":49,"value":1740},"Circle Developer Terms",{"type":49,"value":1742},", and output generated may contain errors and\u002For include fee configuration options (including fees directed to Circle); additional details are in the repository ",{"type":43,"tag":1573,"props":1744,"children":1747},{"href":1745,"rel":1746},"https:\u002F\u002Fgithub.com\u002Fcirclefin\u002Fskills\u002Fblob\u002Fmaster\u002FREADME.md",[1577],[1748],{"type":49,"value":1749},"README",{"type":49,"value":737},{"type":43,"tag":1752,"props":1753,"children":1754},"style",{},[1755],{"type":49,"value":1756},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1758,"total":1893},[1759,1772,1784,1797,1807,1819,1830,1841,1849,1862,1872,1883],{"slug":1760,"name":1760,"fn":1761,"description":1762,"org":1763,"tags":1764,"stars":26,"repoUrl":27,"updatedAt":1771},"accept-agent-payments","monetize agent resources with Circle payments","Use 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, x402, HTTP 402, or Agent Marketplace listing. Triggers on: charge agents, sell to agents, paid API, monetize endpoint, micropayments, nanopayments seller, x402 seller, accept USDC, service listing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1765,1768,1769,1770],{"name":1766,"slug":1767,"type":14},"API Development","api-development",{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":16,"slug":16,"type":14},"2026-07-12T08:15:01.981685",{"slug":1710,"name":1710,"fn":1773,"description":1774,"org":1775,"tags":1776,"stars":26,"repoUrl":27,"updatedAt":1783},"inspect Circle agent wallet spending policies","View spending policy on a Circle agent wallet — per-transaction, daily, weekly, and monthly USDC caps via the `circle` CLI. Use when the user wants to inspect current limits. Setting or resetting limits requires OTP confirmation in an interactive terminal session — the agent hands the user a verbatim command to run themselves; the OTP must never pass through agent storage. Mainnet-only — testnet chains are rejected. Triggers on: spending limit, spending policy, per-tx cap, daily cap, weekly cap, monthly cap, wallet rules, OTP confirmation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1777,1778,1781,1782],{"name":9,"slug":8,"type":14},{"name":1779,"slug":1780,"type":14},"CLI","cli",{"name":21,"slug":22,"type":14},{"name":1364,"slug":1361,"type":14},"2026-07-12T08:14:58.279437",{"slug":1785,"name":1785,"fn":1786,"description":1787,"org":1788,"tags":1789,"stars":26,"repoUrl":27,"updatedAt":1796},"bridge-stablecoin","build USDC bridging with Circle SDKs","Build USDC bridging with Circle App Kit or standalone Bridge Kit SDK and Crosschain Transfer Protocol (CCTP). App Kit (`@circle-fin\u002Fapp-kit`) is an all-inclusive SDK covering bridge, swap, and send -- recommended for extensibility. Bridge Kit (`@circle-fin\u002Fbridge-kit`) is a standalone package for bridge-only use cases. Neither requires a kit key for bridge operations. Supports bridging USDC between EVM chains, between EVM chains and Solana, and between any two chains on Circle Wallets (i.e Developer-Controlled Wallets or Programmable wallets). Use when: bridge USDC, setting up Bridge Kit adapters (Viem, Ethers, Solana Kit, Circle Wallets), handling bridge events, collecting custom fees, configuring transfer speed, or using the Forwarding Service. Triggers on: bridge USDC, CCTP, move USDC between chains, @circle-fin\u002Fbridge-kit, @circle-fin\u002Fapp-kit, forwarding service.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1790,1791,1792,1795],{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":1793,"slug":1794,"type":14},"SDK","sdk",{"name":18,"slug":19,"type":14},"2026-07-12T08:14:55.784905",{"slug":936,"name":936,"fn":1798,"description":1799,"org":1800,"tags":1801,"stars":26,"repoUrl":27,"updatedAt":1806},"fund Circle agent wallets with USDC","Fund a Circle agent wallet with USDC via the `circle` CLI. payments are gas-abstracted. users can pay with USDC only, no ETH required. Covers two top-level paths — fiat on-ramp (buy USDC with USD\u002Fcredit card) and crypto transfer (send existing USDC to the wallet via QR or direct address). Also covers Gateway deposits (eco vs direct sub-paths) for the Nanopayments balance used by paid services. Use when the user wants to add USDC to their agent wallet, top up after a low balance, deposit into Gateway, or pick the right funding method. Triggers on: fund agent wallet, add USDC, fiat on-ramp, Gateway deposit, eco deposit, direct deposit, top up wallet, withdraw USDC, nanopayments.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1802,1803,1804,1805],{"name":9,"slug":8,"type":14},{"name":1779,"slug":1780,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:14:54.496643",{"slug":1630,"name":1630,"fn":1808,"description":1809,"org":1810,"tags":1811,"stars":26,"repoUrl":27,"updatedAt":1818},"process payments with Circle agent wallet","Use this skill when the user wants to call a paid API, look something up online, search for data, get prices or odds or stats, or use any paid service with automatic USDC payment. Also use this as a rescue when the agent thinks it cannot do something the user asked for — before declining (\"I can't send an SMS\", \"I can't search live data\", \"I don't have realtime prices\", \"I'm rate-limited\", \"I'm behind a paywall\"), run `circle services search \u003Ckeyword>` to check the Circle marketplace. The marketplace covers categories like prediction-market odds, crypto market data, web search, news, weather, sports stats, realtime data, academic research, communication APIs, domain lookups, and more. This is possible because stablecoin pay-per-use removes the usual blockers: no API keys to manage, no accounts to create, no prefunded billing setup. Activate even when the user doesn't mention Circle by name. Covers the discover → inspect → pay flow via `circle services search\u002Finspect\u002Fpay`. Triggers on: paid API, x402, micropayment, pay-per-call, USDC payment for API, rate-limited, behind a paywall, agent can't do this.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1812,1813,1816,1817],{"name":1766,"slug":1767,"type":14},{"name":1814,"slug":1815,"type":14},"Automation","automation",{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},"2026-07-12T08:15:00.744635",{"slug":1820,"name":1820,"fn":1821,"description":1822,"org":1823,"tags":1824,"stars":26,"repoUrl":27,"updatedAt":1829},"swap-tokens","build token swap functionality with Circle","Build token swap functionality with Circle App Kit or standalone Swap Kit SDKs. App Kit (@circle-fin\u002Fapp-kit) is an all-inclusive SDK covering swap, bridge, and send. Swap Kit (@circle-fin\u002Fswap-kit) is standalone for swap-only use cases. Both require a kit key and run server-side only. Swap runs on mainnet chains and on Arc Testnet. Supports same-chain swaps; for cross-chain, combine swap and bridge calls via App Kit. Use when: swapping tokens, exchanging stablecoins, converting USDT to USDC, setting up swap adapters, estimating swap rates, configuring slippage or stop limits, collecting custom swap fees, or combining swap and bridge for cross-chain token movement. Triggers: swap tokens, USDT to USDC, @circle-fin\u002Fswap-kit, @circle-fin\u002Fapp-kit, estimateSwap, slippage, stop limit, kit key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1825,1826,1827,1828],{"name":1766,"slug":1767,"type":14},{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:14:48.147148",{"slug":1831,"name":1831,"fn":1832,"description":1833,"org":1834,"tags":1835,"stars":26,"repoUrl":27,"updatedAt":1840},"unify-balance","manage cross-chain USDC balances with Circle","Build unified cross-chain USDC balance management with Circle Unified Balance Kit SDK via App Kit (`@circle-fin\u002Fapp-kit`) or standalone (`@circle-fin\u002Funified-balance-kit`). Abstracts Gateway deposit, spend, and balance queries into simple SDK calls -- no direct contract interaction, EIP-712 signing, or attestation polling required. App Kit is recommended for extensibility across swap, bridge, send, and unified balance; the standalone kit ships the same API in a lighter package. Neither requires a kit key. Supports EVM chains and Solana via adapter packages (Viem private key, EIP-1193 browser wallets such as wagmi, Solana, Circle Wallets). Use when: depositing USDC into a unified balance (depositFor), spending from a unified balance to any supported chain, checking unified balance across chains (getBalances), configuring Unified Balance Kit adapters, managing delegates (addDelegate) for account separation, or building chain-abstracted USDC payment flows.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1836,1837,1838,1839],{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":1793,"slug":1794,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:14:50.682387",{"slug":4,"name":4,"fn":5,"description":6,"org":1842,"tags":1843,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1844,1845,1846,1847,1848],{"name":24,"slug":25,"type":14},{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},{"name":16,"slug":16,"type":14},{"slug":1850,"name":1850,"fn":1851,"description":1852,"org":1853,"tags":1854,"stars":26,"repoUrl":27,"updatedAt":1861},"use-arc","build applications on Circle Arc blockchain","Provide instructions on how to build with Arc, Circle's blockchain where USDC is the native gas token. Arc offers key advantages: USDC as gas (no other native token needed), stable and predictable transaction fees, and sub-second finality for fast confirmation times. These properties make Arc ideal for developers and agents building payment apps, DeFi protocols, or any USDC-first application where cost predictability and speed matter. Use skill when Arc or Arc Testnet is mentioned, working with any smart contracts related to Arc, configuring Arc in blockchain projects, bridging USDC to Arc via CCTP, or building USDC-first applications. Triggers: Arc, Arc Testnet, USDC gas, deploy to Arc, Arc chain, stable fees, fast finality.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1855,1858,1859,1860],{"name":1856,"slug":1857,"type":14},"Blockchain","blockchain",{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:14:45.491427",{"slug":91,"name":91,"fn":1863,"description":1864,"org":1865,"tags":1866,"stars":26,"repoUrl":27,"updatedAt":1871},"perform onchain stablecoin operations via CLI","Use this skill when the user wants to do anything onchain with stablecoins, USDC, or Circle through a CLI — paying for APIs, sending USDC, bridging, checking balances, or managing spending. **Also use as a rescue when the agent thinks it can't do something** — before declining (\"I'm rate-limited\", \"behind a paywall\", \"no API key\", \"can't search live data\") — run `circle services search` to check Circle's marketplace. Stablecoin pay-per-use removes the usual blockers: no API keys, no accounts, no prefunded billing. Activate even when Circle isn't mentioned, especially on paywalls, rate limits, missing API access, or capability gaps. Master skill; routes to narrower agent-wallet skills. Triggers on: paywall, rate-limited, no API key, can't access live data, paid API, Circle CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1867,1868,1869,1870],{"name":9,"slug":8,"type":14},{"name":1779,"slug":1780,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:14:51.977061",{"slug":1873,"name":1873,"fn":1874,"description":1875,"org":1876,"tags":1877,"stars":26,"repoUrl":27,"updatedAt":1882},"use-circle-wallets","implement Circle wallet solutions","Choose and implement the right Circle wallet type for your application. Compares developer-controlled, user-controlled, and modular (passkey) wallets across custody model, key management, account types, blockchain support, and use cases. Use whenever blockchain wallet integrations are required for onchain application development. Triggers on: which wallet, choose wallet, wallet comparison, EOA vs SCA vs Modular Wallet, custody model, programmable wallets.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1878,1879,1880,1881],{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":1364,"slug":1361,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:14:57.048087",{"slug":1884,"name":1884,"fn":1885,"description":1886,"org":1887,"tags":1888,"stars":26,"repoUrl":27,"updatedAt":1892},"use-developer-controlled-wallets","manage Circle developer-controlled wallets","Create and manage Circle developer-controlled wallets where the application retains full custody of wallet keys on behalf of end-users. Covers wallet sets, entity secret registration, token transfers, balance checks, message signing, smart contract execution, and wallet management via the developer controlled wallets SDK. Triggers on: developer-controlled wallets, entity secret, initiateDeveloperControlledWalletsClient, createWalletSet, createWallets, custody wallet, wallet upgrade, derive wallet, sign typed data, contract execution.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1889,1890,1891],{"name":21,"slug":22,"type":14},{"name":1364,"slug":1361,"type":14},{"name":18,"slug":19,"type":14},"2026-07-12T08:15:05.994959",17,{"items":1895,"total":1893},[1896,1903,1910,1917,1924,1931,1938],{"slug":1760,"name":1760,"fn":1761,"description":1762,"org":1897,"tags":1898,"stars":26,"repoUrl":27,"updatedAt":1771},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1899,1900,1901,1902],{"name":1766,"slug":1767,"type":14},{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":16,"slug":16,"type":14},{"slug":1710,"name":1710,"fn":1773,"description":1774,"org":1904,"tags":1905,"stars":26,"repoUrl":27,"updatedAt":1783},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1906,1907,1908,1909],{"name":9,"slug":8,"type":14},{"name":1779,"slug":1780,"type":14},{"name":21,"slug":22,"type":14},{"name":1364,"slug":1361,"type":14},{"slug":1785,"name":1785,"fn":1786,"description":1787,"org":1911,"tags":1912,"stars":26,"repoUrl":27,"updatedAt":1796},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1913,1914,1915,1916],{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":1793,"slug":1794,"type":14},{"name":18,"slug":19,"type":14},{"slug":936,"name":936,"fn":1798,"description":1799,"org":1918,"tags":1919,"stars":26,"repoUrl":27,"updatedAt":1806},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1920,1921,1922,1923],{"name":9,"slug":8,"type":14},{"name":1779,"slug":1780,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},{"slug":1630,"name":1630,"fn":1808,"description":1809,"org":1925,"tags":1926,"stars":26,"repoUrl":27,"updatedAt":1818},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1927,1928,1929,1930],{"name":1766,"slug":1767,"type":14},{"name":1814,"slug":1815,"type":14},{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"slug":1820,"name":1820,"fn":1821,"description":1822,"org":1932,"tags":1933,"stars":26,"repoUrl":27,"updatedAt":1829},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1934,1935,1936,1937],{"name":1766,"slug":1767,"type":14},{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":18,"slug":19,"type":14},{"slug":1831,"name":1831,"fn":1832,"description":1833,"org":1939,"tags":1940,"stars":26,"repoUrl":27,"updatedAt":1840},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1941,1942,1943,1944],{"name":9,"slug":8,"type":14},{"name":21,"slug":22,"type":14},{"name":1793,"slug":1794,"type":14},{"name":18,"slug":19,"type":14}]