pi 37b24694a0 feat!: make web search Exa-only
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.
2026-04-12 11:11:36 +01:00
2026-04-12 11:11:36 +01:00
2026-04-12 11:11:36 +01:00
2026-04-10 23:11:21 +01:00
2026-04-12 11:11:36 +01:00
2026-04-12 07:55:57 +01:00
2026-04-12 11:11:36 +01:00
2026-04-12 11:11:36 +01:00

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:

  • apiKey is required unless EXA_API_KEY is set.
  • baseUrl is optional.
  • Older multi-provider configs are no longer supported.

Tool behavior

Maps directly to Exa search(query, options).

Notes:

  • Exa search returns text contents by default.
  • Pass contents: false for metadata-only search results.
  • additionalQueries is only valid for deep search types: deep-lite, deep, deep-reasoning.
  • includeText and excludeText currently 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
No description provided
Readme 238 KiB
Languages
TypeScript 100%