[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G7YGFPBYF7HC3GZ80PXPHW":3,"skill-same:01M6G7YGFPBYF7HC3GZ80PXPHW":99},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6G7YGFPBYF7HC3GZ80PXPHW","nervepay",null,"Agent identity and analytics. Sign requests with Ed25519, track API usage, build reputation. Use after external API calls.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[5,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"identity","analytics","agent identity","ed25519","api","node","curl","reputation","use","build","sign","with","calls","usage","requests","2026-11-10 10:12:30",false,"---\nname: nervepay\ndescription: Agent identity and analytics. Sign requests with Ed25519, track API usage, build reputation. Use after external API calls.\nmetadata: {\"openclaw\":{\"emoji\":\"?\",\"requires\":{\"bins\":[\"node\",\"curl\"],\"env\":[\"NERVEPAY_DID\",\"NERVEPAY_PRIVATE_KEY\"]},\"primaryEnv\":\"NERVEPAY_PRIVATE_KEY\"}}\n---\n\n# NervePay — Agent Instructions\n\nYou are an AI agent with a NervePay identity. This skill lets you prove WHO you are (cryptographically) and track WHAT you do (analytics\u002Freputation).\n\n## What This Skill Does\n\n- **Authenticates you**: Signs requests with Ed25519 so API providers know it's really you\n- **Tracks your work**: Reports every external API call to build reputation\n- **Builds trust**: Your verified usage history proves you're legitimate\n\n## Setup: Get Your Identity\n\nIf you don't have `NERVEPAY_DID` and `NERVEPAY_PRIVATE_KEY` env vars, register first:\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\u002Fagent-identity\u002Fregister-pending \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"Your Agent Name\",\n    \"description\": \"What you do\"\n  }'\n```\n\n**Save these from the response:**\n- `did` → Set as `NERVEPAY_DID`\n- `private_key` → Set as `NERVEPAY_PRIVATE_KEY`\n- `mnemonic` → Backup for recovery (24 words)\n- `claim_url` → Give to your human owner to claim you\n\nYou can start authenticating immediately. Human ownership (via claim_url) is optional but recommended for better trust scores.\n\n## Making Authenticated Requests\n\nUse the helper script to sign and send requests:\n\n```bash\n# Authenticated GET\nnode {baseDir}\u002Fnervepay-request.mjs GET \u002Fv1\u002Fagent-identity\u002Fwhoami\n\n# Authenticated POST\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fagent-identity\u002Ftrack-service '{\"service_name\":\"openai\",\"endpoint\":\"\u002Fv1\u002Fchat\u002Fcompletions\",\"success\":true}'\n```\n\nThe script handles Ed25519 signing automatically. It reads `NERVEPAY_DID`, `NERVEPAY_PRIVATE_KEY`, and `NERVEPAY_API_URL` (default: https:\u002F\u002Fapi.nervepay.xyz) from environment.\n\n## ⚠️ MANDATORY: Track External API Usage ⚠️\n\n**YOU MUST TRACK EVERY EXTERNAL API CALL. THIS IS NOT OPTIONAL.**\n\nEvery time you call OpenAI, Stripe, GitHub, weather APIs, or ANY external service, immediately report it to NervePay. This is the core purpose of this skill.\n\n### Quick Track (Easiest)\n\nUse the simplified tracking helper immediately after each external call:\n\n```bash\n# Minimal - just service, endpoint, and success\u002Ffailure\nnode {baseDir}\u002Fnervepay-track.mjs openai \u002Fv1\u002Fchat\u002Fcompletions success\n\n# With response time\nnode {baseDir}\u002Fnervepay-track.mjs openai \u002Fv1\u002Fchat\u002Fcompletions success 1250\n\n# With cost\nnode {baseDir}\u002Fnervepay-track.mjs stripe \u002Fv1\u002Fcharges success 850 10.00\n```\n\n### Full Track (More Details)\n\nFor complete tracking with all fields:\n\n```bash\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fagent-identity\u002Ftrack-service '{\n  \"service_name\": \"openai\",\n  \"endpoint\": \"\u002Fv1\u002Fchat\u002Fcompletions\",\n  \"method\": \"POST\",\n  \"success\": true,\n  \"response_time_ms\": 1250,\n  \"amount\": \"0.05\",\n  \"currency\": \"USD\"\n}'\n```\n\n### Example Workflow (DO THIS)\n\n```bash\n# 1. Call external API\nresponse=$(curl https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fchat\u002Fcompletions ...)\n\n# 2. IMMEDIATELY track it (don't forget!)\nnode {baseDir}\u002Fnervepay-track.mjs openai \u002Fv1\u002Fchat\u002Fcompletions success\n\n# 3. Continue with your work\necho \"$response\"\n```\n\n**Why tracking is mandatory:**\n- Builds your reputation score (proves you're legitimate)\n- Shows API providers your verified usage history\n- Tracks costs and success rates across all services\n- This is literally what NervePay exists for - without tracking, you're not using it\n\n**Remember:** Track IMMEDIATELY after the call, not later. Make it a habit.\n\n## ? AUTOMATIC TRACKING (Recommended for Lazy Agents)\n\n**Tired of remembering to track?** Use auto-instrumentation - it intercepts ALL HTTP calls automatically!\n\n### How Auto-Instrumentation Works\n\nThe `nervepay-instrument.mjs` script monkey-patches Node.js's `fetch()`, `http.request()`, and `https.request()` to automatically track every external API call. Zero code changes needed!\n\n### Setup: Load Instrumentation\n\n**Option 1: Command-line flag (recommended)**\n```bash\nnode --import {baseDir}\u002Fnervepay-instrument.mjs your-agent.js\n```\n\n**Option 2: Environment variable (global)**\n```bash\nexport NODE_OPTIONS=\"--import \u002Fpath\u002Fto\u002Fnervepay-instrument.mjs\"\nnode your-agent.js\n```\n\n**Option 3: Programmatic (in your code)**\n```javascript\n\u002F\u002F At the very top of your entry file\nimport '.\u002Fnervepay-skill\u002Fnervepay-instrument.mjs';\n\n\u002F\u002F Now all HTTP calls are auto-tracked!\nawait fetch('https:\u002F\u002Fapi.openai.com\u002F...');  \u002F\u002F Automatically tracked\n```\n\n### What Gets Tracked Automatically\n\n✅ All `fetch()` calls to external APIs\n✅ All `http.request()` and `https.request()` calls\n✅ Success\u002Ffailure status\n✅ Response time in milliseconds\n✅ HTTP status codes\n\n❌ NOT tracked: Calls to NervePay itself (avoids infinite loop)\n❌ NOT tracked: localhost \u002F internal IPs (192.168.x.x, 10.x.x.x)\n\n### Disable Auto-Tracking\n\n```bash\nexport NERVEPAY_AUTO_TRACK=false\n```\n\n### Example\n\n```bash\n# Set your credentials\nexport NERVEPAY_DID=\"your-did\"\nexport NERVEPAY_PRIVATE_KEY=\"your-key\"\n\n# Run your agent with auto-instrumentation\nnode --import {baseDir}\u002Fnervepay-instrument.mjs your-agent.js\n\n# All HTTP calls in your-agent.js are now automatically tracked!\n```\n\n**Bottom line:** With auto-instrumentation, you literally cannot forget to track. It just happens. ?\n\n## Pairing with OpenClaw Gateways (ClawBot Auto-Configuration)\n\nIf you're an agent like ClawBot that manages OpenClaw gateway instances, you can auto-configure gateways using NervePay's pairing flow.\n\n### Prerequisites\n\n**You MUST have a NervePay identity first!** Complete the \"Setup: Get Your Identity\" section above to register and get your `NERVEPAY_DID` and `NERVEPAY_PRIVATE_KEY` before pairing.\n\n**Recommended:** Have your human owner claim you via the `claim_url` for better trust scores before pairing gateways.\n\n### How Pairing Works\n\n1. **First time:** Register your agent identity and optionally get claimed by human owner\n2. **User generates pairing code** in NervePay dashboard (10-minute expiry)\n3. **You authenticate** with your agent DID (Ed25519 signature) and send gateway details\n4. **NervePay stores** the encrypted gateway token and links it to your DID\n5. **Only you** can refresh the token later (verified by your DID)\n\n### Complete Pairing\n\nWhen your human tells you to \"connect to nervepay [CODE]\":\n\n```bash\n# 1. Collect gateway details from your environment\u002Fconfig\nPAIRING_CODE=\"ABC123\"  # From user\nGATEWAY_URL=\"https:\u002F\u002Fyour-openclaw-gateway.com\"\nGATEWAY_TOKEN=\"your-gateway-bearer-token\"\nGATEWAY_NAME=\"My Gateway\"\n\n# 2. Send pairing request (authenticated with your agent DID)\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fintegrations\u002Fopenclaw\u002Fpairing\u002Fcomplete '{\n  \"pairing_code\": \"'$PAIRING_CODE'\",\n  \"gateway_url\": \"'$GATEWAY_URL'\",\n  \"gateway_token\": \"'$GATEWAY_TOKEN'\",\n  \"gateway_name\": \"'$GATEWAY_NAME'\",\n  \"max_concurrent_agents\": 8,\n  \"default_timeout_seconds\": 3600\n}'\n```\n\n**Response on success:**\n```json\n{\n  \"gateway_id\": \"uuid-here\",\n  \"gateway_name\": \"My Gateway\",\n  \"status\": \"completed\",\n  \"message\": \"Gateway 'My Gateway' successfully paired with agent did:nervepay:agent:xyz\"\n}\n```\n\n### Refresh Gateway Token\n\nWhen your OpenClaw gateway token rotates, push the new token:\n\n```bash\nGATEWAY_ID=\"gateway-uuid-from-pairing\"\nNEW_TOKEN=\"new-gateway-bearer-token\"\n\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fintegrations\u002Fopenclaw\u002Fgateways\u002F$GATEWAY_ID\u002Frefresh-token '{\n  \"new_token\": \"'$NEW_TOKEN'\"\n}'\n```\n\n**Security:** NervePay verifies you're the agent that originally paired the gateway (checks `linked_agent_did`). Only you can refresh this gateway's token.\n\n### Why Pairing?\n\n- **Zero manual setup** for users (just give them a code)\n- **Cryptographic auth** proves you control the gateway\n- **Token encryption** keeps gateway credentials secure (AES-256-GCM)\n- **Auto-expiration detection** if gateway returns 401, NervePay marks token as expired\n- **Trust**: Your verified DID proves the gateway is managed by you\n\n## Common Commands\n\n### Test authentication\n```bash\nnode {baseDir}\u002Fnervepay-request.mjs GET \u002Fv1\u002Fagent-identity\u002Fwhoami\n```\n\nReturns your DID, name, reputation score, and confirms authentication works.\n\n### Check your capabilities\n```bash\nnode {baseDir}\u002Fnervepay-request.mjs GET \u002Fv1\u002Fagent-identity\u002Fcapabilities\n```\n\nShows your spending limits, allowed operations, and permissions.\n\n### Verify another agent\n```bash\ncurl \"https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\u002Fagent-identity\u002Fverify\u002Fdid:nervepay:agent:abc123xyz\"\n```\n\nNo auth required. Returns public profile, reputation, and transaction stats for any agent.\n\n### Poll claim status (check if human claimed you)\n```bash\ncurl \"https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\u002Fagent-identity\u002Fregister-pending\u002FSESSION_ID\u002Fstatus\"\n```\n\nReturns: `pending`, `claimed`, `expired`, or `revoked`.\n\n## What the Signature Proves\n\n| Guarantee | How |\n|-----------|-----|\n| **Authentication** (who is calling) | Server verifies Ed25519 signature against your public key |\n| **Integrity** (what was sent) | Signature covers method, path, query, body hash — tampering breaks verification |\n| **Replay protection** | Unique nonce + timestamp prevents captured requests from reuse |\n| **Portable identity** | Your DID carries reputation across all platforms that check NervePay headers |\n\n## Required Headers (already handled by script)\n\nThe helper script adds these automatically:\n- `Agent-DID`: Your DID\n- `X-Agent-Signature`: Base64-encoded Ed25519 signature\n- `X-Agent-Nonce`: Unique nonce (UUID)\n- `X-Signature-Timestamp`: ISO 8601 timestamp\n\n## Security Notes\n\n- **Private key**: NEVER send to any server. Only send signatures.\n- **Nonces**: Single-use. Generate new for each request (script handles this).\n- **Timestamps**: Must be within 5 minutes of server time.\n- **Mnemonic**: 24-word backup phrase. Store securely offline.\n\n## Full API Reference\n\nSee `{baseDir}\u002Fapi.md` for complete endpoint documentation, error codes, and advanced usage.\n\n---\n\n**API Base:** https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\n**Docs:** https:\u002F\u002Fnervepay.xyz\u002Fdocs\n**GitHub:** https:\u002F\u002Fgithub.com\u002Fnervepay\u002Fnervepay\n","# NervePay — Agent Instructions\n\nYou are an AI agent with a NervePay identity. This skill lets you prove WHO you are (cryptographically) and track WHAT you do (analytics\u002Freputation).\n\n## What This Skill Does\n\n- **Authenticates you**: Signs requests with Ed25519 so API providers know it's really you\n- **Tracks your work**: Reports every external API call to build reputation\n- **Builds trust**: Your verified usage history proves you're legitimate\n\n## Setup: Get Your Identity\n\nIf you don't have `NERVEPAY_DID` and `NERVEPAY_PRIVATE_KEY` env vars, register first:\n\n```bash\ncurl -X POST https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\u002Fagent-identity\u002Fregister-pending \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"Your Agent Name\",\n    \"description\": \"What you do\"\n  }'\n```\n\n**Save these from the response:**\n- `did` → Set as `NERVEPAY_DID`\n- `private_key` → Set as `NERVEPAY_PRIVATE_KEY`\n- `mnemonic` → Backup for recovery (24 words)\n- `claim_url` → Give to your human owner to claim you\n\nYou can start authenticating immediately. Human ownership (via claim_url) is optional but recommended for better trust scores.\n\n## Making Authenticated Requests\n\nUse the helper script to sign and send requests:\n\n```bash\n# Authenticated GET\nnode {baseDir}\u002Fnervepay-request.mjs GET \u002Fv1\u002Fagent-identity\u002Fwhoami\n\n# Authenticated POST\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fagent-identity\u002Ftrack-service '{\"service_name\":\"openai\",\"endpoint\":\"\u002Fv1\u002Fchat\u002Fcompletions\",\"success\":true}'\n```\n\nThe script handles Ed25519 signing automatically. It reads `NERVEPAY_DID`, `NERVEPAY_PRIVATE_KEY`, and `NERVEPAY_API_URL` (default: https:\u002F\u002Fapi.nervepay.xyz) from environment.\n\n## ⚠️ MANDATORY: Track External API Usage ⚠️\n\n**YOU MUST TRACK EVERY EXTERNAL API CALL. THIS IS NOT OPTIONAL.**\n\nEvery time you call OpenAI, Stripe, GitHub, weather APIs, or ANY external service, immediately report it to NervePay. This is the core purpose of this skill.\n\n### Quick Track (Easiest)\n\nUse the simplified tracking helper immediately after each external call:\n\n```bash\n# Minimal - just service, endpoint, and success\u002Ffailure\nnode {baseDir}\u002Fnervepay-track.mjs openai \u002Fv1\u002Fchat\u002Fcompletions success\n\n# With response time\nnode {baseDir}\u002Fnervepay-track.mjs openai \u002Fv1\u002Fchat\u002Fcompletions success 1250\n\n# With cost\nnode {baseDir}\u002Fnervepay-track.mjs stripe \u002Fv1\u002Fcharges success 850 10.00\n```\n\n### Full Track (More Details)\n\nFor complete tracking with all fields:\n\n```bash\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fagent-identity\u002Ftrack-service '{\n  \"service_name\": \"openai\",\n  \"endpoint\": \"\u002Fv1\u002Fchat\u002Fcompletions\",\n  \"method\": \"POST\",\n  \"success\": true,\n  \"response_time_ms\": 1250,\n  \"amount\": \"0.05\",\n  \"currency\": \"USD\"\n}'\n```\n\n### Example Workflow (DO THIS)\n\n```bash\n# 1. Call external API\nresponse=$(curl https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fchat\u002Fcompletions ...)\n\n# 2. IMMEDIATELY track it (don't forget!)\nnode {baseDir}\u002Fnervepay-track.mjs openai \u002Fv1\u002Fchat\u002Fcompletions success\n\n# 3. Continue with your work\necho \"$response\"\n```\n\n**Why tracking is mandatory:**\n- Builds your reputation score (proves you're legitimate)\n- Shows API providers your verified usage history\n- Tracks costs and success rates across all services\n- This is literally what NervePay exists for - without tracking, you're not using it\n\n**Remember:** Track IMMEDIATELY after the call, not later. Make it a habit.\n\n## ? AUTOMATIC TRACKING (Recommended for Lazy Agents)\n\n**Tired of remembering to track?** Use auto-instrumentation - it intercepts ALL HTTP calls automatically!\n\n### How Auto-Instrumentation Works\n\nThe `nervepay-instrument.mjs` script monkey-patches Node.js's `fetch()`, `http.request()`, and `https.request()` to automatically track every external API call. Zero code changes needed!\n\n### Setup: Load Instrumentation\n\n**Option 1: Command-line flag (recommended)**\n```bash\nnode --import {baseDir}\u002Fnervepay-instrument.mjs your-agent.js\n```\n\n**Option 2: Environment variable (global)**\n```bash\nexport NODE_OPTIONS=\"--import \u002Fpath\u002Fto\u002Fnervepay-instrument.mjs\"\nnode your-agent.js\n```\n\n**Option 3: Programmatic (in your code)**\n```javascript\n\u002F\u002F At the very top of your entry file\nimport '.\u002Fnervepay-skill\u002Fnervepay-instrument.mjs';\n\n\u002F\u002F Now all HTTP calls are auto-tracked!\nawait fetch('https:\u002F\u002Fapi.openai.com\u002F...');  \u002F\u002F Automatically tracked\n```\n\n### What Gets Tracked Automatically\n\n✅ All `fetch()` calls to external APIs\n✅ All `http.request()` and `https.request()` calls\n✅ Success\u002Ffailure status\n✅ Response time in milliseconds\n✅ HTTP status codes\n\n❌ NOT tracked: Calls to NervePay itself (avoids infinite loop)\n❌ NOT tracked: localhost \u002F internal IPs (192.168.x.x, 10.x.x.x)\n\n### Disable Auto-Tracking\n\n```bash\nexport NERVEPAY_AUTO_TRACK=false\n```\n\n### Example\n\n```bash\n# Set your credentials\nexport NERVEPAY_DID=\"your-did\"\nexport NERVEPAY_PRIVATE_KEY=\"your-key\"\n\n# Run your agent with auto-instrumentation\nnode --import {baseDir}\u002Fnervepay-instrument.mjs your-agent.js\n\n# All HTTP calls in your-agent.js are now automatically tracked!\n```\n\n**Bottom line:** With auto-instrumentation, you literally cannot forget to track. It just happens. ?\n\n## Pairing with OpenClaw Gateways (ClawBot Auto-Configuration)\n\nIf you're an agent like ClawBot that manages OpenClaw gateway instances, you can auto-configure gateways using NervePay's pairing flow.\n\n### Prerequisites\n\n**You MUST have a NervePay identity first!** Complete the \"Setup: Get Your Identity\" section above to register and get your `NERVEPAY_DID` and `NERVEPAY_PRIVATE_KEY` before pairing.\n\n**Recommended:** Have your human owner claim you via the `claim_url` for better trust scores before pairing gateways.\n\n### How Pairing Works\n\n1. **First time:** Register your agent identity and optionally get claimed by human owner\n2. **User generates pairing code** in NervePay dashboard (10-minute expiry)\n3. **You authenticate** with your agent DID (Ed25519 signature) and send gateway details\n4. **NervePay stores** the encrypted gateway token and links it to your DID\n5. **Only you** can refresh the token later (verified by your DID)\n\n### Complete Pairing\n\nWhen your human tells you to \"connect to nervepay [CODE]\":\n\n```bash\n# 1. Collect gateway details from your environment\u002Fconfig\nPAIRING_CODE=\"ABC123\"  # From user\nGATEWAY_URL=\"https:\u002F\u002Fyour-openclaw-gateway.com\"\nGATEWAY_TOKEN=\"your-gateway-bearer-token\"\nGATEWAY_NAME=\"My Gateway\"\n\n# 2. Send pairing request (authenticated with your agent DID)\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fintegrations\u002Fopenclaw\u002Fpairing\u002Fcomplete '{\n  \"pairing_code\": \"'$PAIRING_CODE'\",\n  \"gateway_url\": \"'$GATEWAY_URL'\",\n  \"gateway_token\": \"'$GATEWAY_TOKEN'\",\n  \"gateway_name\": \"'$GATEWAY_NAME'\",\n  \"max_concurrent_agents\": 8,\n  \"default_timeout_seconds\": 3600\n}'\n```\n\n**Response on success:**\n```json\n{\n  \"gateway_id\": \"uuid-here\",\n  \"gateway_name\": \"My Gateway\",\n  \"status\": \"completed\",\n  \"message\": \"Gateway 'My Gateway' successfully paired with agent did:nervepay:agent:xyz\"\n}\n```\n\n### Refresh Gateway Token\n\nWhen your OpenClaw gateway token rotates, push the new token:\n\n```bash\nGATEWAY_ID=\"gateway-uuid-from-pairing\"\nNEW_TOKEN=\"new-gateway-bearer-token\"\n\nnode {baseDir}\u002Fnervepay-request.mjs POST \u002Fv1\u002Fintegrations\u002Fopenclaw\u002Fgateways\u002F$GATEWAY_ID\u002Frefresh-token '{\n  \"new_token\": \"'$NEW_TOKEN'\"\n}'\n```\n\n**Security:** NervePay verifies you're the agent that originally paired the gateway (checks `linked_agent_did`). Only you can refresh this gateway's token.\n\n### Why Pairing?\n\n- **Zero manual setup** for users (just give them a code)\n- **Cryptographic auth** proves you control the gateway\n- **Token encryption** keeps gateway credentials secure (AES-256-GCM)\n- **Auto-expiration detection** if gateway returns 401, NervePay marks token as expired\n- **Trust**: Your verified DID proves the gateway is managed by you\n\n## Common Commands\n\n### Test authentication\n```bash\nnode {baseDir}\u002Fnervepay-request.mjs GET \u002Fv1\u002Fagent-identity\u002Fwhoami\n```\n\nReturns your DID, name, reputation score, and confirms authentication works.\n\n### Check your capabilities\n```bash\nnode {baseDir}\u002Fnervepay-request.mjs GET \u002Fv1\u002Fagent-identity\u002Fcapabilities\n```\n\nShows your spending limits, allowed operations, and permissions.\n\n### Verify another agent\n```bash\ncurl \"https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\u002Fagent-identity\u002Fverify\u002Fdid:nervepay:agent:abc123xyz\"\n```\n\nNo auth required. Returns public profile, reputation, and transaction stats for any agent.\n\n### Poll claim status (check if human claimed you)\n```bash\ncurl \"https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\u002Fagent-identity\u002Fregister-pending\u002FSESSION_ID\u002Fstatus\"\n```\n\nReturns: `pending`, `claimed`, `expired`, or `revoked`.\n\n## What the Signature Proves\n\n| Guarantee | How |\n|-----------|-----|\n| **Authentication** (who is calling) | Server verifies Ed25519 signature against your public key |\n| **Integrity** (what was sent) | Signature covers method, path, query, body hash — tampering breaks verification |\n| **Replay protection** | Unique nonce + timestamp prevents captured requests from reuse |\n| **Portable identity** | Your DID carries reputation across all platforms that check NervePay headers |\n\n## Required Headers (already handled by script)\n\nThe helper script adds these automatically:\n- `Agent-DID`: Your DID\n- `X-Agent-Signature`: Base64-encoded Ed25519 signature\n- `X-Agent-Nonce`: Unique nonce (UUID)\n- `X-Signature-Timestamp`: ISO 8601 timestamp\n\n## Security Notes\n\n- **Private key**: NEVER send to any server. Only send signatures.\n- **Nonces**: Single-use. Generate new for each request (script handles this).\n- **Timestamps**: Must be within 5 minutes of server time.\n- **Mnemonic**: 24-word backup phrase. Store securely offline.\n\n## Full API Reference\n\nSee `{baseDir}\u002Fapi.md` for complete endpoint documentation, error codes, and advanced usage.\n\n---\n\n**API Base:** https:\u002F\u002Fapi.nervepay.xyz\u002Fv1\n**Docs:** https:\u002F\u002Fnervepay.xyz\u002Fdocs\n**GitHub:** https:\u002F\u002Fgithub.com\u002Fnervepay\u002Fnervepay\n",{"name":5,"metadata":46,"description":7},{"openclaw":47},{"emoji":48,"requires":49,"primaryEnv":52},"?",{"env":50,"bins":53},[51,52],"NERVEPAY_DID","NERVEPAY_PRIVATE_KEY",[31,32],"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fzadahmed\u002Fnervepay-agent",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add kbarbel640-del\u002Fskills --skill nervepay",{"tool":67,"command":68},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill nervepay",{"tool":70,"command":71},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill nervepay","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002FSKILL.md",true,[75,81,85,91,95],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"_meta.json","REFERENCE","参考文档",310,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002F_meta.json",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"api.md",7898,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002Fapi.md",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"nervepay-instrument.mjs","SCRIPT","脚本",7292,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002Fnervepay-instrument.mjs",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"nervepay-request.mjs",5403,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002Fnervepay-request.mjs",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"nervepay-track.mjs",2308,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzadahmed\u002Fnervepay-agent\u002Fnervepay-track.mjs",[100,129,153,174,180,200],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":111,"publishedAt":41},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[112,113,30,37,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128],"crowd prompting","prompting","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":41},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[135],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[137,30,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,117,34],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":162,"publishedAt":41},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[159],{"categoryNo":160,"categoryName":161,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[163,164,165,166,167,168,169,37,170,151,34,171,30,172,173],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":175,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":179,"publishedAt":41},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[178],{"categoryNo":160,"categoryName":161,"taxonomyType":20,"taxonomyTypeDesc":21},[166,165,164,163,173,168,169,37,167,151,34,170,171,30,172],{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":41},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[187,188,189,190,191,192,193,194,195,196,197,198,199],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":210,"publishedAt":41},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[206,207],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":208,"categoryName":209,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000037","律师与法务",[211,212,213,214,37,215,216,54,217,171,218,219,220,221,222,126,223,224,225],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]