Tool calls are the new tokens.
For most agentic workloads the tool bill exceeds the model bill. Frugal is an MCP server that routes every tool call your agent makes to the cheapest provider that returns a result — free / local first, paid only as fallback, premium only when you opt in.
Works with any model. One signed Go binary. Your keys. No account. Source-available (BUSL 1.1 → Apache 2.0).
curl -fsSL https://frugal.sh/install | bash
frugal mcp installThe first command drops the binary in your $PATH. The second auto-detects
Claude Desktop, Cursor, and Claude Code and merges frugal into each
configured MCP server list.
BYOK. Frugal reads provider credentials from your environment:
# Search — frugal__search
export SEARXNG_URL=... # free, self-hosted (also Marginalia free, no key)
export SERPER_API_KEY=... # cheap paid
export YDC_API_KEY=... # premium paid (You.com)
# Extract — frugal__extract (goreadability is free, no key)
export FIRECRAWL_API_KEY=... # premium paid (JS-rendered pages)
# Browse — frugal__browse
export BROWSERLESS_TOKEN=... # headless renderThat's it. Restart your agent. frugal__search, frugal__extract, and
frugal__browse show up in the tool picker (only the tools whose
providers are configured get registered).
Tool prices haven't fallen the way model prices have. You.com at $0.005/call is 5× Serper at $0.001/call. SearXNG, running on your own machine, is free.
| Capability | Free / local | Cheap paid | Premium paid | Status |
|---|---|---|---|---|
| Search | SearXNG · Marginalia | Serper $0.001/call | You.com $0.005/call | shipping |
| Extract | go-readability (local) | — | Firecrawl $0.001/page | shipping |
| Browse | local Playwright (deferred) | Browserless $0.002/render | Browserbase | partial |
| Code exec | local Docker | E2B ~$0.10/hr (2 vCPU) | Modal | planned |
| Embeddings | nomic-embed-text, bge-large | text-embedding-3-small $0.02/1M tok | 3-large, Voyage-3, Cohere | planned |
| Transcription | whisper.cpp | Deepgram Nova $0.0043/min | OpenAI Whisper $0.006/min | planned |
Frugal walks the columns left to right. Each tool call goes to the leftmost configured provider that returns a result; you keep the gap.
One MCP server, three tools, seven providers:
frugal__search— routed across SearXNG (free, self-hosted), Marginalia (free, public), Serper ($0.001/call), and You.com ($0.005/call). Supports optionalcache_ttl_secondsfor lightweight in-process response caching.frugal__extract— routed across go-readability (free, pure-Go local Readability) and Firecrawl (~$0.001/page, JS-rendered).frugal__browse— Browserless (~$0.002/render, headless Chrome). Local Playwright deferred.- Stdio + Streamable HTTP transports.
- HTTP transport supports bearer-token auth (
FRUGAL_AUTH_TOKEN), per-IP rate limiting, and a/metricsendpoint (Prometheus text:frugal_calls_total{tool=,provider=}etc.). frugal mcp installwrites the right config into Claude Desktop, Cursor, and Claude Code.
- Phase 3 — embeddings, transcription, code execution, local chat models, semantic cache.
- Phase 4 — Frugal Cloud: hosted MCP endpoint for users who don't want to operate the local stack themselves.
Roadmap and rationale in STRATEGY.md.
git clone https://github.com/brainsparker/frugal.git && cd frugal && make buildBUSL 1.1 — self-hosting and internal commercial use are permitted. Each release converts to Apache 2.0 four years after publication. Plain-English summary in LICENSE-BUSL-FAQ.md.
Private vulnerability reports via GitHub Security Advisories. Full policy in SECURITY.md.