Intelligent API routing for AI agents. Best service, best price, free alternatives.
Your agents overpay for every API call. We fix that.
Hebline routes every API call — including LLM calls — to the best service at the right price. Free when it's enough. Paid when it matters. It knows the difference.
Every other router earns a margin on your paid calls. Routing you to free alternatives kills their revenue. No margin on your API calls. Ever.
Your agents are bleeding money. One task triggers 5–10 paid API calls across different providers. No transparency, no cost control. Hebline fixes that:
Your AI Agent ←→ Hebline MCP Server ←→ Best API (Nominatim, DeepL, Google Maps, ...)
│
Smart Routing
Cost Logging
Provider Scoring
Your agent connects to Hebline as an MCP server. Instead of calling APIs directly, it uses Hebline's tools — execute, compare, or categories. Hebline scores all available services, picks the best one, makes the call, and returns the result with full metadata.
| Tool | Description |
|---|---|
execute | Route to the best service and make the API call. Returns result + metadata (service, cost, latency). |
compare | Show all available services for a capability with scores. See what's available before committing. |
categories | List all supported capabilities and their services. |
Add to claude_desktop_config.json:
{
"mcpServers": {
"hebline": {
"command": "npx",
"args": ["-y", "-p", "@hebline.ai/mcp-server", "hebline-mcp"]
}
}
}
Add to .mcp.json:
{
"mcpServers": {
"hebline": {
"command": "hebline-mcp"
}
}
}
Add to .cursor/mcp.json:
{
"mcpServers": {
"hebline": {
"command": "npx",
"args": ["-y", "-p", "@hebline.ai/mcp-server", "hebline-mcp"]
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"hebline": {
"command": "npx",
"args": ["-y", "-p", "@hebline.ai/mcp-server", "hebline-mcp"]
}
}
}
Add to .vscode/mcp.json:
{
"servers": {
"hebline": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "@hebline.ai/mcp-server", "hebline-mcp"]
}
}
}
npm install -g @hebline.ai/mcp-server
Set environment variables for any paid providers you want to use:
GOOGLE_MAPS_API_KEY=your-key-here
DEEPL_API_KEY=your-key-here
LIBRETRANSLATE_API_KEY=your-key-here
No keys? No problem — Hebline routes to free alternatives automatically.
| Category | Free | Paid (BYOK) |
|---|---|---|
| LLMs | Groq (Llama 3.3 70B), Google Gemini Flash | OpenAI GPT-4o-mini (OPENAI_API_KEY) |
| Geocoding | Nominatim (OpenStreetMap) | Google Maps (GOOGLE_MAPS_API_KEY) |
| Translation | MyMemory | DeepL (DEEPL_API_KEY), LibreTranslate (LIBRETRANSLATE_API_KEY) |
| Web Scraping | Fetch Scraper | Firecrawl (FIRECRAWL_API_KEY) |
| Currency | ExchangeRate-API | Fixer.io (FIXER_API_KEY) |
| OCR | OCR.space | Google Vision (GOOGLE_VISION_API_KEY) |
| Weather | Open-Meteo | OpenWeatherMap (OPENWEATHERMAP_API_KEY) |
| Web Search | DuckDuckGo | Brave Search (BRAVE_API_KEY) |
| News | HackerNews | NewsAPI.org (NEWSAPI_KEY) |
9 categories, 20 services. Free services work instantly — no API key needed. LLMs route through the Hebline proxy when no local key is set (50 free calls/day).
An agent asks: "Geocode the Brandenburg Gate in Berlin"
Hebline receives:
{
"capability": "geocoding",
"input": { "query": "Brandenburger Tor, Berlin" },
"constraint": "free"
}
Hebline responds:
{
"success": true,
"data": {
"lat": 52.5163,
"lon": 13.3777,
"displayName": "Brandenburger Tor, Pariser Platz, Berlin, 10117, Deutschland"
},
"meta": {
"service": "Nominatim (OpenStreetMap)",
"costUsd": 0,
"latencyMs": 258,
"score": 0.702,
"free": true
}
}
The agent got coordinates, knows it was free, and Hebline logged the call for future analysis.
mcp-server/
├── src/
│ ├── index.ts # MCP server entry point (stdio transport)
│ ├── types.ts # Shared TypeScript types
│ ├── registry.ts # Service definitions (capabilities, costs, scores)
│ ├── router.ts # Weighted scoring engine (Hopfield-ready)
│ ├── logger.ts # Append-only JSONL call log (~/.hebline/calls.jsonl)
│ ├── adapters/ # One adapter per service
│ │ ├── nominatim.ts # Free geocoding
│ │ ├── google-maps.ts # Paid geocoding (BYOK)
│ │ ├── mymemory.ts # Free translation
│ │ ├── libretranslate.ts # Paid translation (BYOK)
│ │ └── deepl.ts # Paid translation (BYOK)
│ └── tools/ # MCP tool definitions
│ ├── execute.ts # Route + call best service
│ ├── compare.ts # Score all services
│ └── categories.ts # List capabilities
Every API call is logged to ~/.hebline/calls.jsonl:
{"timestamp":"2026-03-29T09:36:37Z","capability":"geocoding","serviceId":"nominatim","latencyMs":212,"success":true,"costUsd":0}
No content is logged — only metadata. This data will power Hebbian Learning in future versions.
Contributions are welcome! Adding a new adapter is straightforward — implement the ServiceAdapter interface and register it.
git clone https://github.com/hebline/mcp-server.git
cd mcp-server
npm install
npm run build
npm test
Built by Hebline — Route free first. Only pay when necessary.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @hebline.ai/mcp-serverMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-hebline-mcp-server": {
"command": "npx",
"args": [
"-y",
"@hebline.ai/mcp-server"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@hebline.ai/mcp-servernpmio.github.Hebline/mcp-server works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.