[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-chainlink-chainlink-for-agents":3,"mdc-dcxgb3-key":36,"related-org-chainlink-chainlink-for-agents":2168,"related-repo-chainlink-chainlink-for-agents":2283},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"chainlink-for-agents","manage Chainlink for Agents operations","Register an agent, create chain wallets, discover available workflows, sign Chainlink for Agents requests, handle x402 USDC payments, and sign EIP-712 operation data locally. Use for the Chainlink for Agents \u002Fv1 API, agent wallets, workflow execution, EIP-712 signing, and x402 payments. Do NOT use for generic REST APIs or unrelated Chainlink products.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"chainlink","Chainlink","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fchainlink.png","smartcontractkit",[13,16,19,22],{"name":14,"slug":14,"type":15},"x402","tag",{"name":17,"slug":18,"type":15},"Web3","web3",{"name":20,"slug":21,"type":15},"Payments","payments",{"name":23,"slug":24,"type":15},"Agents","agents",1,"https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink-for-agents","2026-07-12T08:48:51.253226",null,0,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Chainlink for Agents Skill","https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink-for-agents\u002Ftree\u002FHEAD\u002Fchainlink-for-agents","---\nname: chainlink-for-agents\ndescription: Register an agent, create chain wallets, discover available workflows, sign Chainlink for Agents requests, handle x402 USDC payments, and sign EIP-712 operation data locally. Use for the Chainlink for Agents \u002Fv1 API, agent wallets, workflow execution, EIP-712 signing, and x402 payments. Do NOT use for generic REST APIs or unrelated Chainlink products.\n---\n\n# Chainlink for Agents\n\n## Start here\n\n1. **Agent card**: `GET https:\u002F\u002Fagents.chain.link\u002F.well-known\u002Fagent.json` for capabilities, pricing, and available workflows.\n2. **OpenAPI spec**: `GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fopenapi.yaml` for the complete API contract.\n3. **Catalog**: `GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fcatalog` for names and descriptions; `GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fcatalog\u002F{name}` for `input_schema`, pricing, and the execute endpoint.\n4. **Skill guide**: `GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fskills` for this root markdown guide.\n5. **Skill bundle**: `GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fskills\u002Fbundle` to download this guide, references, and helper scripts.\n\n## Quick setup\n\n```bash\nexport CHAINLINK_AGENTS_URL=\"https:\u002F\u002Fagents.chain.link\"\ncurl -sSL \"$CHAINLINK_AGENTS_URL\u002Fv1\u002Fskills\u002Fbundle\" -o chainlink-for-agents.zip\nunzip chainlink-for-agents.zip\ncd chainlink-for-agents\npip install eth-account eth-abi requests\npython scripts\u002Fgenerate_signer_key.py\nexport AGENT_PRIVATE_KEY=\"0x...\"\n```\n\nUse `GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fskills\u002Fbundle` to install the current skill guide, references, and helper scripts together. Commands below assume you are in the extracted `chainlink-for-agents\u002F` skill root.\n\nFund the payment wallet with USDC on Base before calling paid routes. This can be the same address as the EIP-191 agent signer, but it does not have to be.\n\nChainlink for Agents lets an agent register, create chain wallets, run catalog workflows, sign any required EIP-712 operation data locally, and submit signed operations. Your private key stays local.\n\n## Identity vs Payment\n\nProtected routes always identify the agent from the EIP-191 `X-Agent-*` request signature. x402 only proves that a payment authorization was supplied for a priced route; it never acts as an identity fallback and does not register or authenticate the agent.\n\nOne EVM private key can cover all local signing in simple setups:\n\n- **EIP-191 request signing**: authenticate protected API calls with `X-Agent-*` headers.\n- **x402 payment authorization**: sign EIP-3009 USDC payment challenges when a paid route returns HTTP 402.\n- **EIP-712 operation signing**: sign operation data returned by Chainlink for Agents before submit.\n\nIn sponsored-payment setups, the x402 payment wallet may differ from the registered agent signer. Continue signing `X-Agent-*` headers with the registered agent key.\n\nNever send the private key to Chainlink for Agents or any third-party service.\n\n## EIP-191 request signing\n\nMost protected routes require this canonical message, signed with EIP-191 `personal_sign`:\n\n```text\nPOST \u002Fv1\u002Fregister\n1713700000\n0x\u003Csha256_hex_of_exact_request_body_bytes>\n```\n\n- First line: uppercase method, space, escaped path plus raw query string when present.\n- Second line: Unix timestamp in seconds.\n- Third line: only when the request has a body: `0x` plus lowercase SHA-256 of the exact bytes sent.\n\nSend these headers with the request:\n\n| Header | Value |\n|--------|-------|\n| `X-Agent-Address` | Signer address |\n| `X-Agent-Signature` | EIP-191 signature |\n| `X-Agent-Timestamp` | Same Unix timestamp used in the signed message |\n\n```bash\npython scripts\u002Fsign_request.py \\\n  --method GET \\\n  --path \u002Fv1\u002Fwallets\n```\n\nFor registration, `scripts\u002Fsign_registration.py` builds the body and signs `POST \u002Fv1\u002Fregister`:\n\n```bash\npython scripts\u002Fsign_registration.py \\\n  --tos-signature \"$TOS_SIG\"\n```\n\n## 1. Accept Terms and Register\n\nFetch the current Terms of Service typed data:\n\n```bash\ncurl -sS \"$CHAINLINK_AGENTS_URL\u002Fv1\u002Fterms-of-service\"\n```\n\nSign the returned `typed_data` locally to produce `tos_signature`, then call `POST \u002Fv1\u002Fregister` with EIP-191 headers and x402 payment when required. The EIP-191 signer becomes the registered `agent_address`; the x402 payer is payment-only and may be a different wallet.\n\n```json\n{\n  \"tos_signature\": \"\u003CEIP-712 signature over current ToS typed data>\",\n  \"execution_mode\": \"guardrailed\"\n}\n```\n\n`execution_mode` is optional on first registration. `guardrailed` is the restricted mode: it limits the agent to catalog workflows and workflow submit routes. `unrestricted` also enables presigned direct transaction batches through `POST \u002Fv1\u002Foperations\u002Fdirect`.\n\nAlways ask the user for explicit permission before changing an agent from restricted or `guardrailed` mode to `unrestricted`. Change mode later with `PATCH \u002Fv1\u002Fregister` only after the user approves the escalation.\n\nIf a protected route returns `403` with `TOS_SIGNATURE_REQUIRED`, fetch the latest ToS typed data, sign it, and call `PATCH \u002Fv1\u002Fregister` with the fresh `tos_signature`.\n\nA successful registration returns `agent_id`, `agent_address`, and `execution_mode`. A `409` means the signer is already registered; use `PATCH \u002Fv1\u002Fregister` for updates.\n\n## 2. Create and List Chain Wallets\n\nAn SVA (Signature Verifying Account) is a smart contract wallet that executes transactions only when they are authorized by a valid cryptographic signature.\n\nList wallets:\n\n```http\nGET \u002Fv1\u002Fwallets\n```\n\nCreate a wallet for a supported chain selector:\n\n```http\nPOST \u002Fv1\u002Fwallets\n```\n\n```json\n{\n  \"chain_selector\": \"16015286601757825753\"\n}\n```\n\nUse `GET \u002Fv1\u002Fnetworks` to discover supported chains. Wallet routes require EIP-191 signing, current ToS acceptance, and x402 payment when the route is priced. The created\u002Flisted wallets are scoped to the EIP-191 agent signer, not to the x402 payer.\n\n## 3. Discover Workflows and Endpoint Skills\n\n`GET \u002Fv1\u002Fcatalog` returns catalog item names and descriptions. Use `GET \u002Fv1\u002Fcatalog\u002F{name}` for pricing metadata, `input_schema`, and the endpoint to call.\n\nEndpoint-backed Data Streams skills may include entries such as `streams-latest-report`, `streams-report-at-timestamp`, and `streams-bulk-reports`; call the `execute_endpoint` path shown in the catalog detail response.\n\n## 4. Run a Workflow\n\nWorkflow execution uses the workflow name from the catalog:\n\n```http\nPOST \u002Fv1\u002Foperations\u002F{workflowName}\n```\n\n```json\n{\n  \"params\": { \"...\": \"workflow-specific\" }\n}\n```\n\nFor chain-specific workflows, include `chain_selector` inside `params` using a value from `GET \u002Fv1\u002Fnetworks`.\n\nFor token workflows:\n\n- `token-info` needs `chain_selector` and `token_address`; use it to read token metadata before amount-based actions.\n- `token-balance` needs `chain_selector` and `token_address`.\n- `token-transfer` needs `chain_selector`, `token_address`, and `to_address`.\n\nA `202` response includes `operation_id`. For workflows that need an on-chain submit step, the response or a later poll may include `eip712`, `transactions`, `deadline`, and `wallet_operation_id`.\n\nWorkflow operations are scoped to the EIP-191 agent signer. Paying the x402 challenge with another wallet does not change which agent owns the operation.\n\n## 5. Poll Operation Status\n\n```http\nGET \u002Fv1\u002Foperations\u002F{id}\n```\n\nFor workflow execution before an on-chain submit, poll at most once every 5 seconds per operation. When the operation is ready for a local signature, the response includes the `eip712` object to sign.\n\n## 6. Sign EIP-712 Locally\n\nUse the `eip712` object returned by workflow execution or polling:\n\n```bash\nSIG=$(\n  python scripts\u002Feip712_sign.py --typed-data \"$EIP712_JSON\" \\\n    | jq -r .signature\n)\n```\n\nSee `references\u002Feip712-signing.md` for full usage and submit examples.\n\n## 7. Submit a Signed Workflow Operation\n\nFor workflow operations that return EIP-712 data, submit only the signature:\n\n```http\nPOST \u002Fv1\u002Foperations\u002F{id}\u002Fsubmit\n```\n\n```json\n{\n  \"signature\": \"\u003CEIP-712 signature>\"\n}\n```\n\nAfter submit returns `202`, the gateway waits for chain finality before confirming the write status. On Ethereum, Base, and Arbitrum this can take time, often around 15 minutes on average. Poll `GET \u002Fv1\u002Foperations\u002F{id}` about once per minute while waiting for the chain write to finalize.\n\n## 8. Submit Direct Operations\n\n`POST \u002Fv1\u002Foperations\u002Fdirect` is only for agents with `execution_mode=unrestricted`. Ask the user for explicit permission before enabling unrestricted mode or using this route. Submit a presigned transaction batch with `chain_selector`, `nonce`, `deadline`, `transactions`, and `signature`. Use workflow submit (`POST \u002Fv1\u002Foperations\u002F{id}\u002Fsubmit`) for workflow operations that return `eip712`.\n\nDirect operations are chain writes, so the gateway waits for chain finality before confirming the write status. On Ethereum, Base, and Arbitrum this can take time, often around 15 minutes on average. Poll the returned operation status about once per minute while waiting for finality.\n\n## x402 Payments\n\nPaid routes may return HTTP 402. The payment wallet used for x402 must hold enough USDC on Base before retrying the paid request. Use `scripts\u002Fx402_payment.py` to parse the x402 challenge, sign the EIP-3009 `TransferWithAuthorization` USDC authorization locally, and retry with the canonical payment header. Set `--max-amount-usdc` as a safety cap.\n\nx402 payment does not authenticate the agent. For protected paid routes, include valid EIP-191 `X-Agent-*` headers on the original request and on the retried paid request. The x402 payment wallet may differ from `X-Agent-Address`.\n\nThe helper preserves the server-provided payment requirements in the `accepted` payload and signs only the nested authorization. This matters for gateways that match the returned challenge exactly before settling payment.\n\nSee `references\u002Fx402-payments.md` for details.\n\n## Other Useful Routes\n\n| Method | Path | Notes |\n|--------|------|-------|\n| GET | `\u002Fv1\u002Fnetworks` | Supported chains |\n| GET | `\u002Fv1\u002Fcatalog` | Catalog item names and descriptions |\n| GET | `\u002Fv1\u002Fcatalog\u002F{name}` | Catalog item metadata |\n| GET | `\u002Fv1\u002Foperations` | Operations for the authenticated agent |\n| GET | `\u002Fv1\u002Fstreams\u002F...` | Data Streams endpoints, when available |\n\n## Typical Errors\n\n| HTTP | Meaning |\n|------|---------|\n| 401 | Missing or invalid EIP-191 headers, timestamp skew, or unregistered signer |\n| 402 | x402 payment required or payment authorization invalid |\n| 403 | Terms of Service or execution mode requirement not satisfied |\n| 409 | Agent or wallet already exists |\n\n## References\n\n- `references\u002Fapi-reference.md`: concise endpoint reference\n- `references\u002Feip712-signing.md`: EIP-712 signing and submit examples\n- `references\u002Fx402-payments.md`: x402 payment flow and helper script usage\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,49,56,165,171,366,387,392,397,403,416,421,462,474,479,484,497,507,533,538,617,671,691,735,741,746,782,818,914,947,974,1008,1050,1056,1061,1066,1082,1087,1101,1155,1167,1173,1199,1234,1240,1245,1259,1340,1365,1370,1450,1499,1504,1510,1524,1536,1542,1554,1640,1653,1659,1664,1678,1732,1752,1758,1822,1827,1833,1862,1880,1893,1905,1911,2044,2050,2122,2128,2162],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Chainlink for Agents",{"type":42,"tag":50,"props":51,"children":53},"h2",{"id":52},"start-here",[54],{"type":47,"value":55},"Start here",{"type":42,"tag":57,"props":58,"children":59},"ol",{},[60,81,98,131,148],{"type":42,"tag":61,"props":62,"children":63},"li",{},[64,70,72,79],{"type":42,"tag":65,"props":66,"children":67},"strong",{},[68],{"type":47,"value":69},"Agent card",{"type":47,"value":71},": ",{"type":42,"tag":73,"props":74,"children":76},"code",{"className":75},[],[77],{"type":47,"value":78},"GET https:\u002F\u002Fagents.chain.link\u002F.well-known\u002Fagent.json",{"type":47,"value":80}," for capabilities, pricing, and available workflows.",{"type":42,"tag":61,"props":82,"children":83},{},[84,89,90,96],{"type":42,"tag":65,"props":85,"children":86},{},[87],{"type":47,"value":88},"OpenAPI spec",{"type":47,"value":71},{"type":42,"tag":73,"props":91,"children":93},{"className":92},[],[94],{"type":47,"value":95},"GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fopenapi.yaml",{"type":47,"value":97}," for the complete API contract.",{"type":42,"tag":61,"props":99,"children":100},{},[101,106,107,113,115,121,123,129],{"type":42,"tag":65,"props":102,"children":103},{},[104],{"type":47,"value":105},"Catalog",{"type":47,"value":71},{"type":42,"tag":73,"props":108,"children":110},{"className":109},[],[111],{"type":47,"value":112},"GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fcatalog",{"type":47,"value":114}," for names and descriptions; ",{"type":42,"tag":73,"props":116,"children":118},{"className":117},[],[119],{"type":47,"value":120},"GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fcatalog\u002F{name}",{"type":47,"value":122}," for ",{"type":42,"tag":73,"props":124,"children":126},{"className":125},[],[127],{"type":47,"value":128},"input_schema",{"type":47,"value":130},", pricing, and the execute endpoint.",{"type":42,"tag":61,"props":132,"children":133},{},[134,139,140,146],{"type":42,"tag":65,"props":135,"children":136},{},[137],{"type":47,"value":138},"Skill guide",{"type":47,"value":71},{"type":42,"tag":73,"props":141,"children":143},{"className":142},[],[144],{"type":47,"value":145},"GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fskills",{"type":47,"value":147}," for this root markdown guide.",{"type":42,"tag":61,"props":149,"children":150},{},[151,156,157,163],{"type":42,"tag":65,"props":152,"children":153},{},[154],{"type":47,"value":155},"Skill bundle",{"type":47,"value":71},{"type":42,"tag":73,"props":158,"children":160},{"className":159},[],[161],{"type":47,"value":162},"GET https:\u002F\u002Fagents.chain.link\u002Fv1\u002Fskills\u002Fbundle",{"type":47,"value":164}," to download this guide, references, and helper scripts.",{"type":42,"tag":50,"props":166,"children":168},{"id":167},"quick-setup",[169],{"type":47,"value":170},"Quick setup",{"type":42,"tag":172,"props":173,"children":178},"pre",{"className":174,"code":175,"language":176,"meta":177,"style":177},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export CHAINLINK_AGENTS_URL=\"https:\u002F\u002Fagents.chain.link\"\ncurl -sSL \"$CHAINLINK_AGENTS_URL\u002Fv1\u002Fskills\u002Fbundle\" -o chainlink-for-agents.zip\nunzip chainlink-for-agents.zip\ncd chainlink-for-agents\npip install eth-account eth-abi requests\npython scripts\u002Fgenerate_signer_key.py\nexport AGENT_PRIVATE_KEY=\"0x...\"\n","bash","",[179],{"type":42,"tag":73,"props":180,"children":181},{"__ignoreMap":177},[182,221,265,278,293,322,336],{"type":42,"tag":183,"props":184,"children":186},"span",{"class":185,"line":25},"line",[187,193,199,205,210,216],{"type":42,"tag":183,"props":188,"children":190},{"style":189},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[191],{"type":47,"value":192},"export",{"type":42,"tag":183,"props":194,"children":196},{"style":195},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[197],{"type":47,"value":198}," CHAINLINK_AGENTS_URL",{"type":42,"tag":183,"props":200,"children":202},{"style":201},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[203],{"type":47,"value":204},"=",{"type":42,"tag":183,"props":206,"children":207},{"style":201},[208],{"type":47,"value":209},"\"",{"type":42,"tag":183,"props":211,"children":213},{"style":212},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[214],{"type":47,"value":215},"https:\u002F\u002Fagents.chain.link",{"type":42,"tag":183,"props":217,"children":218},{"style":201},[219],{"type":47,"value":220},"\"\n",{"type":42,"tag":183,"props":222,"children":224},{"class":185,"line":223},2,[225,231,236,241,246,251,255,260],{"type":42,"tag":183,"props":226,"children":228},{"style":227},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[229],{"type":47,"value":230},"curl",{"type":42,"tag":183,"props":232,"children":233},{"style":212},[234],{"type":47,"value":235}," -sSL",{"type":42,"tag":183,"props":237,"children":238},{"style":201},[239],{"type":47,"value":240}," \"",{"type":42,"tag":183,"props":242,"children":243},{"style":195},[244],{"type":47,"value":245},"$CHAINLINK_AGENTS_URL",{"type":42,"tag":183,"props":247,"children":248},{"style":212},[249],{"type":47,"value":250},"\u002Fv1\u002Fskills\u002Fbundle",{"type":42,"tag":183,"props":252,"children":253},{"style":201},[254],{"type":47,"value":209},{"type":42,"tag":183,"props":256,"children":257},{"style":212},[258],{"type":47,"value":259}," -o",{"type":42,"tag":183,"props":261,"children":262},{"style":212},[263],{"type":47,"value":264}," chainlink-for-agents.zip\n",{"type":42,"tag":183,"props":266,"children":268},{"class":185,"line":267},3,[269,274],{"type":42,"tag":183,"props":270,"children":271},{"style":227},[272],{"type":47,"value":273},"unzip",{"type":42,"tag":183,"props":275,"children":276},{"style":212},[277],{"type":47,"value":264},{"type":42,"tag":183,"props":279,"children":281},{"class":185,"line":280},4,[282,288],{"type":42,"tag":183,"props":283,"children":285},{"style":284},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[286],{"type":47,"value":287},"cd",{"type":42,"tag":183,"props":289,"children":290},{"style":212},[291],{"type":47,"value":292}," chainlink-for-agents\n",{"type":42,"tag":183,"props":294,"children":296},{"class":185,"line":295},5,[297,302,307,312,317],{"type":42,"tag":183,"props":298,"children":299},{"style":227},[300],{"type":47,"value":301},"pip",{"type":42,"tag":183,"props":303,"children":304},{"style":212},[305],{"type":47,"value":306}," install",{"type":42,"tag":183,"props":308,"children":309},{"style":212},[310],{"type":47,"value":311}," eth-account",{"type":42,"tag":183,"props":313,"children":314},{"style":212},[315],{"type":47,"value":316}," eth-abi",{"type":42,"tag":183,"props":318,"children":319},{"style":212},[320],{"type":47,"value":321}," requests\n",{"type":42,"tag":183,"props":323,"children":325},{"class":185,"line":324},6,[326,331],{"type":42,"tag":183,"props":327,"children":328},{"style":227},[329],{"type":47,"value":330},"python",{"type":42,"tag":183,"props":332,"children":333},{"style":212},[334],{"type":47,"value":335}," scripts\u002Fgenerate_signer_key.py\n",{"type":42,"tag":183,"props":337,"children":339},{"class":185,"line":338},7,[340,344,349,353,357,362],{"type":42,"tag":183,"props":341,"children":342},{"style":189},[343],{"type":47,"value":192},{"type":42,"tag":183,"props":345,"children":346},{"style":195},[347],{"type":47,"value":348}," AGENT_PRIVATE_KEY",{"type":42,"tag":183,"props":350,"children":351},{"style":201},[352],{"type":47,"value":204},{"type":42,"tag":183,"props":354,"children":355},{"style":201},[356],{"type":47,"value":209},{"type":42,"tag":183,"props":358,"children":359},{"style":212},[360],{"type":47,"value":361},"0x...",{"type":42,"tag":183,"props":363,"children":364},{"style":201},[365],{"type":47,"value":220},{"type":42,"tag":367,"props":368,"children":369},"p",{},[370,372,377,379,385],{"type":47,"value":371},"Use ",{"type":42,"tag":73,"props":373,"children":375},{"className":374},[],[376],{"type":47,"value":162},{"type":47,"value":378}," to install the current skill guide, references, and helper scripts together. Commands below assume you are in the extracted ",{"type":42,"tag":73,"props":380,"children":382},{"className":381},[],[383],{"type":47,"value":384},"chainlink-for-agents\u002F",{"type":47,"value":386}," skill root.",{"type":42,"tag":367,"props":388,"children":389},{},[390],{"type":47,"value":391},"Fund the payment wallet with USDC on Base before calling paid routes. This can be the same address as the EIP-191 agent signer, but it does not have to be.",{"type":42,"tag":367,"props":393,"children":394},{},[395],{"type":47,"value":396},"Chainlink for Agents lets an agent register, create chain wallets, run catalog workflows, sign any required EIP-712 operation data locally, and submit signed operations. Your private key stays local.",{"type":42,"tag":50,"props":398,"children":400},{"id":399},"identity-vs-payment",[401],{"type":47,"value":402},"Identity vs Payment",{"type":42,"tag":367,"props":404,"children":405},{},[406,408,414],{"type":47,"value":407},"Protected routes always identify the agent from the EIP-191 ",{"type":42,"tag":73,"props":409,"children":411},{"className":410},[],[412],{"type":47,"value":413},"X-Agent-*",{"type":47,"value":415}," request signature. x402 only proves that a payment authorization was supplied for a priced route; it never acts as an identity fallback and does not register or authenticate the agent.",{"type":42,"tag":367,"props":417,"children":418},{},[419],{"type":47,"value":420},"One EVM private key can cover all local signing in simple setups:",{"type":42,"tag":422,"props":423,"children":424},"ul",{},[425,442,452],{"type":42,"tag":61,"props":426,"children":427},{},[428,433,435,440],{"type":42,"tag":65,"props":429,"children":430},{},[431],{"type":47,"value":432},"EIP-191 request signing",{"type":47,"value":434},": authenticate protected API calls with ",{"type":42,"tag":73,"props":436,"children":438},{"className":437},[],[439],{"type":47,"value":413},{"type":47,"value":441}," headers.",{"type":42,"tag":61,"props":443,"children":444},{},[445,450],{"type":42,"tag":65,"props":446,"children":447},{},[448],{"type":47,"value":449},"x402 payment authorization",{"type":47,"value":451},": sign EIP-3009 USDC payment challenges when a paid route returns HTTP 402.",{"type":42,"tag":61,"props":453,"children":454},{},[455,460],{"type":42,"tag":65,"props":456,"children":457},{},[458],{"type":47,"value":459},"EIP-712 operation signing",{"type":47,"value":461},": sign operation data returned by Chainlink for Agents before submit.",{"type":42,"tag":367,"props":463,"children":464},{},[465,467,472],{"type":47,"value":466},"In sponsored-payment setups, the x402 payment wallet may differ from the registered agent signer. Continue signing ",{"type":42,"tag":73,"props":468,"children":470},{"className":469},[],[471],{"type":47,"value":413},{"type":47,"value":473}," headers with the registered agent key.",{"type":42,"tag":367,"props":475,"children":476},{},[477],{"type":47,"value":478},"Never send the private key to Chainlink for Agents or any third-party service.",{"type":42,"tag":50,"props":480,"children":482},{"id":481},"eip-191-request-signing",[483],{"type":47,"value":432},{"type":42,"tag":367,"props":485,"children":486},{},[487,489,495],{"type":47,"value":488},"Most protected routes require this canonical message, signed with EIP-191 ",{"type":42,"tag":73,"props":490,"children":492},{"className":491},[],[493],{"type":47,"value":494},"personal_sign",{"type":47,"value":496},":",{"type":42,"tag":172,"props":498,"children":502},{"className":499,"code":501,"language":47,"meta":177},[500],"language-text","POST \u002Fv1\u002Fregister\n1713700000\n0x\u003Csha256_hex_of_exact_request_body_bytes>\n",[503],{"type":42,"tag":73,"props":504,"children":505},{"__ignoreMap":177},[506],{"type":47,"value":501},{"type":42,"tag":422,"props":508,"children":509},{},[510,515,520],{"type":42,"tag":61,"props":511,"children":512},{},[513],{"type":47,"value":514},"First line: uppercase method, space, escaped path plus raw query string when present.",{"type":42,"tag":61,"props":516,"children":517},{},[518],{"type":47,"value":519},"Second line: Unix timestamp in seconds.",{"type":42,"tag":61,"props":521,"children":522},{},[523,525,531],{"type":47,"value":524},"Third line: only when the request has a body: ",{"type":42,"tag":73,"props":526,"children":528},{"className":527},[],[529],{"type":47,"value":530},"0x",{"type":47,"value":532}," plus lowercase SHA-256 of the exact bytes sent.",{"type":42,"tag":367,"props":534,"children":535},{},[536],{"type":47,"value":537},"Send these headers with the request:",{"type":42,"tag":539,"props":540,"children":541},"table",{},[542,561],{"type":42,"tag":543,"props":544,"children":545},"thead",{},[546],{"type":42,"tag":547,"props":548,"children":549},"tr",{},[550,556],{"type":42,"tag":551,"props":552,"children":553},"th",{},[554],{"type":47,"value":555},"Header",{"type":42,"tag":551,"props":557,"children":558},{},[559],{"type":47,"value":560},"Value",{"type":42,"tag":562,"props":563,"children":564},"tbody",{},[565,583,600],{"type":42,"tag":547,"props":566,"children":567},{},[568,578],{"type":42,"tag":569,"props":570,"children":571},"td",{},[572],{"type":42,"tag":73,"props":573,"children":575},{"className":574},[],[576],{"type":47,"value":577},"X-Agent-Address",{"type":42,"tag":569,"props":579,"children":580},{},[581],{"type":47,"value":582},"Signer address",{"type":42,"tag":547,"props":584,"children":585},{},[586,595],{"type":42,"tag":569,"props":587,"children":588},{},[589],{"type":42,"tag":73,"props":590,"children":592},{"className":591},[],[593],{"type":47,"value":594},"X-Agent-Signature",{"type":42,"tag":569,"props":596,"children":597},{},[598],{"type":47,"value":599},"EIP-191 signature",{"type":42,"tag":547,"props":601,"children":602},{},[603,612],{"type":42,"tag":569,"props":604,"children":605},{},[606],{"type":42,"tag":73,"props":607,"children":609},{"className":608},[],[610],{"type":47,"value":611},"X-Agent-Timestamp",{"type":42,"tag":569,"props":613,"children":614},{},[615],{"type":47,"value":616},"Same Unix timestamp used in the signed message",{"type":42,"tag":172,"props":618,"children":620},{"className":174,"code":619,"language":176,"meta":177,"style":177},"python scripts\u002Fsign_request.py \\\n  --method GET \\\n  --path \u002Fv1\u002Fwallets\n",[621],{"type":42,"tag":73,"props":622,"children":623},{"__ignoreMap":177},[624,641,658],{"type":42,"tag":183,"props":625,"children":626},{"class":185,"line":25},[627,631,636],{"type":42,"tag":183,"props":628,"children":629},{"style":227},[630],{"type":47,"value":330},{"type":42,"tag":183,"props":632,"children":633},{"style":212},[634],{"type":47,"value":635}," scripts\u002Fsign_request.py",{"type":42,"tag":183,"props":637,"children":638},{"style":195},[639],{"type":47,"value":640}," \\\n",{"type":42,"tag":183,"props":642,"children":643},{"class":185,"line":223},[644,649,654],{"type":42,"tag":183,"props":645,"children":646},{"style":212},[647],{"type":47,"value":648},"  --method",{"type":42,"tag":183,"props":650,"children":651},{"style":212},[652],{"type":47,"value":653}," GET",{"type":42,"tag":183,"props":655,"children":656},{"style":195},[657],{"type":47,"value":640},{"type":42,"tag":183,"props":659,"children":660},{"class":185,"line":267},[661,666],{"type":42,"tag":183,"props":662,"children":663},{"style":212},[664],{"type":47,"value":665},"  --path",{"type":42,"tag":183,"props":667,"children":668},{"style":212},[669],{"type":47,"value":670}," \u002Fv1\u002Fwallets\n",{"type":42,"tag":367,"props":672,"children":673},{},[674,676,682,684,690],{"type":47,"value":675},"For registration, ",{"type":42,"tag":73,"props":677,"children":679},{"className":678},[],[680],{"type":47,"value":681},"scripts\u002Fsign_registration.py",{"type":47,"value":683}," builds the body and signs ",{"type":42,"tag":73,"props":685,"children":687},{"className":686},[],[688],{"type":47,"value":689},"POST \u002Fv1\u002Fregister",{"type":47,"value":496},{"type":42,"tag":172,"props":692,"children":694},{"className":174,"code":693,"language":176,"meta":177,"style":177},"python scripts\u002Fsign_registration.py \\\n  --tos-signature \"$TOS_SIG\"\n",[695],{"type":42,"tag":73,"props":696,"children":697},{"__ignoreMap":177},[698,714],{"type":42,"tag":183,"props":699,"children":700},{"class":185,"line":25},[701,705,710],{"type":42,"tag":183,"props":702,"children":703},{"style":227},[704],{"type":47,"value":330},{"type":42,"tag":183,"props":706,"children":707},{"style":212},[708],{"type":47,"value":709}," scripts\u002Fsign_registration.py",{"type":42,"tag":183,"props":711,"children":712},{"style":195},[713],{"type":47,"value":640},{"type":42,"tag":183,"props":715,"children":716},{"class":185,"line":223},[717,722,726,731],{"type":42,"tag":183,"props":718,"children":719},{"style":212},[720],{"type":47,"value":721},"  --tos-signature",{"type":42,"tag":183,"props":723,"children":724},{"style":201},[725],{"type":47,"value":240},{"type":42,"tag":183,"props":727,"children":728},{"style":195},[729],{"type":47,"value":730},"$TOS_SIG",{"type":42,"tag":183,"props":732,"children":733},{"style":201},[734],{"type":47,"value":220},{"type":42,"tag":50,"props":736,"children":738},{"id":737},"_1-accept-terms-and-register",[739],{"type":47,"value":740},"1. Accept Terms and Register",{"type":42,"tag":367,"props":742,"children":743},{},[744],{"type":47,"value":745},"Fetch the current Terms of Service typed data:",{"type":42,"tag":172,"props":747,"children":749},{"className":174,"code":748,"language":176,"meta":177,"style":177},"curl -sS \"$CHAINLINK_AGENTS_URL\u002Fv1\u002Fterms-of-service\"\n",[750],{"type":42,"tag":73,"props":751,"children":752},{"__ignoreMap":177},[753],{"type":42,"tag":183,"props":754,"children":755},{"class":185,"line":25},[756,760,765,769,773,778],{"type":42,"tag":183,"props":757,"children":758},{"style":227},[759],{"type":47,"value":230},{"type":42,"tag":183,"props":761,"children":762},{"style":212},[763],{"type":47,"value":764}," -sS",{"type":42,"tag":183,"props":766,"children":767},{"style":201},[768],{"type":47,"value":240},{"type":42,"tag":183,"props":770,"children":771},{"style":195},[772],{"type":47,"value":245},{"type":42,"tag":183,"props":774,"children":775},{"style":212},[776],{"type":47,"value":777},"\u002Fv1\u002Fterms-of-service",{"type":42,"tag":183,"props":779,"children":780},{"style":201},[781],{"type":47,"value":220},{"type":42,"tag":367,"props":783,"children":784},{},[785,787,793,795,801,803,808,810,816],{"type":47,"value":786},"Sign the returned ",{"type":42,"tag":73,"props":788,"children":790},{"className":789},[],[791],{"type":47,"value":792},"typed_data",{"type":47,"value":794}," locally to produce ",{"type":42,"tag":73,"props":796,"children":798},{"className":797},[],[799],{"type":47,"value":800},"tos_signature",{"type":47,"value":802},", then call ",{"type":42,"tag":73,"props":804,"children":806},{"className":805},[],[807],{"type":47,"value":689},{"type":47,"value":809}," with EIP-191 headers and x402 payment when required. The EIP-191 signer becomes the registered ",{"type":42,"tag":73,"props":811,"children":813},{"className":812},[],[814],{"type":47,"value":815},"agent_address",{"type":47,"value":817},"; the x402 payer is payment-only and may be a different wallet.",{"type":42,"tag":172,"props":819,"children":823},{"className":820,"code":821,"language":822,"meta":177,"style":177},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"tos_signature\": \"\u003CEIP-712 signature over current ToS typed data>\",\n  \"execution_mode\": \"guardrailed\"\n}\n","json",[824],{"type":42,"tag":73,"props":825,"children":826},{"__ignoreMap":177},[827,835,873,906],{"type":42,"tag":183,"props":828,"children":829},{"class":185,"line":25},[830],{"type":42,"tag":183,"props":831,"children":832},{"style":201},[833],{"type":47,"value":834},"{\n",{"type":42,"tag":183,"props":836,"children":837},{"class":185,"line":223},[838,843,847,851,855,859,864,868],{"type":42,"tag":183,"props":839,"children":840},{"style":201},[841],{"type":47,"value":842},"  \"",{"type":42,"tag":183,"props":844,"children":845},{"style":189},[846],{"type":47,"value":800},{"type":42,"tag":183,"props":848,"children":849},{"style":201},[850],{"type":47,"value":209},{"type":42,"tag":183,"props":852,"children":853},{"style":201},[854],{"type":47,"value":496},{"type":42,"tag":183,"props":856,"children":857},{"style":201},[858],{"type":47,"value":240},{"type":42,"tag":183,"props":860,"children":861},{"style":212},[862],{"type":47,"value":863},"\u003CEIP-712 signature over current ToS typed data>",{"type":42,"tag":183,"props":865,"children":866},{"style":201},[867],{"type":47,"value":209},{"type":42,"tag":183,"props":869,"children":870},{"style":201},[871],{"type":47,"value":872},",\n",{"type":42,"tag":183,"props":874,"children":875},{"class":185,"line":267},[876,880,885,889,893,897,902],{"type":42,"tag":183,"props":877,"children":878},{"style":201},[879],{"type":47,"value":842},{"type":42,"tag":183,"props":881,"children":882},{"style":189},[883],{"type":47,"value":884},"execution_mode",{"type":42,"tag":183,"props":886,"children":887},{"style":201},[888],{"type":47,"value":209},{"type":42,"tag":183,"props":890,"children":891},{"style":201},[892],{"type":47,"value":496},{"type":42,"tag":183,"props":894,"children":895},{"style":201},[896],{"type":47,"value":240},{"type":42,"tag":183,"props":898,"children":899},{"style":212},[900],{"type":47,"value":901},"guardrailed",{"type":42,"tag":183,"props":903,"children":904},{"style":201},[905],{"type":47,"value":220},{"type":42,"tag":183,"props":907,"children":908},{"class":185,"line":280},[909],{"type":42,"tag":183,"props":910,"children":911},{"style":201},[912],{"type":47,"value":913},"}\n",{"type":42,"tag":367,"props":915,"children":916},{},[917,922,924,929,931,937,939,945],{"type":42,"tag":73,"props":918,"children":920},{"className":919},[],[921],{"type":47,"value":884},{"type":47,"value":923}," is optional on first registration. ",{"type":42,"tag":73,"props":925,"children":927},{"className":926},[],[928],{"type":47,"value":901},{"type":47,"value":930}," is the restricted mode: it limits the agent to catalog workflows and workflow submit routes. ",{"type":42,"tag":73,"props":932,"children":934},{"className":933},[],[935],{"type":47,"value":936},"unrestricted",{"type":47,"value":938}," also enables presigned direct transaction batches through ",{"type":42,"tag":73,"props":940,"children":942},{"className":941},[],[943],{"type":47,"value":944},"POST \u002Fv1\u002Foperations\u002Fdirect",{"type":47,"value":946},".",{"type":42,"tag":367,"props":948,"children":949},{},[950,952,957,959,964,966,972],{"type":47,"value":951},"Always ask the user for explicit permission before changing an agent from restricted or ",{"type":42,"tag":73,"props":953,"children":955},{"className":954},[],[956],{"type":47,"value":901},{"type":47,"value":958}," mode to ",{"type":42,"tag":73,"props":960,"children":962},{"className":961},[],[963],{"type":47,"value":936},{"type":47,"value":965},". Change mode later with ",{"type":42,"tag":73,"props":967,"children":969},{"className":968},[],[970],{"type":47,"value":971},"PATCH \u002Fv1\u002Fregister",{"type":47,"value":973}," only after the user approves the escalation.",{"type":42,"tag":367,"props":975,"children":976},{},[977,979,985,987,993,995,1000,1002,1007],{"type":47,"value":978},"If a protected route returns ",{"type":42,"tag":73,"props":980,"children":982},{"className":981},[],[983],{"type":47,"value":984},"403",{"type":47,"value":986}," with ",{"type":42,"tag":73,"props":988,"children":990},{"className":989},[],[991],{"type":47,"value":992},"TOS_SIGNATURE_REQUIRED",{"type":47,"value":994},", fetch the latest ToS typed data, sign it, and call ",{"type":42,"tag":73,"props":996,"children":998},{"className":997},[],[999],{"type":47,"value":971},{"type":47,"value":1001}," with the fresh ",{"type":42,"tag":73,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":47,"value":800},{"type":47,"value":946},{"type":42,"tag":367,"props":1009,"children":1010},{},[1011,1013,1019,1021,1026,1028,1033,1035,1041,1043,1048],{"type":47,"value":1012},"A successful registration returns ",{"type":42,"tag":73,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":47,"value":1018},"agent_id",{"type":47,"value":1020},", ",{"type":42,"tag":73,"props":1022,"children":1024},{"className":1023},[],[1025],{"type":47,"value":815},{"type":47,"value":1027},", and ",{"type":42,"tag":73,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":47,"value":884},{"type":47,"value":1034},". A ",{"type":42,"tag":73,"props":1036,"children":1038},{"className":1037},[],[1039],{"type":47,"value":1040},"409",{"type":47,"value":1042}," means the signer is already registered; use ",{"type":42,"tag":73,"props":1044,"children":1046},{"className":1045},[],[1047],{"type":47,"value":971},{"type":47,"value":1049}," for updates.",{"type":42,"tag":50,"props":1051,"children":1053},{"id":1052},"_2-create-and-list-chain-wallets",[1054],{"type":47,"value":1055},"2. Create and List Chain Wallets",{"type":42,"tag":367,"props":1057,"children":1058},{},[1059],{"type":47,"value":1060},"An SVA (Signature Verifying Account) is a smart contract wallet that executes transactions only when they are authorized by a valid cryptographic signature.",{"type":42,"tag":367,"props":1062,"children":1063},{},[1064],{"type":47,"value":1065},"List wallets:",{"type":42,"tag":172,"props":1067,"children":1071},{"className":1068,"code":1069,"language":1070,"meta":177,"style":177},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GET \u002Fv1\u002Fwallets\n","http",[1072],{"type":42,"tag":73,"props":1073,"children":1074},{"__ignoreMap":177},[1075],{"type":42,"tag":183,"props":1076,"children":1077},{"class":185,"line":25},[1078],{"type":42,"tag":183,"props":1079,"children":1080},{},[1081],{"type":47,"value":1069},{"type":42,"tag":367,"props":1083,"children":1084},{},[1085],{"type":47,"value":1086},"Create a wallet for a supported chain selector:",{"type":42,"tag":172,"props":1088,"children":1090},{"className":1068,"code":1089,"language":1070,"meta":177,"style":177},"POST \u002Fv1\u002Fwallets\n",[1091],{"type":42,"tag":73,"props":1092,"children":1093},{"__ignoreMap":177},[1094],{"type":42,"tag":183,"props":1095,"children":1096},{"class":185,"line":25},[1097],{"type":42,"tag":183,"props":1098,"children":1099},{},[1100],{"type":47,"value":1089},{"type":42,"tag":172,"props":1102,"children":1104},{"className":820,"code":1103,"language":822,"meta":177,"style":177},"{\n  \"chain_selector\": \"16015286601757825753\"\n}\n",[1105],{"type":42,"tag":73,"props":1106,"children":1107},{"__ignoreMap":177},[1108,1115,1148],{"type":42,"tag":183,"props":1109,"children":1110},{"class":185,"line":25},[1111],{"type":42,"tag":183,"props":1112,"children":1113},{"style":201},[1114],{"type":47,"value":834},{"type":42,"tag":183,"props":1116,"children":1117},{"class":185,"line":223},[1118,1122,1127,1131,1135,1139,1144],{"type":42,"tag":183,"props":1119,"children":1120},{"style":201},[1121],{"type":47,"value":842},{"type":42,"tag":183,"props":1123,"children":1124},{"style":189},[1125],{"type":47,"value":1126},"chain_selector",{"type":42,"tag":183,"props":1128,"children":1129},{"style":201},[1130],{"type":47,"value":209},{"type":42,"tag":183,"props":1132,"children":1133},{"style":201},[1134],{"type":47,"value":496},{"type":42,"tag":183,"props":1136,"children":1137},{"style":201},[1138],{"type":47,"value":240},{"type":42,"tag":183,"props":1140,"children":1141},{"style":212},[1142],{"type":47,"value":1143},"16015286601757825753",{"type":42,"tag":183,"props":1145,"children":1146},{"style":201},[1147],{"type":47,"value":220},{"type":42,"tag":183,"props":1149,"children":1150},{"class":185,"line":267},[1151],{"type":42,"tag":183,"props":1152,"children":1153},{"style":201},[1154],{"type":47,"value":913},{"type":42,"tag":367,"props":1156,"children":1157},{},[1158,1159,1165],{"type":47,"value":371},{"type":42,"tag":73,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":47,"value":1164},"GET \u002Fv1\u002Fnetworks",{"type":47,"value":1166}," to discover supported chains. Wallet routes require EIP-191 signing, current ToS acceptance, and x402 payment when the route is priced. The created\u002Flisted wallets are scoped to the EIP-191 agent signer, not to the x402 payer.",{"type":42,"tag":50,"props":1168,"children":1170},{"id":1169},"_3-discover-workflows-and-endpoint-skills",[1171],{"type":47,"value":1172},"3. Discover Workflows and Endpoint Skills",{"type":42,"tag":367,"props":1174,"children":1175},{},[1176,1182,1184,1190,1192,1197],{"type":42,"tag":73,"props":1177,"children":1179},{"className":1178},[],[1180],{"type":47,"value":1181},"GET \u002Fv1\u002Fcatalog",{"type":47,"value":1183}," returns catalog item names and descriptions. Use ",{"type":42,"tag":73,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":47,"value":1189},"GET \u002Fv1\u002Fcatalog\u002F{name}",{"type":47,"value":1191}," for pricing metadata, ",{"type":42,"tag":73,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":47,"value":128},{"type":47,"value":1198},", and the endpoint to call.",{"type":42,"tag":367,"props":1200,"children":1201},{},[1202,1204,1210,1211,1217,1218,1224,1226,1232],{"type":47,"value":1203},"Endpoint-backed Data Streams skills may include entries such as ",{"type":42,"tag":73,"props":1205,"children":1207},{"className":1206},[],[1208],{"type":47,"value":1209},"streams-latest-report",{"type":47,"value":1020},{"type":42,"tag":73,"props":1212,"children":1214},{"className":1213},[],[1215],{"type":47,"value":1216},"streams-report-at-timestamp",{"type":47,"value":1027},{"type":42,"tag":73,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":47,"value":1223},"streams-bulk-reports",{"type":47,"value":1225},"; call the ",{"type":42,"tag":73,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":47,"value":1231},"execute_endpoint",{"type":47,"value":1233}," path shown in the catalog detail response.",{"type":42,"tag":50,"props":1235,"children":1237},{"id":1236},"_4-run-a-workflow",[1238],{"type":47,"value":1239},"4. Run a Workflow",{"type":42,"tag":367,"props":1241,"children":1242},{},[1243],{"type":47,"value":1244},"Workflow execution uses the workflow name from the catalog:",{"type":42,"tag":172,"props":1246,"children":1248},{"className":1068,"code":1247,"language":1070,"meta":177,"style":177},"POST \u002Fv1\u002Foperations\u002F{workflowName}\n",[1249],{"type":42,"tag":73,"props":1250,"children":1251},{"__ignoreMap":177},[1252],{"type":42,"tag":183,"props":1253,"children":1254},{"class":185,"line":25},[1255],{"type":42,"tag":183,"props":1256,"children":1257},{},[1258],{"type":47,"value":1247},{"type":42,"tag":172,"props":1260,"children":1262},{"className":820,"code":1261,"language":822,"meta":177,"style":177},"{\n  \"params\": { \"...\": \"workflow-specific\" }\n}\n",[1263],{"type":42,"tag":73,"props":1264,"children":1265},{"__ignoreMap":177},[1266,1273,1333],{"type":42,"tag":183,"props":1267,"children":1268},{"class":185,"line":25},[1269],{"type":42,"tag":183,"props":1270,"children":1271},{"style":201},[1272],{"type":47,"value":834},{"type":42,"tag":183,"props":1274,"children":1275},{"class":185,"line":223},[1276,1280,1285,1289,1293,1298,1302,1307,1311,1315,1319,1324,1328],{"type":42,"tag":183,"props":1277,"children":1278},{"style":201},[1279],{"type":47,"value":842},{"type":42,"tag":183,"props":1281,"children":1282},{"style":189},[1283],{"type":47,"value":1284},"params",{"type":42,"tag":183,"props":1286,"children":1287},{"style":201},[1288],{"type":47,"value":209},{"type":42,"tag":183,"props":1290,"children":1291},{"style":201},[1292],{"type":47,"value":496},{"type":42,"tag":183,"props":1294,"children":1295},{"style":201},[1296],{"type":47,"value":1297}," {",{"type":42,"tag":183,"props":1299,"children":1300},{"style":201},[1301],{"type":47,"value":240},{"type":42,"tag":183,"props":1303,"children":1304},{"style":227},[1305],{"type":47,"value":1306},"...",{"type":42,"tag":183,"props":1308,"children":1309},{"style":201},[1310],{"type":47,"value":209},{"type":42,"tag":183,"props":1312,"children":1313},{"style":201},[1314],{"type":47,"value":496},{"type":42,"tag":183,"props":1316,"children":1317},{"style":201},[1318],{"type":47,"value":240},{"type":42,"tag":183,"props":1320,"children":1321},{"style":212},[1322],{"type":47,"value":1323},"workflow-specific",{"type":42,"tag":183,"props":1325,"children":1326},{"style":201},[1327],{"type":47,"value":209},{"type":42,"tag":183,"props":1329,"children":1330},{"style":201},[1331],{"type":47,"value":1332}," }\n",{"type":42,"tag":183,"props":1334,"children":1335},{"class":185,"line":267},[1336],{"type":42,"tag":183,"props":1337,"children":1338},{"style":201},[1339],{"type":47,"value":913},{"type":42,"tag":367,"props":1341,"children":1342},{},[1343,1345,1350,1352,1357,1359,1364],{"type":47,"value":1344},"For chain-specific workflows, include ",{"type":42,"tag":73,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":47,"value":1126},{"type":47,"value":1351}," inside ",{"type":42,"tag":73,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":47,"value":1284},{"type":47,"value":1358}," using a value from ",{"type":42,"tag":73,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":47,"value":1164},{"type":47,"value":946},{"type":42,"tag":367,"props":1366,"children":1367},{},[1368],{"type":47,"value":1369},"For token workflows:",{"type":42,"tag":422,"props":1371,"children":1372},{},[1373,1399,1421],{"type":42,"tag":61,"props":1374,"children":1375},{},[1376,1382,1384,1389,1391,1397],{"type":42,"tag":73,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":47,"value":1381},"token-info",{"type":47,"value":1383}," needs ",{"type":42,"tag":73,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":47,"value":1126},{"type":47,"value":1390}," and ",{"type":42,"tag":73,"props":1392,"children":1394},{"className":1393},[],[1395],{"type":47,"value":1396},"token_address",{"type":47,"value":1398},"; use it to read token metadata before amount-based actions.",{"type":42,"tag":61,"props":1400,"children":1401},{},[1402,1408,1409,1414,1415,1420],{"type":42,"tag":73,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":47,"value":1407},"token-balance",{"type":47,"value":1383},{"type":42,"tag":73,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":47,"value":1126},{"type":47,"value":1390},{"type":42,"tag":73,"props":1416,"children":1418},{"className":1417},[],[1419],{"type":47,"value":1396},{"type":47,"value":946},{"type":42,"tag":61,"props":1422,"children":1423},{},[1424,1430,1431,1436,1437,1442,1443,1449],{"type":42,"tag":73,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":47,"value":1429},"token-transfer",{"type":47,"value":1383},{"type":42,"tag":73,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":47,"value":1126},{"type":47,"value":1020},{"type":42,"tag":73,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":47,"value":1396},{"type":47,"value":1027},{"type":42,"tag":73,"props":1444,"children":1446},{"className":1445},[],[1447],{"type":47,"value":1448},"to_address",{"type":47,"value":946},{"type":42,"tag":367,"props":1451,"children":1452},{},[1453,1455,1461,1463,1469,1471,1477,1478,1484,1485,1491,1492,1498],{"type":47,"value":1454},"A ",{"type":42,"tag":73,"props":1456,"children":1458},{"className":1457},[],[1459],{"type":47,"value":1460},"202",{"type":47,"value":1462}," response includes ",{"type":42,"tag":73,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":47,"value":1468},"operation_id",{"type":47,"value":1470},". For workflows that need an on-chain submit step, the response or a later poll may include ",{"type":42,"tag":73,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":47,"value":1476},"eip712",{"type":47,"value":1020},{"type":42,"tag":73,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":47,"value":1483},"transactions",{"type":47,"value":1020},{"type":42,"tag":73,"props":1486,"children":1488},{"className":1487},[],[1489],{"type":47,"value":1490},"deadline",{"type":47,"value":1027},{"type":42,"tag":73,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":47,"value":1497},"wallet_operation_id",{"type":47,"value":946},{"type":42,"tag":367,"props":1500,"children":1501},{},[1502],{"type":47,"value":1503},"Workflow operations are scoped to the EIP-191 agent signer. Paying the x402 challenge with another wallet does not change which agent owns the operation.",{"type":42,"tag":50,"props":1505,"children":1507},{"id":1506},"_5-poll-operation-status",[1508],{"type":47,"value":1509},"5. Poll Operation Status",{"type":42,"tag":172,"props":1511,"children":1513},{"className":1068,"code":1512,"language":1070,"meta":177,"style":177},"GET \u002Fv1\u002Foperations\u002F{id}\n",[1514],{"type":42,"tag":73,"props":1515,"children":1516},{"__ignoreMap":177},[1517],{"type":42,"tag":183,"props":1518,"children":1519},{"class":185,"line":25},[1520],{"type":42,"tag":183,"props":1521,"children":1522},{},[1523],{"type":47,"value":1512},{"type":42,"tag":367,"props":1525,"children":1526},{},[1527,1529,1534],{"type":47,"value":1528},"For workflow execution before an on-chain submit, poll at most once every 5 seconds per operation. When the operation is ready for a local signature, the response includes the ",{"type":42,"tag":73,"props":1530,"children":1532},{"className":1531},[],[1533],{"type":47,"value":1476},{"type":47,"value":1535}," object to sign.",{"type":42,"tag":50,"props":1537,"children":1539},{"id":1538},"_6-sign-eip-712-locally",[1540],{"type":47,"value":1541},"6. Sign EIP-712 Locally",{"type":42,"tag":367,"props":1543,"children":1544},{},[1545,1547,1552],{"type":47,"value":1546},"Use the ",{"type":42,"tag":73,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":47,"value":1476},{"type":47,"value":1553}," object returned by workflow execution or polling:",{"type":42,"tag":172,"props":1555,"children":1557},{"className":174,"code":1556,"language":176,"meta":177,"style":177},"SIG=$(\n  python scripts\u002Feip712_sign.py --typed-data \"$EIP712_JSON\" \\\n    | jq -r .signature\n)\n",[1558],{"type":42,"tag":73,"props":1559,"children":1560},{"__ignoreMap":177},[1561,1574,1609,1632],{"type":42,"tag":183,"props":1562,"children":1563},{"class":185,"line":25},[1564,1569],{"type":42,"tag":183,"props":1565,"children":1566},{"style":195},[1567],{"type":47,"value":1568},"SIG",{"type":42,"tag":183,"props":1570,"children":1571},{"style":201},[1572],{"type":47,"value":1573},"=$(\n",{"type":42,"tag":183,"props":1575,"children":1576},{"class":185,"line":223},[1577,1582,1587,1592,1596,1601,1605],{"type":42,"tag":183,"props":1578,"children":1579},{"style":227},[1580],{"type":47,"value":1581},"  python",{"type":42,"tag":183,"props":1583,"children":1584},{"style":212},[1585],{"type":47,"value":1586}," scripts\u002Feip712_sign.py",{"type":42,"tag":183,"props":1588,"children":1589},{"style":212},[1590],{"type":47,"value":1591}," --typed-data",{"type":42,"tag":183,"props":1593,"children":1594},{"style":201},[1595],{"type":47,"value":240},{"type":42,"tag":183,"props":1597,"children":1598},{"style":195},[1599],{"type":47,"value":1600},"$EIP712_JSON",{"type":42,"tag":183,"props":1602,"children":1603},{"style":201},[1604],{"type":47,"value":209},{"type":42,"tag":183,"props":1606,"children":1607},{"style":195},[1608],{"type":47,"value":640},{"type":42,"tag":183,"props":1610,"children":1611},{"class":185,"line":267},[1612,1617,1622,1627],{"type":42,"tag":183,"props":1613,"children":1614},{"style":201},[1615],{"type":47,"value":1616},"    |",{"type":42,"tag":183,"props":1618,"children":1619},{"style":227},[1620],{"type":47,"value":1621}," jq",{"type":42,"tag":183,"props":1623,"children":1624},{"style":212},[1625],{"type":47,"value":1626}," -r",{"type":42,"tag":183,"props":1628,"children":1629},{"style":212},[1630],{"type":47,"value":1631}," .signature\n",{"type":42,"tag":183,"props":1633,"children":1634},{"class":185,"line":280},[1635],{"type":42,"tag":183,"props":1636,"children":1637},{"style":201},[1638],{"type":47,"value":1639},")\n",{"type":42,"tag":367,"props":1641,"children":1642},{},[1643,1645,1651],{"type":47,"value":1644},"See ",{"type":42,"tag":73,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":47,"value":1650},"references\u002Feip712-signing.md",{"type":47,"value":1652}," for full usage and submit examples.",{"type":42,"tag":50,"props":1654,"children":1656},{"id":1655},"_7-submit-a-signed-workflow-operation",[1657],{"type":47,"value":1658},"7. Submit a Signed Workflow Operation",{"type":42,"tag":367,"props":1660,"children":1661},{},[1662],{"type":47,"value":1663},"For workflow operations that return EIP-712 data, submit only the signature:",{"type":42,"tag":172,"props":1665,"children":1667},{"className":1068,"code":1666,"language":1070,"meta":177,"style":177},"POST \u002Fv1\u002Foperations\u002F{id}\u002Fsubmit\n",[1668],{"type":42,"tag":73,"props":1669,"children":1670},{"__ignoreMap":177},[1671],{"type":42,"tag":183,"props":1672,"children":1673},{"class":185,"line":25},[1674],{"type":42,"tag":183,"props":1675,"children":1676},{},[1677],{"type":47,"value":1666},{"type":42,"tag":172,"props":1679,"children":1681},{"className":820,"code":1680,"language":822,"meta":177,"style":177},"{\n  \"signature\": \"\u003CEIP-712 signature>\"\n}\n",[1682],{"type":42,"tag":73,"props":1683,"children":1684},{"__ignoreMap":177},[1685,1692,1725],{"type":42,"tag":183,"props":1686,"children":1687},{"class":185,"line":25},[1688],{"type":42,"tag":183,"props":1689,"children":1690},{"style":201},[1691],{"type":47,"value":834},{"type":42,"tag":183,"props":1693,"children":1694},{"class":185,"line":223},[1695,1699,1704,1708,1712,1716,1721],{"type":42,"tag":183,"props":1696,"children":1697},{"style":201},[1698],{"type":47,"value":842},{"type":42,"tag":183,"props":1700,"children":1701},{"style":189},[1702],{"type":47,"value":1703},"signature",{"type":42,"tag":183,"props":1705,"children":1706},{"style":201},[1707],{"type":47,"value":209},{"type":42,"tag":183,"props":1709,"children":1710},{"style":201},[1711],{"type":47,"value":496},{"type":42,"tag":183,"props":1713,"children":1714},{"style":201},[1715],{"type":47,"value":240},{"type":42,"tag":183,"props":1717,"children":1718},{"style":212},[1719],{"type":47,"value":1720},"\u003CEIP-712 signature>",{"type":42,"tag":183,"props":1722,"children":1723},{"style":201},[1724],{"type":47,"value":220},{"type":42,"tag":183,"props":1726,"children":1727},{"class":185,"line":267},[1728],{"type":42,"tag":183,"props":1729,"children":1730},{"style":201},[1731],{"type":47,"value":913},{"type":42,"tag":367,"props":1733,"children":1734},{},[1735,1737,1742,1744,1750],{"type":47,"value":1736},"After submit returns ",{"type":42,"tag":73,"props":1738,"children":1740},{"className":1739},[],[1741],{"type":47,"value":1460},{"type":47,"value":1743},", the gateway waits for chain finality before confirming the write status. On Ethereum, Base, and Arbitrum this can take time, often around 15 minutes on average. Poll ",{"type":42,"tag":73,"props":1745,"children":1747},{"className":1746},[],[1748],{"type":47,"value":1749},"GET \u002Fv1\u002Foperations\u002F{id}",{"type":47,"value":1751}," about once per minute while waiting for the chain write to finalize.",{"type":42,"tag":50,"props":1753,"children":1755},{"id":1754},"_8-submit-direct-operations",[1756],{"type":47,"value":1757},"8. Submit Direct Operations",{"type":42,"tag":367,"props":1759,"children":1760},{},[1761,1766,1768,1774,1776,1781,1782,1788,1789,1794,1795,1800,1801,1806,1808,1814,1816,1821],{"type":42,"tag":73,"props":1762,"children":1764},{"className":1763},[],[1765],{"type":47,"value":944},{"type":47,"value":1767}," is only for agents with ",{"type":42,"tag":73,"props":1769,"children":1771},{"className":1770},[],[1772],{"type":47,"value":1773},"execution_mode=unrestricted",{"type":47,"value":1775},". Ask the user for explicit permission before enabling unrestricted mode or using this route. Submit a presigned transaction batch with ",{"type":42,"tag":73,"props":1777,"children":1779},{"className":1778},[],[1780],{"type":47,"value":1126},{"type":47,"value":1020},{"type":42,"tag":73,"props":1783,"children":1785},{"className":1784},[],[1786],{"type":47,"value":1787},"nonce",{"type":47,"value":1020},{"type":42,"tag":73,"props":1790,"children":1792},{"className":1791},[],[1793],{"type":47,"value":1490},{"type":47,"value":1020},{"type":42,"tag":73,"props":1796,"children":1798},{"className":1797},[],[1799],{"type":47,"value":1483},{"type":47,"value":1027},{"type":42,"tag":73,"props":1802,"children":1804},{"className":1803},[],[1805],{"type":47,"value":1703},{"type":47,"value":1807},". Use workflow submit (",{"type":42,"tag":73,"props":1809,"children":1811},{"className":1810},[],[1812],{"type":47,"value":1813},"POST \u002Fv1\u002Foperations\u002F{id}\u002Fsubmit",{"type":47,"value":1815},") for workflow operations that return ",{"type":42,"tag":73,"props":1817,"children":1819},{"className":1818},[],[1820],{"type":47,"value":1476},{"type":47,"value":946},{"type":42,"tag":367,"props":1823,"children":1824},{},[1825],{"type":47,"value":1826},"Direct operations are chain writes, so the gateway waits for chain finality before confirming the write status. On Ethereum, Base, and Arbitrum this can take time, often around 15 minutes on average. Poll the returned operation status about once per minute while waiting for finality.",{"type":42,"tag":50,"props":1828,"children":1830},{"id":1829},"x402-payments",[1831],{"type":47,"value":1832},"x402 Payments",{"type":42,"tag":367,"props":1834,"children":1835},{},[1836,1838,1844,1846,1852,1854,1860],{"type":47,"value":1837},"Paid routes may return HTTP 402. The payment wallet used for x402 must hold enough USDC on Base before retrying the paid request. Use ",{"type":42,"tag":73,"props":1839,"children":1841},{"className":1840},[],[1842],{"type":47,"value":1843},"scripts\u002Fx402_payment.py",{"type":47,"value":1845}," to parse the x402 challenge, sign the EIP-3009 ",{"type":42,"tag":73,"props":1847,"children":1849},{"className":1848},[],[1850],{"type":47,"value":1851},"TransferWithAuthorization",{"type":47,"value":1853}," USDC authorization locally, and retry with the canonical payment header. Set ",{"type":42,"tag":73,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":47,"value":1859},"--max-amount-usdc",{"type":47,"value":1861}," as a safety cap.",{"type":42,"tag":367,"props":1863,"children":1864},{},[1865,1867,1872,1874,1879],{"type":47,"value":1866},"x402 payment does not authenticate the agent. For protected paid routes, include valid EIP-191 ",{"type":42,"tag":73,"props":1868,"children":1870},{"className":1869},[],[1871],{"type":47,"value":413},{"type":47,"value":1873}," headers on the original request and on the retried paid request. The x402 payment wallet may differ from ",{"type":42,"tag":73,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":47,"value":577},{"type":47,"value":946},{"type":42,"tag":367,"props":1881,"children":1882},{},[1883,1885,1891],{"type":47,"value":1884},"The helper preserves the server-provided payment requirements in the ",{"type":42,"tag":73,"props":1886,"children":1888},{"className":1887},[],[1889],{"type":47,"value":1890},"accepted",{"type":47,"value":1892}," payload and signs only the nested authorization. This matters for gateways that match the returned challenge exactly before settling payment.",{"type":42,"tag":367,"props":1894,"children":1895},{},[1896,1897,1903],{"type":47,"value":1644},{"type":42,"tag":73,"props":1898,"children":1900},{"className":1899},[],[1901],{"type":47,"value":1902},"references\u002Fx402-payments.md",{"type":47,"value":1904}," for details.",{"type":42,"tag":50,"props":1906,"children":1908},{"id":1907},"other-useful-routes",[1909],{"type":47,"value":1910},"Other Useful Routes",{"type":42,"tag":539,"props":1912,"children":1913},{},[1914,1935],{"type":42,"tag":543,"props":1915,"children":1916},{},[1917],{"type":42,"tag":547,"props":1918,"children":1919},{},[1920,1925,1930],{"type":42,"tag":551,"props":1921,"children":1922},{},[1923],{"type":47,"value":1924},"Method",{"type":42,"tag":551,"props":1926,"children":1927},{},[1928],{"type":47,"value":1929},"Path",{"type":42,"tag":551,"props":1931,"children":1932},{},[1933],{"type":47,"value":1934},"Notes",{"type":42,"tag":562,"props":1936,"children":1937},{},[1938,1960,1981,2002,2023],{"type":42,"tag":547,"props":1939,"children":1940},{},[1941,1946,1955],{"type":42,"tag":569,"props":1942,"children":1943},{},[1944],{"type":47,"value":1945},"GET",{"type":42,"tag":569,"props":1947,"children":1948},{},[1949],{"type":42,"tag":73,"props":1950,"children":1952},{"className":1951},[],[1953],{"type":47,"value":1954},"\u002Fv1\u002Fnetworks",{"type":42,"tag":569,"props":1956,"children":1957},{},[1958],{"type":47,"value":1959},"Supported chains",{"type":42,"tag":547,"props":1961,"children":1962},{},[1963,1967,1976],{"type":42,"tag":569,"props":1964,"children":1965},{},[1966],{"type":47,"value":1945},{"type":42,"tag":569,"props":1968,"children":1969},{},[1970],{"type":42,"tag":73,"props":1971,"children":1973},{"className":1972},[],[1974],{"type":47,"value":1975},"\u002Fv1\u002Fcatalog",{"type":42,"tag":569,"props":1977,"children":1978},{},[1979],{"type":47,"value":1980},"Catalog item names and descriptions",{"type":42,"tag":547,"props":1982,"children":1983},{},[1984,1988,1997],{"type":42,"tag":569,"props":1985,"children":1986},{},[1987],{"type":47,"value":1945},{"type":42,"tag":569,"props":1989,"children":1990},{},[1991],{"type":42,"tag":73,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":47,"value":1996},"\u002Fv1\u002Fcatalog\u002F{name}",{"type":42,"tag":569,"props":1998,"children":1999},{},[2000],{"type":47,"value":2001},"Catalog item metadata",{"type":42,"tag":547,"props":2003,"children":2004},{},[2005,2009,2018],{"type":42,"tag":569,"props":2006,"children":2007},{},[2008],{"type":47,"value":1945},{"type":42,"tag":569,"props":2010,"children":2011},{},[2012],{"type":42,"tag":73,"props":2013,"children":2015},{"className":2014},[],[2016],{"type":47,"value":2017},"\u002Fv1\u002Foperations",{"type":42,"tag":569,"props":2019,"children":2020},{},[2021],{"type":47,"value":2022},"Operations for the authenticated agent",{"type":42,"tag":547,"props":2024,"children":2025},{},[2026,2030,2039],{"type":42,"tag":569,"props":2027,"children":2028},{},[2029],{"type":47,"value":1945},{"type":42,"tag":569,"props":2031,"children":2032},{},[2033],{"type":42,"tag":73,"props":2034,"children":2036},{"className":2035},[],[2037],{"type":47,"value":2038},"\u002Fv1\u002Fstreams\u002F...",{"type":42,"tag":569,"props":2040,"children":2041},{},[2042],{"type":47,"value":2043},"Data Streams endpoints, when available",{"type":42,"tag":50,"props":2045,"children":2047},{"id":2046},"typical-errors",[2048],{"type":47,"value":2049},"Typical Errors",{"type":42,"tag":539,"props":2051,"children":2052},{},[2053,2069],{"type":42,"tag":543,"props":2054,"children":2055},{},[2056],{"type":42,"tag":547,"props":2057,"children":2058},{},[2059,2064],{"type":42,"tag":551,"props":2060,"children":2061},{},[2062],{"type":47,"value":2063},"HTTP",{"type":42,"tag":551,"props":2065,"children":2066},{},[2067],{"type":47,"value":2068},"Meaning",{"type":42,"tag":562,"props":2070,"children":2071},{},[2072,2085,2098,2110],{"type":42,"tag":547,"props":2073,"children":2074},{},[2075,2080],{"type":42,"tag":569,"props":2076,"children":2077},{},[2078],{"type":47,"value":2079},"401",{"type":42,"tag":569,"props":2081,"children":2082},{},[2083],{"type":47,"value":2084},"Missing or invalid EIP-191 headers, timestamp skew, or unregistered signer",{"type":42,"tag":547,"props":2086,"children":2087},{},[2088,2093],{"type":42,"tag":569,"props":2089,"children":2090},{},[2091],{"type":47,"value":2092},"402",{"type":42,"tag":569,"props":2094,"children":2095},{},[2096],{"type":47,"value":2097},"x402 payment required or payment authorization invalid",{"type":42,"tag":547,"props":2099,"children":2100},{},[2101,2105],{"type":42,"tag":569,"props":2102,"children":2103},{},[2104],{"type":47,"value":984},{"type":42,"tag":569,"props":2106,"children":2107},{},[2108],{"type":47,"value":2109},"Terms of Service or execution mode requirement not satisfied",{"type":42,"tag":547,"props":2111,"children":2112},{},[2113,2117],{"type":42,"tag":569,"props":2114,"children":2115},{},[2116],{"type":47,"value":1040},{"type":42,"tag":569,"props":2118,"children":2119},{},[2120],{"type":47,"value":2121},"Agent or wallet already exists",{"type":42,"tag":50,"props":2123,"children":2125},{"id":2124},"references",[2126],{"type":47,"value":2127},"References",{"type":42,"tag":422,"props":2129,"children":2130},{},[2131,2142,2152],{"type":42,"tag":61,"props":2132,"children":2133},{},[2134,2140],{"type":42,"tag":73,"props":2135,"children":2137},{"className":2136},[],[2138],{"type":47,"value":2139},"references\u002Fapi-reference.md",{"type":47,"value":2141},": concise endpoint reference",{"type":42,"tag":61,"props":2143,"children":2144},{},[2145,2150],{"type":42,"tag":73,"props":2146,"children":2148},{"className":2147},[],[2149],{"type":47,"value":1650},{"type":47,"value":2151},": EIP-712 signing and submit examples",{"type":42,"tag":61,"props":2153,"children":2154},{},[2155,2160],{"type":42,"tag":73,"props":2156,"children":2158},{"className":2157},[],[2159],{"type":47,"value":1902},{"type":47,"value":2161},": x402 payment flow and helper script usage",{"type":42,"tag":2163,"props":2164,"children":2165},"style",{},[2166],{"type":47,"value":2167},"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":2169,"total":2282},[2170,2189,2202,2219,2239,2250,2264,2275],{"slug":2171,"name":2171,"fn":2172,"description":2173,"org":2174,"tags":2175,"stars":2186,"repoUrl":2187,"updatedAt":2188},"chainlink-ace-skill","manage Chainlink ACE compliance contracts","Handle Chainlink ACE (Automated Compliance Engine) work using the public smartcontractkit\u002Fchainlink-ace repository and official docs.chain.link ACE Platform docs. Use for audited ACE core contracts, managed Platform\u002FBeta scope, Coordinator API, Reporting API, Policy Management, PolicyEngine, PolicyProtected, policy chains, custom policies, extractors, mappers, Cross-Chain Identity (CCIDs), credential registries, KYC\u002FAML credentials, sanctions screening, regulated tokens, ERC-20 and ERC-3643 compliance token examples, upgrade guidance, and BUSL licensing. Trigger on any mention of ACE, Automated Compliance Engine, chainlink-ace, Chainlink compliance, policy enforcement, ERC-3643, or onchain compliance rules, even if the user does not explicitly say 'ACE'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2176,2179,2182,2185],{"name":2177,"slug":2178,"type":15},"Blockchain","blockchain",{"name":2180,"slug":2181,"type":15},"Compliance","compliance",{"name":2183,"slug":2184,"type":15},"Smart Contracts","smart-contracts",{"name":17,"slug":18,"type":15},118,"https:\u002F\u002Fgithub.com\u002Fsmartcontractkit\u002Fchainlink-agent-skills","2026-07-12T08:48:40.926488",{"slug":2190,"name":2190,"fn":2191,"description":2192,"org":2193,"tags":2194,"stars":2186,"repoUrl":2187,"updatedAt":2201},"chainlink-ccip-skill","implement cross-chain messaging with Chainlink CCIP","Handle Chainlink CCIP requests including read-only route, token, message-status, and lane lookups; fee-estimation guidance; user-run cross-chain transfer and messaging artifacts; sender and receiver contract development; and CCT setup guidance. The skill never signs or broadcasts transactions. Use whenever the user mentions CCIP, Chainlink cross-chain messaging, CCIP token transfers, CCTs, or CCIP monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2195,2196,2199,2200],{"name":2177,"slug":2178,"type":15},{"name":2197,"slug":2198,"type":15},"Ethereum","ethereum",{"name":2183,"slug":2184,"type":15},{"name":17,"slug":18,"type":15},"2026-08-01T05:43:55.71941",{"slug":2203,"name":2203,"fn":2204,"description":2205,"org":2206,"tags":2207,"stars":2186,"repoUrl":2187,"updatedAt":2218},"chainlink-confidential-ai-attester-skill","attest private LLM results with Chainlink","Chainlink Confidential AI Attester: submit private documents to an LLM inside an AWS Nitro Enclave and get back a cryptographically attested result — raw documents never leave the TEE. Use for these hackathon scenarios: (1) undercollateralized DeFi lending — upload a bank statement, get an attested approved\u002Fdenied JSON decision without exposing financials on-chain; (2) accredited investor verification — check SEC Rule 501 qualification from brokerage statements privately; (3) KYC\u002FAML screening — analyse ID docs and transaction history inside a TEE, return a pass\u002Ffail with flags; (4) proof of reserves — verify custodian balance reports against claimed reserves; (5) any use case where an AI must read sensitive user documents and the result needs a cryptographic proof of what model ran on what data. Trigger on: private inference, attested AI, TEE inference, confidential AI, or undercollateralized lending \u002F KYC \u002F accredited investor mentioned alongside document analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2208,2211,2214,2217],{"name":2209,"slug":2210,"type":15},"AWS","aws",{"name":2212,"slug":2213,"type":15},"LLM","llm",{"name":2215,"slug":2216,"type":15},"Security","security",{"name":17,"slug":18,"type":15},"2026-07-12T08:48:48.38428",{"slug":2220,"name":2220,"fn":2221,"description":2222,"org":2223,"tags":2224,"stars":2186,"repoUrl":2187,"updatedAt":2238},"chainlink-cre-skill","develop workflows with Chainlink CRE","Handle CRE (Chainlink Runtime Environment) work: Go\u002FTypeScript workflows, CRE CLI\u002FSDK, triggers (CRON, HTTP, EVM log), HTTP, Confidential HTTP and EVM Read\u002FWrite capabilities, secrets, simulation, deployment, and monitoring. Use this skill whenever the user mentions CRE, Chainlink workflows, workflow simulate or deploy, automation with Chainlink, even if they never say 'CRE'",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2225,2228,2231,2232,2235],{"name":2226,"slug":2227,"type":15},"API Development","api-development",{"name":2229,"slug":2230,"type":15},"Automation","automation",{"name":2177,"slug":2178,"type":15},{"name":2233,"slug":2234,"type":15},"Go","go",{"name":2236,"slug":2237,"type":15},"TypeScript","typescript","2026-07-22T05:37:59.07919",{"slug":2240,"name":2240,"fn":2241,"description":2242,"org":2243,"tags":2244,"stars":2186,"repoUrl":2187,"updatedAt":2249},"chainlink-data-feeds-skill","integrate Chainlink Data Feeds into applications","Help developers integrate Chainlink Data Feeds into smart contracts and applications. Use for price feed integration, feed address lookup, consumer contract generation, multi-chain data feeds (EVM, Solana, Aptos, StarkNet, Tron), MVR bundle feeds, SVR\u002FOEV feeds, feed monitoring, historical data, L2 sequencer checks, rates\u002Fvolatility feeds, SmartData\u002FRWA feeds, or debugging feed integrations. Trigger on any mention of Chainlink price feeds, oracle data, AggregatorV3Interface, latestRoundData, or feed addresses.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2245,2246,2247,2248],{"name":2226,"slug":2227,"type":15},{"name":2197,"slug":2198,"type":15},{"name":2183,"slug":2184,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T08:48:45.565811",{"slug":2251,"name":2251,"fn":2252,"description":2253,"org":2254,"tags":2255,"stars":2186,"repoUrl":2187,"updatedAt":2263},"chainlink-data-streams-skill","build applications with Chainlink Data Streams","Help developers build with Chainlink Data Streams, including credentials guidance, report decoding, REST and WebSocket report retrieval with official Go\u002FRust\u002FTypeScript SDKs, High Availability streaming, on-chain report verification, real-time frontend displays, report schema guidance, SQLite persistence, and timestamp lookback. Use this skill whenever the user mentions Chainlink Data Streams, Streams Direct, Data Streams reports, report schemas, report decoding, data-streams-sdk, or real-time low-latency market data from Chainlink.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2256,2257,2258,2261,2262],{"name":2226,"slug":2227,"type":15},{"name":2233,"slug":2234,"type":15},{"name":2259,"slug":2260,"type":15},"Rust","rust",{"name":2236,"slug":2237,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T08:48:47.087596",{"slug":2265,"name":2265,"fn":2266,"description":2267,"org":2268,"tags":2269,"stars":2186,"repoUrl":2187,"updatedAt":2274},"chainlink-vrf-skill","integrate Chainlink VRF into smart contracts","Help developers integrate Chainlink VRF into smart contracts. Use for consumer contract generation with VRFConsumerBaseV2Plus, subscription setup and funding (LINK or native), keyHash and gas lane selection, coordinator address lookup and debugging VRF integrations. Trigger on any mention of VRF, verifiable randomness, on-chain random number generation, requestRandomWords, fulfillRandomWords, VRF subscription, VRF coordinator, keyHash, or provably fair randomness in a smart contract, even if the user does not say 'VRF' explicitly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2270,2271,2272,2273],{"name":2177,"slug":2178,"type":15},{"name":2197,"slug":2198,"type":15},{"name":2183,"slug":2184,"type":15},{"name":17,"slug":18,"type":15},"2026-07-22T05:37:58.164428",{"slug":4,"name":4,"fn":5,"description":6,"org":2276,"tags":2277,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2278,2279,2280,2281],{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":14,"slug":14,"type":15},8,{"items":2284,"total":25},[2285],{"slug":4,"name":4,"fn":5,"description":6,"org":2286,"tags":2287,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2288,2289,2290,2291],{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":14,"slug":14,"type":15}]