Integrations

Swap your existing web-search or retriever dependency to GroundRoute, usually with a one-line change. Every integration targets POST /v1/search (or the /v1/search/compat drop-in) and authenticates with Authorization: Bearer $GROUNDROUTE_API_KEY.

export GROUNDROUTE_API_KEY=gr_live_...
export GROUNDROUTE_BASE_URL=https://api.groundroute.ai

MCP

The hosted MCP server lets any MCP client use search as a native tool. Point it at https://api.groundroute.ai/mcp with your Bearer key:

{
  "mcpServers": {
    "groundroute": {
      "type": "http",
      "url": "https://api.groundroute.ai/mcp",
      "headers": { "Authorization": "Bearer gr_live_YOUR_KEY" }
    }
  }
}

Full reference: MCP server.

OpenAI / Tavily-compatible shim

Already calling Tavily, Exa, or an OpenAI-style web-search tool? Point the base URL at GroundRoute's compatibility endpoint POST /v1/search/compat. It accepts common SDK body shapes and returns a Tavily/OpenAI-style body — change only the URL and key, not your request structure.

It maps common fields to the native request:

  • query / q / search_query / inputquery
  • max_results / num_results / count / kmax_results (clamped ≤ 50)
  • search_depth / mode / topicmode
  • include_domains / domainsdomains, exclude_domainsexclude_domains
  • days / time_range / recency present → freshness: fresh

Unknown fields are ignored — a drop-in caller is never rejected with 422.

import httpx

httpx.post(
    "https://api.groundroute.ai/v1/search/compat",   # only the URL + key change
    headers={"Authorization": f"Bearer {GROUNDROUTE_KEY}"},
    json={"query": "pgvector vs qdrant benchmark", "max_results": 5},
).json()   # → {"answer": ..., "results": [...]}

GroundRoute's routing_meta / cache_meta are omitted from the compat body to stay byte-compatible with the original SDK shape. To see them, call the native /v1/search.

Framework helpers

Thin helpers wrap the native API for popular frameworks so you can swap a retriever or tool in one line:

FrameworkSwap
LangChainGroundRouteRetriever(k=5) — same .invoke(query)List[Document] as a Tavily/Exa retriever
LlamaIndexgroundroute_tool() — a FunctionTool, same agent wiring
Vercel AI SDKgroundrouteSearch() — a standard AI-SDK tool()
# LangChain — before:
#   from langchain_community.retrievers import TavilySearchAPIRetriever
#   retriever = TavilySearchAPIRetriever(k=5)
from groundroute_langchain import GroundRouteRetriever
retriever = GroundRouteRetriever(k=5)
// Vercel AI SDK — before:
//   const tools = { search: tavilySearchTool(...) };
import { groundrouteSearch } from "./groundroute";
const tools = { search: groundrouteSearch() };

These helpers live in the integrations/ directory of the GroundRoute repository and import their framework dependency lazily, so pulling one in never forces a framework you don't use. A native SDK package and one-click MCP registry listing are on the roadmap.