@pi-unipi/web-api
Web search, read, and summarize tools with provider-based backend selection for Pi coding agent
Package details
Install @pi-unipi/web-api from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@pi-unipi/web-api- Package
@pi-unipi/web-api- Version
0.1.16- Published
- May 1, 2026
- Downloads
- 1,698/mo · 1,698/wk
- Author
- neuron-mr-white
- License
- MIT
- Types
- extension, skill
- Size
- 134.3 KB
- Dependencies
- 6 dependencies · 3 peers
Pi manifest JSON
{
"extensions": [
"src/index.ts"
],
"skills": [
"skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@pi-unipi/web-api
Web search, page reading, and content summarization for the agent. The read path uses a local smart-fetch engine by default — free, no API key, browser-grade TLS fingerprinting that bypasses Cloudflare.
Paid providers (SerpAPI, Tavily, Firecrawl, Perplexity) are available as fallbacks. DuckDuckGo and Jina work out of the box for search.
Commands
| Command | Description |
|---|---|
/unipi:web-settings |
Configure providers, API keys, and smart-fetch defaults |
/unipi:web-cache-clear |
Clear all cached web content |
Special Triggers
Workflow skills detect web-api and inject web tools for research-type commands:
| Skill | What Changes |
|---|---|
research |
Full web search, read, summarize |
gather-context |
External documentation lookup |
consultant |
Industry best practices research |
subagents (explore) |
Web research in parallel |
The footer and info-screen don't display web-api data — it's a tool package, not a state package.
Agent Tools
| Tool | Description |
|---|---|
web_search |
Search the web via provider |
multi_web_content_read |
Extract content from URLs (smart-fetch or provider) |
web_llm_summarize |
Summarize web content via LLM |
web_search
# Auto-select cheapest provider
web_search(query: "TypeScript generics")
# Use specific provider
web_search(query: "latest AI research", source: 4) # Tavily
multi_web_content_read
# Single URL (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"])
# 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
web_llm_summarize(url: "https://example.com/long-article")
web_llm_summarize(url: "https://example.com/research", prompt: "Extract key findings")
Smart-Fetch Engine
Local content extraction pipeline — no API key required:
| Component | Purpose |
|---|---|
| wreq-js | Browser-grade TLS fingerprinting (bypasses Cloudflare) |
| defuddle | Intelligent content extraction from HTML |
| linkedom | Server-side DOM parsing |
Outputs clean markdown with metadata (title, author, site, word count). Supports batch concurrent fetching with progress.
Providers
Search
| Provider | Rank | Cost | API Key |
|---|---|---|---|
| DuckDuckGo | 1 | Free | No |
| Jina AI Search | 2 | Freemium | Optional |
| SerpAPI | 3 | Paid | Required |
| Tavily | 4 | Paid | Required |
| Perplexity | 5 | Paid | Required |
Read
| Provider | Rank | Cost | API Key |
|---|---|---|---|
| Smart-Fetch Engine | 0 | Free | No |
| Jina AI Reader | 1 | Freemium | Optional |
| Firecrawl | 2 | Paid | Required |
| Perplexity | 3 | Paid | Required |
Summarize
| Provider | Rank | Cost | API Key |
|---|---|---|---|
| Perplexity | 1 | Paid | Required |
| LLM Summarize | 2 | LLM tokens | No |
Configurables
API Keys
Configure via /unipi:web-settings (interactive TUI) or environment variables:
export SERPAPI_KEY="your-key"
export TAVILY_API_KEY="your-key"
export FIRECRAWL_API_KEY="your-key"
export PERPLEXITY_API_KEY="your-key"
export JINA_API_KEY="your-key"
Providers auto-enable when you add a valid API key.
Smart-Fetch Defaults
Configure browser profile, OS, max chars, timeout via /unipi:web-settings → "Smart Fetch Defaults".
Settings Files
- Auth:
~/.unipi/config/web-api/auth.json(API keys, gitignored) - Config:
~/.unipi/config/web-api/config.json(provider settings, smart-fetch defaults)
Cache
- Default TTL: 1 hour
- Cache location:
~/.unipi/config/web-api/cache/ - Automatic for all read operations
Troubleshooting
No provider available: Run /unipi:web-settings and add API keys or enable a free provider.
Smart-fetch fails: Try a different browser profile (browser: "chrome_133") or a provider fallback (source: 1).
Rate limiting: Add an API key for higher limits, use smart-fetch (no limits), or try a different provider.
License
MIT