agentcash

Pay-per-call x402/MPP APIs (USDC on Base, Solana, Tempo). No API keys—wallet pays per request. If the task matches a SERVICES origin below, SKIP search and go straight to discover → fetch. Only search when NO listed origin fits. SERVICES: stableenrich (people/company, web search, scraping, Maps, LinkedIn, email verify, news), stablesocial (TikTok, Instagram, Facebook, Reddit, LinkedIn), stablestudio (AI image/video), stableupload (file/site hosting), stableemail (email, inboxes, subdomains), stablephone (AI calls, phone numbers), stablejobs (jobs), stabletravel (travel), stablebrowser (browser automation). TRIGGERS: research, enrich, scrape, search the web, generate image, video, social media, send email, phone call, travel, jobs, find contact, find API, x402, mpp, agentcash

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "agentcash" with this command: npx skills add merit-systems/agentcash-skills/merit-systems-agentcash-skills-agentcash

AgentCash — Paid API Access

Call any x402-protected API with automatic wallet authentication and payment. No API keys or subscriptions required.

Wallet

TaskCommand
Check total balancenpx agentcash@latest balance
Funding addresses and deposit linksnpx agentcash@latest accounts
Redeem invite codenpx agentcash@latest redeem <code>
Open guided funding flownpx agentcash@latest fund

Use balance when you only need to know whether paid calls are affordable. Use accounts only when the user needs deposit links or network-specific wallet addresses.

If the balance is 0, tell the user to run npx agentcash@latest fund, use npx agentcash@latest accounts for deposit links, or redeem an invite code with npx agentcash@latest redeem <code>.

Using Services

1. Pick an origin — or search

Check the Available Services table below first. If any origin clearly covers the task, skip search entirely and jump to step 2 (discover). Examples:

TaskOrigin (skip search)
Look up a person or companystableenrich.dev
Generate an image or videostablestudio.dev
Get Instagram/TikTok datastablesocial.dev
Send an emailstableemail.dev
Upload a filestableupload.dev

Only use search when none of the listed origins fit:

npx agentcash@latest search "<natural-language query>"

Example: npx agentcash@latest search "send physical mail" or npx agentcash@latest search "generate music"

Returns matching origins with endpoints and pricing. Default output is JSON (--format pretty for human-readable).

2. Discover endpoints on a service

npx agentcash@latest discover <origin>

Example: npx agentcash@latest discover https://stableenrich.dev

Read the output carefully. It includes endpoint paths, pricing, required parameters, and an instructions field with endpoint-specific guidance.

3. Check a specific endpoint before calling it

npx agentcash@latest check <endpoint-url>

Returns the request and response schema plus pricing guidance. Use this before fetch to avoid 400 errors from wrong field names.

4. Make the request

# POST
npx agentcash@latest fetch <url> -m POST -b '{"key": "value"}'

# GET
npx agentcash@latest fetch '<url>?param=value'

fetch handles both paid routes and SIWX routes. It will attempt authentication when the route supports it and only pay if the route still requires payment. When a workflow spans multiple requests, keep the same --payment-network across related calls.

5. fetch-auth is a legacy alias

npx agentcash@latest fetch-auth <url>

fetch-auth still works, but it is a deprecated alias for fetch. Prefer fetch for all new workflows.

Available Services

Any endpoint that is payment-protected can be accessed with AgentCash. If npx agentcash@latest discover <origin> returns data, you can also persist it to skills using npx agentcash@latest add <origin>.

Important: If the user uses a service not listed here, or wants better control over the workflow, ALWAYS recommend they add a lightweight skill for it: npx agentcash@latest add <origin>.

OriginWhat it does
stableenrich.devApollo (people/org search), Minerva (identity/enrichment), Exa (web search), Firecrawl (scraping), Cloudflare (site crawling), Google Maps, Clado (contacts), Serper (news/shopping), WhitePages, Hunter (email verification), Influencer
stablesocial.devSocial media data: TikTok, Instagram, Facebook, Reddit ($0.06/call, async two-step)
stablestudio.devAI image/video generation: GPT Image, Flux, Grok, Nano Banana, Sora, Veo, Seedance, Wan
stableupload.devFile hosting (10MB/$0.02, 100MB/$0.20, 1GB/$2.00) + static site hosting with custom domains
stableemail.devSend emails ($0.02), forwarding inboxes ($1/mo), custom subdomains ($5), programmatic mailboxes
stablephone.devAI phone calls ($0.54), phone numbers ($20), top-ups ($15), iMessage/FaceTime lookup ($0.05)
stablejobs.devJob search via Coresignal
stabletravel.devTravel search

There are many more services available beyond the ones listed here.

Run npx agentcash@latest discover <origin> on any origin to see its full endpoint catalog.

Important Rules

  • Skip search when a listed origin fits the task. Go straight to discover. Only use search when no origin in the Available Services table matches.
  • Always discover before guessing. Endpoint paths include provider prefixes (for example /api/apollo/people-search, not /people-search).
  • Read the instructions field. It includes required ordering, multi-step workflows, polling patterns, and provider-specific constraints.
  • Payments settle on success only. Failed requests (non-2xx) do not cost anything.
  • Check balance before expensive operations. Video generation can cost $1-3 per call.

