web-research
merit-systems/agentcash-skills
Neural web search and content extraction via x402-protected APIs for deep research and blocked sites.
What is web-research?
Access Exa (semantic search) and Firecrawl (web scraping) through x402-protected endpoints for tasks beyond standard web tools. Use this when you need semantic understanding, multi-source research, JavaScript rendering, or access to sites that block standard fetchers.
- Semantic neural search with Exa to find conceptually similar content
- Extract clean text from multiple URLs at once ($0.002 per call)
- Find pages semantically similar to a reference URL
- Scrape JavaScript-heavy and blocked sites with Firecrawl
- Get direct factual answers to questions with citations
- Search and automatically scrape results in one call
How to install web-research
npx skills add https://github.com/merit-systems/agentcash-skills --skill web-research- x402 wallet setup (see rules/getting-started.md)
- npx agentcash@latest CLI installed
- Account balance for API calls ($0.002–$0.10 per request)
How to use web-research
- 1.Check your wallet balance with `npx agentcash@latest balance`
- 2.Choose the right endpoint based on your task (search, scrape, extract, crawl)
- 3.For neural search: POST to `/api/exa/search` with query and numResults
- 4.For text extraction: POST to `/api/exa/contents` with array of URLs
- 5.For blocked sites: POST to `/api/firecrawl/scrape` with URL and optional waitFor delay
- 6.For multi-page crawls: POST to `/api/cloudflare/crawl` then poll `/api/cloudflare/jobs?token=...` for results
- 7.Batch multiple URLs in extraction calls to minimize cost
Use cases
- Deep research requiring multiple sources and semantic understanding
- Finding competitor products or related content via similarity search
- Extracting content from paywalled or JavaScript-rendered sites
- Building research databases by crawling documentation sites
- Answering factual questions with source verification
- Researchers and investigators
- Content aggregators and analysts
- Competitive intelligence specialists
- Documentation and knowledge base builders
- Anyone needing access to blocked or JS-heavy websites
web-research FAQ
Use Exa for semantic search, finding similar pages, and extracting text from known URLs. Use Firecrawl when you need to scrape a single page (especially JavaScript-heavy or blocked sites) or search with automatic scraping of results.
Use Exa contents at $0.002 per call. Batch multiple URLs together in one request. Only use Firecrawl scrape ($0.0126) if the site blocks standard fetchers or requires JavaScript rendering.
Use Firecrawl scrape endpoint with the `waitFor` option to allow JavaScript to render. It handles common blocking and extracts main content only.
Yes, use Cloudflare crawl ($0.10 per crawl). It's a two-step async process: POST to start the crawl, then poll the jobs endpoint for results. Supports up to 25 pages and 3 levels of depth.
Use Exa search with `category: "linkedin profile"` to filter for LinkedIn profiles and people pages specifically.
Full instructions (SKILL.md)
Source of truth, from merit-systems/agentcash-skills.
name: web-research description: | Neural web search and content extraction using x402-protected APIs. Better than WebSearch for deep research and WebFetch for blocked sites.
USE FOR:
- Deep web research and investigation
- Finding similar pages to a reference URL
- Extracting clean text from web pages
- Scraping sites that block standard fetchers
- Getting direct answers to factual questions
- Research requiring multiple sources
- Crawling multiple pages from a website
TRIGGERS:
- "research", "investigate", "deep dive", "find sources"
- "similar to", "pages like", "more like this"
- "scrape", "extract content from", "get the text from"
- "blocked site", "can't access", "paywall"
- "what is", "explain", "answer this"
- "crawl", "crawl site", "scrape entire site"
Use npx agentcash@latest fetch for stableenrich.dev endpoints. Prefer Exa for semantic/neural search, Firecrawl for direct scraping.
metadata:
version: 2
Web Research with x402 APIs
Access Exa (neural search) and Firecrawl (web scraping) through x402-protected endpoints.
Setup
See rules/getting-started.md for installation and wallet setup.
Quick Reference
| Task | Endpoint | Price | Best For |
|---|---|---|---|
| Neural search | https://stableenrich.dev/api/exa/search | $0.01 | Semantic web search |
| Find similar | https://stableenrich.dev/api/exa/find-similar | $0.01 | Pages similar to a URL |
| Extract text | https://stableenrich.dev/api/exa/contents | $0.002 | Clean text from URLs |
| Direct answers | https://stableenrich.dev/api/exa/answer | $0.01 | Factual Q&A |
| Scrape page | https://stableenrich.dev/api/firecrawl/scrape | $0.0126 | Single page to markdown |
| Web search | https://stableenrich.dev/api/firecrawl/search | $0.0252 | Search with scraping |
| Crawl website | https://stableenrich.dev/api/cloudflare/crawl | $0.10 | Multi-page site crawl |
| Poll crawl | GET https://stableenrich.dev/api/cloudflare/jobs?token=... | Free | Poll crawl results |
When to Use What
| Scenario | Tool |
|---|---|
| General web search | WebSearch (free) or Exa ($0.01) |
| Semantic/conceptual search | Exa search |
| Find pages like X | Exa find-similar |
| Get clean text from URL | Exa contents |
| Scrape blocked/JS-heavy site | Firecrawl scrape |
| Search + scrape results | Firecrawl search |
| Quick fact lookup | Exa answer |
| Crawl entire site/section | Cloudflare crawl |
See rules/when-to-use.md for detailed guidance.
Exa Neural Search
Semantic search that understands meaning, not just keywords:
npx agentcash@latest fetch https://stableenrich.dev/api/exa/search -m POST -b '{
"query": "startups building AI agents for customer support",
"numResults": 10,
"type": "neural"
}'
Options:
query- Search query (required)numResults- Number of results (default: 10, max: 25)type- "neural" (semantic) or "keyword" (traditional)includeDomains- Only search these domainsexcludeDomains- Skip these domainsstartPublishedDate/endPublishedDate- Date range filtercategory- Filter by content type: "company", "research paper", "news", "pdf", "github", "tweet", "personal site", "linkedin profile", "financial report"- Tip: Use
category: "linkedin profile"for people/profile discovery
Returns: List of URLs with titles, snippets, and relevance scores.
Find Similar Pages
Find pages semantically similar to a reference URL:
npx agentcash@latest fetch https://stableenrich.dev/api/exa/find-similar -m POST -b '{
"url": "https://example.com/article-i-like",
"numResults": 10
}'
Great for:
- Finding competitor products
- Discovering related content
- Expanding research sources
Extract Text Content
Get clean, structured text from URLs:
npx agentcash@latest fetch https://stableenrich.dev/api/exa/contents -m POST -b '{
"urls": [
"https://example.com/article1",
"https://example.com/article2"
]
}'
Options:
urls- Array of URLs to extracttext- Include full text (default: true)highlights- Include key highlights
Cheapest option ($0.002) when you already have URLs and just need the content.
Direct Answers
Get factual answers to questions:
npx agentcash@latest fetch https://stableenrich.dev/api/exa/answer -m POST -b '{"query": "What is the population of Tokyo?"}'
Returns a direct answer with source citations. Best for:
- Factual questions
- Quick lookups
- Verification of claims
Firecrawl Scrape
Scrape a single page to clean markdown:
npx agentcash@latest fetch https://stableenrich.dev/api/firecrawl/scrape -m POST -b '{"url": "https://example.com/page-to-scrape"}'
Options:
url- Page to scrape (required)formats- Output formats: ["markdown", "html", "links"]onlyMainContent- Skip nav/footer/ads (default: true)waitFor- Wait ms for JS to render
Advantages over WebFetch:
- Handles JavaScript-rendered content
- Bypasses common blocking
- Extracts main content only
- LLM-optimized markdown output
Firecrawl Search
Web search with automatic scraping of results:
npx agentcash@latest fetch https://stableenrich.dev/api/firecrawl/search -m POST -b '{
"query": "best practices for react server components",
"limit": 5
}'
Options:
query- Search query (required)limit- Number of results (default: 5)scrapeOptions- Options passed to scraper
Returns search results with full scraped content for each.
Cloudflare Website Crawl
Crawl multiple pages from a website with browser rendering. Async two-step pattern.
Step 1: Start the crawl (paid, $0.10)
npx agentcash@latest fetch https://stableenrich.dev/api/cloudflare/crawl -m POST -b '{
"url": "https://example.com",
"limit": 10,
"depth": 1,
"formats": ["markdown"]
}'
Returns 202 with {"token": "jwt..."}.
Step 2: Poll for results (SIWX, free)
npx agentcash@latest fetch "https://stableenrich.dev/api/cloudflare/jobs?token=JWT_TOKEN"
Poll every 3-5 seconds until complete.
Parameters:
url(required) — starting URLlimit(default 10, max 25) — max pagesdepth(default 1, max 3) — max link depthformats—["markdown", "html", "json"]render(default false) — execute JavaScriptoptions.includePatterns/excludePatterns— URL wildcards
Good for: crawling docs sites, scraping multiple pages, building sitemaps.
Workflows
Deep Research
- (Optional) Check balance:
npx agentcash@latest balance - Search broadly with Exa
- Find related sources with find-similar
- Extract content from top sources
- Synthesize findings
npx agentcash@latest fetch https://stableenrich.dev/api/exa/search -m POST -b '{"query": "AI agents in healthcare 2024", "numResults": 15}'
npx agentcash@latest fetch https://stableenrich.dev/api/exa/find-similar -m POST -b '{"url": "https://best-article-found.com"}'
npx agentcash@latest fetch https://stableenrich.dev/api/exa/contents -m POST -b '{"urls": ["url1", "url2", "url3"]}'
Blocked Site Scraping
- Try WebFetch first (free)
- If blocked/empty, use Firecrawl with
waitForfor JS-heavy sites
npx agentcash@latest fetch https://stableenrich.dev/api/firecrawl/scrape -m POST -b '{"url": "https://blocked-site.com/article", "waitFor": 3000}'
Cost Optimization
- Use Exa contents ($0.002) when you already have URLs
- Use WebSearch/WebFetch first (free) and fall back to x402 endpoints
- Batch URL extraction - pass multiple URLs to Exa contents
- Limit results - request only as many as needed
Related skills
More from merit-systems/agentcash-skills and the wider catalog.

agentcash
Pay-per-call API access via wallet—no keys, no subscriptions, USDC on Base/Solana.

add-malli-schemas
Efficiently add Malli schemas to API endpoints in the Metabase codebase with proper patterns, validation timing, and error handling

analytics-events
Add product analytics events to track user interactions in the Metabase frontend

clojure-review
Review Clojure and ClojureScript code changes for compliance with Metabase coding standards, style violations, and code quality issues. Use when reviewing pull requests or diffs containing Clojure/ClojureScript code.

clojure-write
Guide Clojure and ClojureScript development using REPL-driven workflow, coding conventions, and best practices. Use when writing, developing, or refactoring Clojure/ClojureScript code.

docs-review
Review documentation changes for compliance with the Metabase writing style guide. Use when reviewing pull requests, files, or diffs containing documentation markdown files.