37b24694a0c3889b1027b40c670ccc20c2b39983
BREAKING CHANGE: remove Tavily, Firecrawl, provider fallback, and web-search-config. web_search and web_fetch now use Exa-shaped inputs and return raw Exa-style details.
pi-web-search
pi-web-search is a Pi extension package that adds Exa-backed web_search and web_fetch tools.
Install
Local path:
pi install /absolute/path/to/web-search
Git:
pi install https://gitea.rwiesner.com/pi/pi-web-search
Resources
- Extension:
./index.ts
Configuration
Set EXA_API_KEY, or create ~/.pi/agent/web-search.json:
{
"apiKey": "exa_...",
"baseUrl": "https://api.exa.ai"
}
Notes:
apiKeyis required unlessEXA_API_KEYis set.baseUrlis optional.- Older multi-provider configs are no longer supported.
Tool behavior
web_search
Maps directly to Exa search(query, options).
Notes:
- Exa search returns text contents by default.
- Pass
contents: falsefor metadata-only search results. additionalQueriesis only valid for deep search types:deep-lite,deep,deep-reasoning.includeTextandexcludeTextcurrently support at most one phrase of up to 5 words.
Example:
{
"query": "Who leads OpenAI's safety team?",
"type": "deep",
"numResults": 5,
"systemPrompt": "Prefer official docs",
"outputSchema": {
"type": "text",
"description": "Answer in short bullets"
},
"contents": {
"highlights": {
"query": "OpenAI safety lead",
"maxCharacters": 300
},
"summary": true
}
}
Metadata-only search:
{
"query": "pi docs",
"contents": false,
"includeDomains": ["pi.dev"]
}
web_fetch
Maps directly to Exa getContents(urls, options).
Example:
{
"urls": ["https://pi.dev"],
"text": {
"maxCharacters": 4000,
"verbosity": "standard"
},
"highlights": {
"query": "tooling",
"maxCharacters": 300
},
"summary": true,
"livecrawl": "preferred",
"extras": {
"links": 20,
"imageLinks": 10
}
}
Development
npm install
npm test
Description
Languages
TypeScript
100%