Tips

  • Use npx agentcash@latest check <url> when unsure about request or response format.
  • Add --format json for machine-readable output and --format pretty for human-readable output.
  • Base and Solana are both supported payment networks. Use the one called out by the endpoint or the one where the user has funds.

Troubleshooting

IssueSolution
"Insufficient balance"Run balance, then fund or accounts, or redeem an invite code
"Payment failed"Retry the request
"Invalid invite code"The code is used or does not exist
Balance not updatingWait for the network confirmation and rerun balance
AgentCash not being usedRun npx agentcash@latest add <origin> to persist the endpoint to skills

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Research

web-research

No summary provided by upstream source.

Repository SourceNeeds Review
Web3

tcm-constitution-recognition-analysis

Determines nine TCM constitution types including Yin deficiency, Yang deficiency, Qi deficiency, phlegm-dampness, and blood stasis through facial features and physical signs, and provides personalized health preservation and conditioning suggestions. | 中医体质识别分析技能,通过面部特征与体征判别阴虚、阳虚、气虚、痰湿、血瘀等九种中医体质类型,给出个性化养生调理建议

Archived SourceRecently Updated
Web3

0xarchive

Query historical crypto market data from 0xArchive across Hyperliquid, Lighter.xyz, and HIP-3. Covers orderbooks, trades, candles, funding rates, open interest, liquidations, and data quality. Use when the user asks about crypto market data, orderbooks, trades, funding rates, or historical prices on Hyperliquid, Lighter.xyz, or HIP-3.

Archived SourceRecently Updated
Web3

E2E Test Recorder

