pi-web-suite

Web search, URL fetching, PDF extraction, and content extraction tools for the Pi coding agent. Cascading providers: Exa, AnySearch, Tavily.

Packages

Package details

extension

Install pi-web-suite from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-web-suite
Package
pi-web-suite
Version
0.2.2
Published
Jul 4, 2026
Downloads
393/mo · 393/wk
Author
eddie0521
License
MIT
Types
extension
Size
38.1 KB
Dependencies
4 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ],
  "image": "https://github.com/Eddie0521/pi-web-suite/raw/main/screenshot.png"
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Pi Web Suite

Web search, URL fetching, PDF extraction, and content extraction tools for the Pi coding agent.

A Pi extension that brings web_search, fetch_content, and get_search_content tools with cascading search providers and smart content extraction. Based on @juicesharp/rpiv-web-tools.

Install

pi install npm:pi-web-suite

Once installed and pi restarted, you get:

  • web_search — search the web via cascading providers
  • fetch_content — fetch URLs, GitHub repos, PDFs, and extract content
  • get_search_content — retrieve past search results by ID
  • /web-search-config — configure API keys interactively

Features

  • Zero-config search — Exa MCP endpoint works without any API key
  • Smart cascading — Exa → AnySearch → Tavily, automatic provider selection
  • Content extraction — Readability + linkedom local extraction, Jina / defuddle proxy fallback
  • GitHub repos — API-based file and directory access
  • PDF extraction — Text extraction via unpdf
  • SSRF protection — DNS resolution + IP range checks blocking private network requests

Quick Start

// Search the web
web_search({ query: "TypeScript best practices 2025" })

// Fetch a page
fetch_content({ url: "https://docs.example.com/guide" })

// Fetch a GitHub repo
fetch_content({ url: "https://github.com/owner/repo" })

// Fetch a PDF
fetch_content({ url: "https://example.com/doc.pdf" })

// Retrieve past search results
get_search_content({ searchId: "sr_..." })

Tools

web_search

Search the web. Automatically selects the first available provider (Exa → AnySearch → Tavily).

Parameter Type Required Description
query string yes Search query
numResults number no Results per query (default 5, max 20)
recencyFilter string no day, week, month, year

Returns search results with titles, URLs, snippets, and an optional answer. Each call returns a searchId for later retrieval via get_search_content.

fetch_content

Fetch a URL and return its content as readable Markdown. Auto-detects and handles GitHub repos, PDFs, and regular web pages.

Parameter Type Required Description
url string yes Supports http/https, GitHub links, PDF links

Fetch chain:

  • GitHub URL → GitHub API (file contents / directory tree)
  • PDF → unpdf text extraction
  • HTML → Readability + linkedom local extraction → Jina Reader proxy → defuddle proxy

get_search_content

Retrieve stored content from a previous web_search call.

Parameter Type Required Description
searchId string yes ID from web_search response details

Configuration

Run /web-search-config to configure API keys interactively, or edit ~/.pi/web-search.json directly:

{
  "exaApiKey": "exa-...",
  "anySearchApiKey": "...",
  "tavilyApiKey": "tvly-..."
}

Environment variables take precedence over config: EXA_API_KEY, ANYSEARCH_API_KEY, TAVILY_API_KEY.

Provider notes:

  • Exa: Direct API with key, MCP endpoint (zero-config) without
  • AnySearch: Bearer auth with key, anonymous without (1000 req/day)
  • Tavily: Requires API key

Project Structure

pi-web-suite/
├── index.ts      # Main entry (3 tools, 1 command)
├── types.ts      # Shared types
├── search.ts     # Search cascade (Exa / AnySearch / Tavily)
├── fetch.ts      # URL fetch router (GitHub / PDF / HTML)
├── extract.ts    # HTML content extraction (Readability → Jina → defuddle)
├── config.ts     # API key management
├── ssrf.ts       # SSRF protection
├── storage.ts    # Search result cache
├── test/         # Tests
├── README.md     # This file (English)
└── README-zh.md  # Chinese translation

License

MIT — based on @juicesharp/rpiv-web-tools (MIT).