[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F3YPFFTCP3NMGRW7C7VFQ0":3,"skill-same:01M6F3YPFFTCP3NMGRW7C7VFQ0":50},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6F3YPFFTCP3NMGRW7C7VFQ0","crow",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FelizaOS\u002Feliza\u002Fcrow\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5],"2026-11-10 10:12:30",false,"# Crow — Agent Payment Service\n\nCrow gives your AI agent a wallet to pay for APIs and services autonomously — within spending rules set by the wallet owner. All interaction is via **curl \u002F HTTP requests** to `https:\u002F\u002Fapi.crowpay.ai`.\n\nTwo payment methods:\n- **x402 (USDC on Base)** — for APIs that return HTTP 402 Payment Required\n- **Credit card (Stripe)** — for merchants, subscriptions, API credits\n\n**Dashboard:** https:\u002F\u002Fcrowpay.ai\u002Fdashboard\n\n## When to Use This Skill\n\n- Agent gets an HTTP `402 Payment Required` response\n- Agent needs to pay for an API, buy credits, or pay a merchant\n- User wants to set up an agent wallet with spending rules\n- User asks about CrowPay, Crow, or agent payments\n- User wants their agent to buy something on the internet\n\n---\n\n## Setup — Get a Wallet and API Key\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.crowpay.ai\u002Fsetup \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{}'\n```\n\nResponse:\n```json\n{\n  \"apiKey\": \"crow_sk_abc123...\",\n  \"walletAddress\": \"0x1234...abcd\",\n  \"claimUrl\": \"https:\u002F\u002Fcrowpay.ai\u002Fclaim\u002Fxyz789\",\n  \"fundingInstructions\": \"Send USDC on Base to 0x1234...abcd\"\n}\n```\n\n**Three things to do after setup:**\n1. **Save the `apiKey` immediately** — it is shown only once and cannot be retrieved later\n2. Tell the user to visit the `claimUrl` to create their account and set spending rules\n3. Fund the wallet: send USDC on Base to `walletAddress`, or add a credit card in the dashboard\n\nAll subsequent requests need this header:\n```\nX-API-Key: crow_sk_abc123...\n```\n\n---\n\n## Decision Tree\n\n```\nAgent needs to pay for something?\n│\n├── Got an HTTP 402 from an API? (x402 \u002F USDC)\n│   │\n│   └── curl POST \u002Fauthorize  ← pass the full 402 response body\n│       ├── 200 → Got signed payload. Retry original request with payment-signature header.\n│       ├── 202 → Needs human approval. Poll GET \u002Fauthorize\u002Fstatus every 3s.\n│       └── 403 → Spending rules blocked it. Tell the user.\n│\n└── Paying a merchant with credit card?\n    │\n    └── curl POST \u002Fauthorize\u002Fcard  ← pass amount, merchant, reason\n        ├── 200 → Got sptToken. Use it to pay via Stripe.\n        ├── 202 → Needs human approval. Poll GET \u002Fauthorize\u002Fstatus every 3s.\n        └── 403 → Spending rules blocked it. Tell the user.\n```\n\n---\n\n## Endpoints\n\n### POST \u002Fsetup — Create wallet + API key\n\nNo auth required.\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.crowpay.ai\u002Fsetup \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"network\": \"eip155:8453\"}'\n```\n\n`network` is optional (defaults to Base mainnet). Response contains `apiKey`, `walletAddress`, `claimUrl`.\n\n---\n\n### POST \u002Fauthorize — Pay for an x402 API (USDC)\n\nWhen you hit an API and get a `402 Payment Required` response, forward the entire response body to Crow:\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.crowpay.ai\u002Fauthorize \\\n  -H \"X-API-Key: crow_sk_abc123...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"paymentRequired\": {\n      \"x402Version\": 2,\n      \"resource\": {\"url\": \"https:\u002F\u002Fapi.example.com\u002Fv1\u002Fdata\"},\n      \"accepts\": [{\n        \"scheme\": \"exact\",\n        \"network\": \"eip155:8453\",\n        \"amount\": \"1000000\",\n        \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n        \"payTo\": \"0xRecipientAddress\",\n        \"maxTimeoutSeconds\": 60,\n        \"extra\": {\"name\": \"USDC\", \"version\": \"2\"}\n      }]\n    },\n    \"merchant\": \"ExampleAPI\",\n    \"reason\": \"Fetching data for user task\",\n    \"platform\": \"Claude MCP\",\n    \"service\": \"Premium data API\"\n  }'\n```\n\n**Required fields:**\n- `paymentRequired` — the full 402 response body from the API\n- `merchant` — name of the service (wallet owner sees this)\n- `reason` — why the payment is needed (wallet owner sees this)\n\n**Optional context fields (recommended):**\n- `platform` — which agent\u002Fplatform is making the request (e.g. \"Claude MCP\", \"LangChain\")\n- `service` — what service\u002Fproduct the payment is for (e.g. \"Weather API call\", \"Premium data\")\n\n**200 → Auto-approved.** Response is a signed payment payload. To retry the original request:\n```bash\n# Base64-encode the entire response and put it in the payment-signature header\nPAYMENT=$(echo -n '\u003Cfull JSON response>' | base64 -w0)\ncurl https:\u002F\u002Fapi.example.com\u002Fv1\u002Fdata -H \"payment-signature: $PAYMENT\"\n```\n\n**202 → Needs human approval.** Response contains `approvalId`. Poll for status (see below).\n\n**403 → Denied.** Spending rules blocked it. Do not retry with same params.\n\nSee `references\u002Fx402-flow.md` for the complete end-to-end walkthrough.\n\n---\n\n### POST \u002Fauthorize\u002Fcard — Pay a merchant with credit card\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.crowpay.ai\u002Fauthorize\u002Fcard \\\n  -H \"X-API-Key: crow_sk_abc123...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"amountCents\": 1000,\n    \"merchant\": \"OpenAI\",\n    \"reason\": \"GPT-4 API credits\",\n    \"platform\": \"Claude MCP\",\n    \"service\": \"GPT-4 API credits\"\n  }'\n```\n\n**Required fields:**\n- `amountCents` — amount in cents (`1000` = $10.00)\n- `merchant` — merchant name\n- `reason` — why the payment is needed\n\n**Optional fields:**\n- `currency` — defaults to `\"usd\"`\n- `paymentMethodId` — specific card to use (uses default card if omitted)\n- `merchantStripeAccount` — Stripe Connect account ID if applicable\n- `platform` — which agent\u002Fplatform is making the request (e.g. \"Claude MCP\", \"LangChain\")\n- `service` — what service\u002Fproduct the payment is for (e.g. \"GPT-4 credits\", \"API subscription\")\n\n**200 → Auto-approved:**\n```json\n{\"approved\": true, \"sptToken\": \"spt_...\", \"transactionId\": \"...\"}\n```\nUse the `sptToken` to pay the merchant. Expires in 1 hour.\n\n**202 → Needs human approval.** Poll for status.\n\n**403 → Denied.** Spending rules blocked it.\n\nSee `references\u002Fcard-payments.md` for full details.\n\n---\n\n### GET \u002Fauthorize\u002Fstatus — Poll for approval\n\n```bash\ncurl \"https:\u002F\u002Fapi.crowpay.ai\u002Fauthorize\u002Fstatus?id=APPROVAL_ID\" \\\n  -H \"X-API-Key: crow_sk_abc123...\"\n```\n\nPoll every **3 seconds**. Do not poll faster.\n\n| Status in response | What to do |\n|--------------------|------------|\n| `\"pending\"` | Keep polling |\n| `\"signing\"` | Keep polling (approved, generating payload) |\n| Response has `payload` field | Done — use the signed payload to pay |\n| Response has `sptToken` field | Done — use token for card payment |\n| `\"denied\"` | Stop. Owner rejected the payment. |\n| `\"timeout\"` | Stop. Approval window expired. |\n| `\"failed\"` | Stop. Error during signing. |\n\n---\n\n### POST \u002Fsettle — Report x402 settlement\n\nAfter the x402 facilitator settles your payment on-chain, report it. Idempotent — safe to call multiple times.\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.crowpay.ai\u002Fsettle \\\n  -H \"X-API-Key: crow_sk_abc123...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"transactionId\": \"...\", \"txHash\": \"0x...\"}'\n```\n\nNot needed for card payments (Stripe webhooks handle this automatically).\n\n---\n\n## Key Numbers\n\n| Type | Format | Example | Dollar value |\n|------|--------|---------|-------------|\n| USDC (x402) | Atomic units, 6 decimals | `1000000` | $1.00 |\n| USDC (x402) | Atomic units, 6 decimals | `100000` | $0.10 |\n| Card | Cents | `100` | $1.00 |\n| Card | Cents | `1000` | $10.00 |\n\n- **Network:** Base mainnet (`eip155:8453`)\n- **USDC contract:** `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`\n\n## Default Spending Rules\n\nAuto-created when wallet is claimed:\n- Per-transaction limit: **$25**\n- Daily limit: **$50**\n- Auto-approve threshold: **$5** (above this → human must approve)\n\nOwners customize these in the dashboard.\n\n## References\n\nFor deeper walkthroughs with complete curl examples and all edge cases:\n\n- `references\u002Fapi-reference.md` — Complete API reference: every endpoint, every field, every response code with curl examples\n- `references\u002Fx402-flow.md` — End-to-end 402 payment walkthrough with curl\n- `references\u002Fcard-payments.md` — Credit card payment walkthrough with curl\n- `references\u002Ferror-handling.md` — All error codes, retry strategy, polling best practices\n\n## Finding Services to Pay For\n\nUse [Nightmarket](https:\u002F\u002Fnightmarket.ai) to discover paid APIs your agent can call. Every Nightmarket service uses x402 — Crow handles the payments automatically.\n\nInstall the Nightmarket skill:\n```\nnpx skills add https:\u002F\u002Fgithub.com\u002FFallomai\u002Fskills --skill nightmarket\n```\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FelizaOS\u002Feliza\u002Fcrow",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill crow",{"tool":42,"command":43},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill crow",{"tool":45,"command":46},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill crow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FelizaOS\u002Feliza\u002Fcrow\u002FSKILL.md",true,[],[51,61,71,80,86,93],{"skillNo":52,"name":53,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":57,"publishedAt":23},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[56],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[58,59,60],"model","model hierarchy","model hierarchy skill",{"skillNo":62,"name":63,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":67,"publishedAt":23},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[66],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[68,69,70],"MCP","zoom","zoom mcp",{"skillNo":72,"name":73,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":23},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[77,78,79,69],"sdk","zoom apps sdk","apps",{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":23},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[82],{"skillNo":87,"name":88,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":92,"publishedAt":23},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[91],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[88],{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":23},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[95]]