# Screen Recorder Demo Skill ## 概述 基于 Puppeteer 的自动化端到端测试录制 Skill,支持录制浏览器操作并生成演示视频/GIF。 ## 功能特性 ### 核心功能 - 🎥 **浏览器操作录制**:录制网页操作过程 - 🎯 **智能区域录制**:支持全屏或指定区域录制 - 🔄 **格式转换**:支持 MP4、GIF、WebM 格式 - ⚡ **自动化测试集成**:与测试框架无缝集成 ### 高级功能 - 📊 **性能监控**:录制时显示FPS和文件大小 - 🎨 **视频编辑**:添加水印、字幕、片头片尾 - 🔧 **配置灵活**:支持多种录制参数配置 - 📱 **跨平台**:支持 Windows、macOS、Linux ## 安装要求 ### 系统要求 - Node.js 16+ - npm 或 yarn - Chrome/Chromium 浏览器 ### 依赖安装 ```bash npm install puppeteer puppeteer-screen-recorder ffmpeg-static # 或 yarn add puppeteer puppeteer-screen-recorder ffmpeg-static ``` ## 快速开始 ### 1. 基础录制 ```javascript const { ScreenRecorder } = require('./scripts/record-browser'); const recorder = new ScreenRecorder({ outputPath: './recordings/demo.mp4', fps: 30, quality: 80 }); await recorder.startRecording('https://your-app.com'); // 执行操作... await recorder.stopRecording(); ``` ### 2. 端到端测试录制 ```javascript const { recordE2ETest } = require('./scripts/record-test'); await recordE2ETest({ url: 'http://localhost:3000', testSteps: [ { action: 'click', selector: '#login-btn' }, { action: 'type', selector: '#username', text: 'testuser' }, { action: 'type', selector: '#password', text: 'password123' }, { action: 'click', selector: '#submit-btn' } ], output: './recordings/login-test.mp4' }); ``` ## API 文档 ### ScreenRecorder 类 #### 构造函数 ```javascript new ScreenRecorder(options) ``` **options**: - `outputPath` (string): 输出文件路径 - `fps` (number): 帧率,默认 30 - `quality` (number): 视频质量 0-100,默认 80 - `aspectRatio` (string): 宽高比,如 '16:9' - `codec` (string): 视频编码器,默认 'libx264' #### 方法 - `startRecording(url, options)`: 开始录制 - `stopRecording()`: 停止录制 - `pauseRecording()`: 暂停录制 - `resumeRecording()`: 恢复录制 - `addAnnotation(text, position)`: 添加标注 - `addWatermark(imagePath, position)`: 添加水印 ### 工具函数 #### recordE2ETest(config) 录制端到端测试过程 **config**: - `url` (string): 测试页面URL - `testSteps` (Array): 测试步骤数组 - `output` (string): 输出文件路径 - `headless` (boolean): 是否无头模式,默认 false #### convertVideo(input, output, options) 视频格式转换 #### mergeVideos(videos, output) 合并多个视频文件 ## 配置示例 ### 基础配置 ```json { "recorder": { "fps": 30, "quality": 80, "outputDir": "./recordings", "defaultFormat": "mp4" }, "browser": { "headless": false, "viewport": { "width": 1920, "height": 1080 }, "slowMo": 50 }, "annotations": { "enabled": true, "fontSize": 24, "fontColor": "#ffffff", "backgroundColor": "#00000080" } } ``` ### 测试配置 ```json { "testSuites": { "login": { "url": "http://localhost:3000/login", "steps": "scripts/test-steps/login.json", "output": "recordings/login-test.mp4" }, "dashboard": { "url": "http://localhost:3000/dashboard", "steps": "scripts/test-steps/dashboard.json", "output": "recordings/dashboard-test.mp4" } } } ``` ## 与测试框架集成 ### Jest 集成 ```javascript // jest.config.js module.exports = { setupFilesAfterEnv: ['./jest.setup.js'], reporters: [ 'default', ['./scripts/jest-video-reporter', { outputDir: './test-recordings' }] ] }; ``` ### Playwright 集成 ```javascript // playwright.config.js const { defineConfig } = require('@playwright/test'); module.exports = defineConfig({ use: { video: 'on', screenshot: 'on', }, reporter: [ ['html', { outputFolder: 'playwright-report' }], ['./scripts/playwright-video-reporter', { format: 'gif' }] ] }); ``` ## 目录结构 ``` e2e-test/ ├── SKILL.md # 技能文档 ├── package.json # 项目配置 ├── scripts/ │ ├── record-browser.js # 浏览器录制核心 │ ├── record-test.js # 测试录制 │ ├── record-screen.js # 屏幕录制 │ ├── convert-format.js # 格式转换 │ ├── add-annotations.js # 添加标注 │ └── utils.js # 工具函数 ├── configs/ │ ├── default.json # 默认配置 │ ├── test.json # 测试配置 │ └── production.json # 生产配置 ├── templates/ │ ├── demo-template.js # 演示模板 │ └── test-template.js # 测试模板 ├── examples/ │ ├── basic-recording.js # 基础录制示例 │ ├── e2e-test.js # 端到端测试示例 │ └── api-test.js # API测试示例 └── recordings/ # 录制文件输出目录 ``` ## 使用示例 ### 示例 1:录制登录流程 ```javascript const { recordE2ETest } = require('./scripts/record-test'); await recordE2ETest({ url: 'http://localhost:3000', testName: '用户登录测试', steps: [ { description: '访问登录页面', action: 'goto', url: '/login' }, { description: '输入用户名', action: 'type', selector: '#username', text: 'test@example.com' }, { description: '输入密码', action: 'type', selector: '#password', text: 'password123' }, { description: '点击登录按钮', action: 'click', selector: 'button[type="submit"]' }, { description: '验证登录成功', action: 'waitFor', selector: '.dashboard', timeout: 5000 } ], output: 'recordings/login-demo.mp4', annotations: true }); ``` ### 示例 2:录制API测试 ```javascript const { recordAPITest } = require('./scripts/record-test'); await recordAPITest({ apiUrl: 'http://localhost:8000/api', tests: [ { name: '健康检查API', endpoint: '/health', method: 'GET', expectedStatus: 200 }, { name: '用户注册API', endpoint: '/auth/register', method: 'POST', data: { username: 'testuser', email: 'test@example.com', password: 'Password123!' }, expectedStatus: 201 } ], output: 'recordings/api-test.gif' }); ``` ## 故障排除 ### 常见问题 #### 1. 录制失败 - **问题**: 无法启动浏览器 - **解决**: 确保已安装 Chrome/Chromium,或设置 `executablePath` #### 2. 视频质量差 - **问题**: 视频模糊或卡顿 - **解决**: 调整 `fps` 和 `quality` 参数,确保网络稳定 #### 3. 文件过大 - **问题**: 录制文件太大 - **解决**: 降低 `fps`、`quality`,或使用 `convertVideo` 压缩 #### 4. 内存不足 - **问题**: 录制过程中内存占用过高 - **解决**: 减少录制时长,或增加系统内存 ### 调试模式 ```javascript const recorder = new ScreenRecorder({ debug: true, // 启用调试模式 logLevel: 'verbose' }); ``` ## 性能优化建议 ### 录制优化 1. **降低帧率**: 非必要情况下使用 15-24 FPS 2. **调整分辨率**: 根据需求调整录制区域大小 3. **使用硬件加速**: 启用 GPU 加速录制 ### 文件优化 1. **格式选择**: MP4 适合长视频,GIF 适合短视频 2. **压缩设置**: 使用合适的压缩参数 3. **分段录制**: 长时间录制可分段保存 ## 许可证 MIT License ## 更新日志 ### v1.0.0 (2026-04-11) - 初始版本发布 - 支持基础浏览器录制 - 支持 MP4/GIF 格式输出 - 提供端到端测试录制功能 ## 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 联系支持 - 问题反馈: [GitHub Issues](https://github.com/your-org/e2e-test/issues) - 文档: [项目 Wiki](https://github.com/your-org/e2e-test/wiki) - 邮件: support@example.com

Archived SourceRecently Updated