Web Tools
SkillSearchWeb search, read, and summarize tools with provider-based backend
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Web Tools skill
What this skill tells your AI
The instructions your AI receives, as published by neuron-mr-white/unipi in packages/web-api/skills/web/SKILL.md and read by ahel’s review.
Use these tools to access web content. The read path uses a local smart-fetch engine by default — free, fast, and no API key required.
web_search
Search the web for information. Lower source = simpler/cheaper providers.
- Quick facts: source 1-2 (DuckDuckGo, Jina Search)
- Research: source 3-5 (SerpAPI, Tavily, Perplexity)
Parameters:
query(required): Search query stringsource(optional): Provider selection (1-5)
Examples:
web_search(query: "TypeScript generics tutorial")
web_search(query: "latest AI research", source: 5) # Use Tavily
multi_web_content_read
Read and extract content from URLs. Uses the smart-fetch engine by default (source=0 or omitted) — free, local, no API key required. Supports single URL or batch URLs.
Default behavior (source=0):
- Browser-grade TLS fingerprinting via wreq-js
- Intelligent content extraction via defuddle
- Returns clean markdown with metadata (title, author, site, word count)
- No API key required
Parameters:
url(required): Single URL string or array of URLs for batchsource(optional): Provider selection (0=smart-fetch, 1=Jina Reader, 2=Firecrawl, 3=Perplexity)browser(optional): TLS fingerprint profile (default: chrome_145)os(optional): OS fingerprint (default: windows)format(optional): Output format — markdown, html, text, json (default: markdown)maxChars(optional): Maximum content characters (default: 50000)timeoutMs(optional): Request timeout in ms (default: 15000)removeImages(optional): Strip image references (default: false)includeReplies(optional): Include comments/replies (default: extractors)proxy(optional): Proxy URLbatchConcurrency(optional): Concurrent requests for batch (default: 8)verbose(optional): Include metadata header (default: true)
Examples:
# Single URL (uses smart-fetch engine by default)
multi_web_content_read(url: "https://example.com/article")
# Batch URLs
multi_web_content_read(url: ["https://example.com/a", "https://example.com/b"])
# Use provider fallback (Jina Reader)
multi_web_content_read(url: "https://example.com/article", source: 1)
# Custom options
multi_web_content_read(url: "https://example.com/article", format: "json", maxChars: 10000)
web_llm_summarize
Summarize URL with LLM. Higher cost (LLM tokens + provider).
- Use for complex content that needs analysis
- Custom prompts supported for targeted summaries
Parameters:
url(required): URL to summarizeprompt(optional): Custom summarization promptsource(optional): Provider selection for content fetch (1-3)
Examples:
web_llm_summarize(url: "https://example.com/long-article")
web_llm_summarize(url: "https://example.com/research", prompt: "Extract key findings")
Provider Selection
- Omit
sourcefor auto-selection (smart-fetch engine for read, cheapest for search) - Specify
sourcenumber for specific provider - If provider unavailable, tool throws descriptive error
Auto-selection falls through on failure. With source omitted, a failing
provider is skipped and the next-ranked one is tried, so an uninitialized
wigolo never blocks a search. With an explicit source, the choice is
respected and the error is reported instead.
Provider Rankings
Search providers:
- wigolo (free, local) — default
- DuckDuckGo (free)
- Jina AI Search (freemium)
- SerpAPI (paid)
- Tavily (paid)
- Perplexity (paid)
Read providers: 0. Smart-Fetch Engine (free, local) — default
- wigolo (free, local)
- Jina AI Reader (freemium)
- Firecrawl (paid)
- Perplexity (paid)
Summarize providers:
- Perplexity (paid)
- LLM Summarize (uses pi's LLM)
wigolo
wigolo is a local-first web engine: multi-engine search (18 direct adapters) with rank fusion and on-device reranking, plus a tiered fetch router that escalates to a headless browser on anti-bot challenges. No API key, nothing leaves the machine, $0 per query.
It is not bundled — wigolo is AGPL-licensed and UniPi is MIT, so it is an optional dependency loaded at runtime only when the user installed it:
npm install -g wigolo && npx wigolo init
If it is missing or uninitialized, the provider raises an actionable error and
auto-selection falls through to the next provider. Never tell the user wigolo
is broken — tell them to run npx wigolo init, or to disable it in
/unipi:web-settings.
Smart-Fetch Engine
The smart-fetch engine is a local content extraction pipeline:
- wreq-js: Browser-grade TLS fingerprinting (bypasses Cloudflare, etc.)
- defuddle: Intelligent content extraction from HTML
- linkedom: Server-side DOM parsing
Features:
- No API key required
- Browser-level anti-bot bypass
- Clean markdown output with metadata
- Batch concurrent fetching with progress
- Client-side meta redirect following
- Multiple output formats
Configure defaults via /unipi:web-settings → "Smart Fetch Defaults"
Cost Awareness
- Smart-Fetch Engine: Free (read only, no API key)
- wigolo: Free (search + read, local, no API key) — prefer this
- DuckDuckGo: Free (search only)
- Jina: Freemium (search + read)
- SerpAPI/Tavily: Paid (search)
- Firecrawl: Paid (read)
- Perplexity: Paid (search + summarize)
- LLM Summarize: LLM token cost
Configuration
Configure providers via /unipi:web-settings command.
- Add/remove API keys
- Enable/disable providers
- Configure smart-fetch defaults
- View provider status
Cache
Web content is cached for 1 hour by default.
- Clear cache:
/unipi:web-cache-clear - Cache includes smart-fetch results (keyed by URL + browser + format + maxChars)
Signals
- GitHub stars
- 66
- Forks
- 15
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
web-neuron-mr-white- Source
- github.com/neuron-mr-white/unipi