{
  "_comment_limits": "Optional top-level caps: maxContentChars caps the initial web_search/fetch_content body (default 30000); maxRetrievalChars caps one get_search_content page (default 30000). Pass offset=N to get_search_content to continue a truncated retrieval. maxSearchQueries caps how many queries one web_search call runs (default 10); maxFetchUrls caps how many URLs one fetch_content call fetches (default 20). Excess inputs are skipped and reported in the tool output.",
  "_comment_result_cache": "Retrieved bodies are spilled to <agent dir>/web-access-cache/<responseId>.json for 1 hour (32 MB ceiling, oldest dropped past it). The session file keeps only a bounded preview plus the path, so sessions no longer accumulate page bodies; get_search_content hydrates the full body from disk while the cache lives, and says so when it cannot.",
  "_comment_timeout": "timeoutMs is the deadline for one provider search request or one fetched URL (default 30000). It is combined with the agent's own abort signal, so whichever is shorter wins.",
  "timeoutMs": 30000,
  "_comment_fetch_cap": "maxResponseBytes is the ceiling on one fetched response body (bytes, default 10485760). The transport stops reading and drops the socket past it, so an oversized page cannot cost memory before content truncation applies. Endpoints you configure yourself are unaffected.",
  "maxResponseBytes": 10485760,
  "_comment_network": "Network policy for fetch_content. Model-supplied URLs are resolved before use: allowPrivateNetwork (default false) rejects hosts that are or resolve to private/link-local/reserved addresses, allowLoopback (default false) governs localhost/127.0.0.0/8/::1 — set it to true to fetch from local dev servers, and cloud-metadata addresses are always rejected. Every redirect hop is re-validated and re-resolved. Set allowPrivateNetwork true to reach private ranges (LAN servers). This does NOT affect provider API endpoints (ddgs.apiUrl / searxng.instanceUrl), which are operator-configured and remain reachable on private or loopback hosts.",
  "allowPrivateNetwork": false,
  "allowLoopback": false,
  "maxContentChars": 30000,
  "maxRetrievalChars": 30000,
  "maxSearchQueries": 10,
  "maxFetchUrls": 20,
  "provider": "searxng",
  "providers": {
    "gemini": {
      "apiKeyEnv": "GEMINI_API_KEY",
      "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
      "model": "gemini-3.5-flash-lite",
      "_available_models": ["gemini-3.6-flash", "gemini-3.5-flash-lite", "gemini-2.5-flash", "gemini-2.5-pro"]
    },
    "tavily": {
      "apiKeyEnv": "TAVILY_API_KEY",
      "maxResults": 5
    },
    "ddgs": {
      "apiUrl": "http://192.168.1.100:8000",
      "maxResults": 12
    },
    "searxng": {
      "instanceUrl": "http://192.168.1.100:8888",
      "maxResults": 12,
      "categories": "general",
      "safeSearch": 0
    },
    "exa": {
      "apiKeyEnv": "EXA_API_KEY",
      "maxResults": 5,
      "searchType": "auto",
      "includeSummary": true
    }
  }
}
