Official Kagi Search and Extract API tools for the Pi coding agent.
This extension provides:
kagi_search— web search via the official Kagi Search APIkagi_extract— HTTPS page extraction as markdown via the official Kagi Extract API
It is the official-API successor to the legacy pi-kagi-search extension, which used a Kagi session token and parsed Kagi's HTML search page.
Use this package when Pi needs current web research through Kagi's official API. Search returns Kagi web results; extraction is separate so full page reads happen only when needed.
- Node.js + npm
- Pi CLI
- A Kagi API key from the Kagi API dashboard
Kagi API usage may incur charges according to Kagi's API pricing. kagi_extract is a separate tool because extraction can incur additional API cost.
Install from npm:
pi install npm:@mjakl/pi-kagi-apiInstall from git:
pi install git:github.com/mjakl/pi-kagi-apiOr install from a local checkout:
pi install /path/to/pi-kagi-apiPackage name: @mjakl/pi-kagi-api.
- Open the Kagi API dashboard.
- Generate an API key.
- Configure it using one of the options below.
export KAGI_API_KEY="your-api-key-here"Add it to your shell profile (~/.zshrc, ~/.bashrc, etc.) to persist it.
Start Pi and run:
/kagi-api-login
This stores the key in Pi's agent config directory as kagi-api.json.
Default path:
~/.pi/agent/kagi-api.json
If PI_CODING_AGENT_DIR is set:
$PI_CODING_AGENT_DIR/kagi-api.json
The file format is:
{
"apiKey": "your-api-key-here"
}The extension writes this file with restrictive permissions (0600) where supported.
Ask Pi to search first, then extract only the most relevant pages:
Search Kagi for the current Kagi Search API documentation.
Extract the official docs page and summarize the parameters.
Search does not fetch full page contents unless the agent explicitly calls kagi_extract. This keeps API usage predictable and avoids surprise extraction charges.
The older pi-kagi-search extension used a Kagi session token and parsed Kagi's HTML search page. This package uses Kagi's official API instead.
Recommended migration:
- Install
@mjakl/pi-kagi-api. - Configure
KAGI_API_KEYor run/kagi-api-login. - Remove or disable the old
pi-kagi-searchpackage to avoid duplicatekagi_searchtools.
Your Kagi API key can spend API credits. Treat it like a password and do not commit kagi-api.json to version control.
These sections document tool parameters, allowlisting behavior, and development commands.
| Tool | Description |
|---|---|
kagi_search |
Search the web using the official Kagi Search API. |
kagi_extract |
Extract HTTPS page contents as markdown using the official Kagi Extract API. |
Parameters:
query— search query.limit— optional result limit, 1–50, default 10.
Example:
{
"query": "Kagi Search API documentation",
"limit": 5
}Parameters:
urls— array of 1–10 HTTPS URLs.timeout— optional extraction timeout in seconds, 0.5–10.
Example:
{
"urls": ["https://help.kagi.com/kagi/api/search.html"],
"timeout": 4
}Kagi Extract currently requires HTTPS URLs.
Pi can enable or disable tools natively with --tools.
Enable search but not extraction:
pi --tools read,write,edit,bash,kagi_searchEnable both search and extraction:
pi --tools read,write,edit,bash,kagi_search,kagi_extract--tools is an allowlist, so include any built-in tools you still want available.
Install dependencies:
npm installType-check:
npm run typecheckCheck what would be published:
npm pack --dry-run
npm publish --dry-runManual Pi check:
KAGI_API_KEY="your-api-key" pi -e .Then invoke kagi_search or kagi_extract from Pi.
Release to npm:
npm publish --access publicMIT