{
  "tools": [
    {
      "name": "search",
      "description": "Defaults to Firehose Lite, results only, with shared cache enabled and a 24-hour maximum age. Set an endpoint or firehoseTier to override; request pageMarkdown true explicitly for paid full-page content. Search live web results with an API key (including a free anonymous key generated at https://openserp.io/keys) or account OAuth. Anonymous keys and usage attach on login in the original browser. Automatic engine selection (auto.search) uses only Google, Bing and Yahoo. Free results never include full-page content or page Markdown, even from shared cache. Free accounts may choose any engine, including Firehose Lite with provider auto and automatic routing; fast/cheap preferences are ignored. Shared cached results have unlimited age; cache misses run a live search within the free allowance. firehose.search returns combined ranked results and Markdown within a deadline. Paid requests may spend up to maxCostUsd. maxResults is an upstream request target; every valid unique received result is returned, including extras. Country and language names/codes are normalized; advanced fields route only to compatible sources. Firehose accepts firehoseTier lite (lower search cost) or advanced (broader coverage at higher search cost). Free and paid users can select either; free requests reuse unlimited-age shared cache first, then search live on a miss without page Markdown.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageMarkdown": {
            "default": false,
            "description": "Defaults to false: return search results and snippets without page fetching. For Firehose, true adds paid full-page Markdown, cost and response time. Use search_markdown for full-page content on other engines.",
            "type": "boolean"
          },
          "firehoseTier": {
            "default": "lite",
            "description": "Firehose coverage tier. Omitted means lite, the lower search-cost combination. default is a backward-compatible alias for lite. Advanced adds broader coverage at higher search cost. Results use query relevance, weighted source priority and agreement. Lite is available to free and paid users; Advanced requires paid access, including cached results. Free Lite requests reuse shared cache first and search live on a miss, without page Markdown. Applies only to firehose.search.",
            "type": "string",
            "enum": [
              "lite",
              "default",
              "advanced"
            ]
          },
          "endpoint": {
            "default": "firehose.search",
            "description": "Defaults to firehose.search: Firehose Lite combined search. Choose another endpoint to select an engine. auto.search selects Google, Bing or Yahoo. Free accounts may choose engines or Firehose Lite with automatic routing. Firehose Advanced requires paid access, including cached results.",
            "type": "string",
            "maxLength": 80
          },
          "engine": {
            "type": "string",
            "maxLength": 40
          },
          "query": {
            "description": "Search text, at most 2,000 characters after normalization (24,000 encoded input characters). Whitespace, control characters, percent/HTML encoding and typographic quotes are normalized. File-type aliases use each engine’s syntax; quoted operators remain literal. Firehose routes operators only to compatible sources. DeepSeek limits the final query to 128 Unicode characters.",
            "type": "string",
            "maxLength": 24000
          },
          "q": {
            "type": "string",
            "maxLength": 24000
          },
          "provider": {
            "default": "auto",
            "description": "Provider or offering selection requires a funded account. With allowFallback true this is a preference; set false to pin one route. Free searches require auto.",
            "type": "string",
            "maxLength": 100
          },
          "strategy": {
            "default": "cheap",
            "description": "Funded accounts may prefer cheap or fast routing. Free searches ignore this preference and always use automatic cache routing.",
            "type": "string",
            "enum": [
              "cheap",
              "fast"
            ]
          },
          "allowFallback": {
            "default": true,
            "description": "Automatic source selection (provider auto) always retries sources within the selected engine using the cheap or fast strategy, even when this flag is false; it never changes engines after selection. With an explicit provider/offering, false pins one source and one attempt; true allows other sources and compatible engines, preferring viable same-engine sources. Up to three attempts share the deadline and spending cap. Sources with at least ten trailing-hour samples below 90% success remain deprioritized. Compatible web alternatives are Google, Bing and Yahoo; image fallback stays on image engines. Firehose always retries sources within each component engine. Free searches use shared cache first and live search on a miss with managed same-engine source retries.",
            "type": "boolean"
          },
          "page": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "maxPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "maxResults": {
            "description": "Upstream request target, not a response cap. Defaults to 50 for Firehose (input maximum 100) and 10 otherwise. All valid unique results received are returned, even above the target. Source request limits apply.",
            "type": "integer",
            "minimum": 1,
            "maximum": 1000
          },
          "maxCostUsd": {
            "type": [
              "string",
              "number"
            ]
          },
          "country": {
            "description": "Country name, native name, ISO alpha-2/alpha-3 or numeric code. USA, U.S. and United States of America normalize to us.",
            "type": "string",
            "maxLength": 150
          },
          "language": {
            "description": "Language name or code. English/eng normalize to en; regional locale spellings use the base language, with Simplified/Traditional Chinese variants retained.",
            "type": "string",
            "maxLength": 150
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            ]
          },
          "domain": {
            "type": "string",
            "maxLength": 250
          },
          "site": {
            "type": "string",
            "maxLength": 1000
          },
          "exactTerms": {
            "type": "string",
            "maxLength": 250
          },
          "excludeTerms": {
            "type": "string",
            "maxLength": 250
          },
          "filetype": {
            "type": "string",
            "maxLength": 150
          },
          "safe": {
            "description": "off, moderate or strict; on/true normalize to strict. Only compatible sources are eligible.",
            "anyOf": [
              {
                "type": "string",
                "maxLength": 40
              },
              {
                "type": "boolean"
              }
            ]
          },
          "device": {
            "description": "desktop, mobile or tablet; phone/smartphone normalize to mobile.",
            "type": "string",
            "maxLength": 40
          },
          "timePeriod": {
            "description": "hour, day, week, month or year; aliases such as past week normalize to week.",
            "type": "string",
            "maxLength": 80
          },
          "resultLanguage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 150
                }
              }
            ]
          },
          "countryRestrict": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 150
                }
              }
            ]
          },
          "noAutocorrect": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              }
            ]
          },
          "duplicateFilter": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              }
            ]
          },
          "cache": {
            "default": {
              "enabled": true,
              "ttlHours": 24
            },
            "description": "Shared cache is enabled by default, with a 24-hour maximum age for paid searches. Free searches use unlimited-age shared cache. Setting enabled false limits reuse to five minutes. All cacheable requests have a five-minute minimum, including shorter ttlHours values. Paid dedicated Markdown responses are cached privately per account.",
            "type": "object",
            "properties": {
              "enabled": {
                "default": true,
                "type": "boolean"
              },
              "ttlHours": {
                "default": 24,
                "anyOf": [
                  {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 87600
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          }
        },
        "additionalProperties": {}
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "quote",
      "description": "Defaults to Firehose Lite with results only and shared cache enabled (24 hours). Compare inclusive prices, trailing-hour median/p90 search latency and source timeouts without a paid search. Page Markdown fetching is excluded.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "pageMarkdown": {
            "default": false,
            "description": "Defaults to false: return search results and snippets without page fetching. For Firehose, true adds paid full-page Markdown, cost and response time. Use search_markdown for full-page content on other engines.",
            "type": "boolean"
          },
          "firehoseTier": {
            "default": "lite",
            "description": "Firehose coverage tier. Omitted means lite, the lower search-cost combination. default is a backward-compatible alias for lite. Advanced adds broader coverage at higher search cost. Results use query relevance, weighted source priority and agreement. Lite is available to free and paid users; Advanced requires paid access, including cached results. Free Lite requests reuse shared cache first and search live on a miss, without page Markdown. Applies only to firehose.search.",
            "type": "string",
            "enum": [
              "lite",
              "default",
              "advanced"
            ]
          },
          "endpoint": {
            "default": "firehose.search",
            "description": "Defaults to firehose.search: Firehose Lite combined search. Choose another endpoint to select an engine. auto.search selects Google, Bing or Yahoo. Free accounts may choose engines or Firehose Lite with automatic routing. Firehose Advanced requires paid access, including cached results.",
            "type": "string",
            "maxLength": 80
          },
          "engine": {
            "type": "string",
            "maxLength": 40
          },
          "query": {
            "description": "Search text, at most 2,000 characters after normalization (24,000 encoded input characters). Whitespace, control characters, percent/HTML encoding and typographic quotes are normalized. File-type aliases use each engine’s syntax; quoted operators remain literal. Firehose routes operators only to compatible sources. DeepSeek limits the final query to 128 Unicode characters.",
            "type": "string",
            "maxLength": 24000
          },
          "q": {
            "type": "string",
            "maxLength": 24000
          },
          "provider": {
            "default": "auto",
            "description": "Provider or offering selection requires a funded account. With allowFallback true this is a preference; set false to pin one route. Free searches require auto.",
            "type": "string",
            "maxLength": 100
          },
          "strategy": {
            "default": "cheap",
            "description": "Funded accounts may prefer cheap or fast routing. Free searches ignore this preference and always use automatic cache routing.",
            "type": "string",
            "enum": [
              "cheap",
              "fast"
            ]
          },
          "allowFallback": {
            "default": true,
            "description": "Automatic source selection (provider auto) always retries sources within the selected engine using the cheap or fast strategy, even when this flag is false; it never changes engines after selection. With an explicit provider/offering, false pins one source and one attempt; true allows other sources and compatible engines, preferring viable same-engine sources. Up to three attempts share the deadline and spending cap. Sources with at least ten trailing-hour samples below 90% success remain deprioritized. Compatible web alternatives are Google, Bing and Yahoo; image fallback stays on image engines. Firehose always retries sources within each component engine. Free searches use shared cache first and live search on a miss with managed same-engine source retries.",
            "type": "boolean"
          },
          "page": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "maxPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "maxResults": {
            "description": "Upstream request target, not a response cap. Defaults to 50 for Firehose (input maximum 100) and 10 otherwise. All valid unique results received are returned, even above the target. Source request limits apply.",
            "type": "integer",
            "minimum": 1,
            "maximum": 1000
          },
          "maxCostUsd": {
            "type": [
              "string",
              "number"
            ]
          },
          "country": {
            "description": "Country name, native name, ISO alpha-2/alpha-3 or numeric code. USA, U.S. and United States of America normalize to us.",
            "type": "string",
            "maxLength": 150
          },
          "language": {
            "description": "Language name or code. English/eng normalize to en; regional locale spellings use the base language, with Simplified/Traditional Chinese variants retained.",
            "type": "string",
            "maxLength": 150
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            ]
          },
          "domain": {
            "type": "string",
            "maxLength": 250
          },
          "site": {
            "type": "string",
            "maxLength": 1000
          },
          "exactTerms": {
            "type": "string",
            "maxLength": 250
          },
          "excludeTerms": {
            "type": "string",
            "maxLength": 250
          },
          "filetype": {
            "type": "string",
            "maxLength": 150
          },
          "safe": {
            "description": "off, moderate or strict; on/true normalize to strict. Only compatible sources are eligible.",
            "anyOf": [
              {
                "type": "string",
                "maxLength": 40
              },
              {
                "type": "boolean"
              }
            ]
          },
          "device": {
            "description": "desktop, mobile or tablet; phone/smartphone normalize to mobile.",
            "type": "string",
            "maxLength": 40
          },
          "timePeriod": {
            "description": "hour, day, week, month or year; aliases such as past week normalize to week.",
            "type": "string",
            "maxLength": 80
          },
          "resultLanguage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 150
                }
              }
            ]
          },
          "countryRestrict": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 150
                }
              }
            ]
          },
          "noAutocorrect": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              }
            ]
          },
          "duplicateFilter": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              }
            ]
          },
          "cache": {
            "default": {
              "enabled": true,
              "ttlHours": 24
            },
            "description": "Shared cache is enabled by default, with a 24-hour maximum age for paid searches. Free searches use unlimited-age shared cache. Setting enabled false limits reuse to five minutes. All cacheable requests have a five-minute minimum, including shorter ttlHours values. Paid dedicated Markdown responses are cached privately per account.",
            "type": "object",
            "properties": {
              "enabled": {
                "default": true,
                "type": "boolean"
              },
              "ttlHours": {
                "default": 24,
                "anyOf": [
                  {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 87600
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          }
        },
        "additionalProperties": {}
      },
      "annotations": {
        "readOnlyHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "status",
      "description": "Inspect real upstream outcomes in 168 hourly buckets over seven days, with trailing-hour median/p90 search latency and timeout policies. Page fetching and legacy combined timings are excluded from latency samples.",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "engine": {
            "type": "string"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "balance",
      "description": "Read account balance, payment-exemption status, service usage value, and API-key limits. Payment-exempt accounts can search with a zero balance; usage value is tracked while actual charges stay zero.",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {}
      },
      "annotations": {
        "readOnlyHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search_markdown",
      "description": "Full-page Markdown is paid-only, including cached page content. All received results remain in the response. Clear PDFs are marked skipped_pdf and excluded from Markdown fetching and page-fetch charges; retrieve eligible unique URLs within the deadline and spending cap. Requires a funded account and search permission. Default 45 seconds and $1 total cap. Partial results identify unavailable, budget-limited or size-limited content.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "firehoseTier": {
            "default": "lite",
            "description": "Firehose coverage tier. Omitted means lite, the lower search-cost combination. default is a backward-compatible alias for lite. Advanced adds broader coverage at higher search cost. Results use query relevance, weighted source priority and agreement. Lite is available to free and paid users; Advanced requires paid access, including cached results. Free Lite requests reuse shared cache first and search live on a miss, without page Markdown. Applies only to firehose.search.",
            "type": "string",
            "enum": [
              "lite",
              "default",
              "advanced"
            ]
          },
          "endpoint": {
            "default": "firehose.search",
            "description": "Defaults to firehose.search: Firehose Lite combined search. Choose another endpoint to select an engine. auto.search selects Google, Bing or Yahoo. Free accounts may choose engines or Firehose Lite with automatic routing. Firehose Advanced requires paid access, including cached results.",
            "type": "string",
            "maxLength": 80
          },
          "engine": {
            "type": "string",
            "maxLength": 40
          },
          "query": {
            "description": "Search text, at most 2,000 characters after normalization (24,000 encoded input characters). Whitespace, control characters, percent/HTML encoding and typographic quotes are normalized. File-type aliases use each engine’s syntax; quoted operators remain literal. Firehose routes operators only to compatible sources. DeepSeek limits the final query to 128 Unicode characters.",
            "type": "string",
            "maxLength": 24000
          },
          "q": {
            "type": "string",
            "maxLength": 24000
          },
          "provider": {
            "default": "auto",
            "description": "Provider or offering selection requires a funded account. With allowFallback true this is a preference; set false to pin one route. Free searches require auto.",
            "type": "string",
            "maxLength": 100
          },
          "strategy": {
            "default": "cheap",
            "description": "Funded accounts may prefer cheap or fast routing. Free searches ignore this preference and always use automatic cache routing.",
            "type": "string",
            "enum": [
              "cheap",
              "fast"
            ]
          },
          "allowFallback": {
            "default": true,
            "description": "Automatic source selection (provider auto) always retries sources within the selected engine using the cheap or fast strategy, even when this flag is false; it never changes engines after selection. With an explicit provider/offering, false pins one source and one attempt; true allows other sources and compatible engines, preferring viable same-engine sources. Up to three attempts share the deadline and spending cap. Sources with at least ten trailing-hour samples below 90% success remain deprioritized. Compatible web alternatives are Google, Bing and Yahoo; image fallback stays on image engines. Firehose always retries sources within each component engine. Free searches use shared cache first and live search on a miss with managed same-engine source retries.",
            "type": "boolean"
          },
          "page": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "maxPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "maxResults": {
            "description": "Upstream request target, not a response cap. Defaults to 50 for Firehose (input maximum 100) and 10 otherwise. All valid unique results received are returned, even above the target. Source request limits apply.",
            "type": "integer",
            "minimum": 1,
            "maximum": 1000
          },
          "maxCostUsd": {
            "type": [
              "string",
              "number"
            ]
          },
          "country": {
            "description": "Country name, native name, ISO alpha-2/alpha-3 or numeric code. USA, U.S. and United States of America normalize to us.",
            "type": "string",
            "maxLength": 150
          },
          "language": {
            "description": "Language name or code. English/eng normalize to en; regional locale spellings use the base language, with Simplified/Traditional Chinese variants retained.",
            "type": "string",
            "maxLength": 150
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            ]
          },
          "domain": {
            "type": "string",
            "maxLength": 250
          },
          "site": {
            "type": "string",
            "maxLength": 1000
          },
          "exactTerms": {
            "type": "string",
            "maxLength": 250
          },
          "excludeTerms": {
            "type": "string",
            "maxLength": 250
          },
          "filetype": {
            "type": "string",
            "maxLength": 150
          },
          "safe": {
            "description": "off, moderate or strict; on/true normalize to strict. Only compatible sources are eligible.",
            "anyOf": [
              {
                "type": "string",
                "maxLength": 40
              },
              {
                "type": "boolean"
              }
            ]
          },
          "device": {
            "description": "desktop, mobile or tablet; phone/smartphone normalize to mobile.",
            "type": "string",
            "maxLength": 40
          },
          "timePeriod": {
            "description": "hour, day, week, month or year; aliases such as past week normalize to week.",
            "type": "string",
            "maxLength": 80
          },
          "resultLanguage": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 150
                }
              }
            ]
          },
          "countryRestrict": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 250
              },
              {
                "maxItems": 10,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 150
                }
              }
            ]
          },
          "noAutocorrect": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              }
            ]
          },
          "duplicateFilter": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              }
            ]
          },
          "cache": {
            "default": {
              "enabled": true,
              "ttlHours": 24
            },
            "description": "Shared cache is enabled by default, with a 24-hour maximum age for paid searches. Free searches use unlimited-age shared cache. Setting enabled false limits reuse to five minutes. All cacheable requests have a five-minute minimum, including shorter ttlHours values. Paid dedicated Markdown responses are cached privately per account.",
            "type": "object",
            "properties": {
              "enabled": {
                "default": true,
                "type": "boolean"
              },
              "ttlHours": {
                "default": 24,
                "anyOf": [
                  {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 87600
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          },
          "scraper": {
            "default": "auto",
            "type": "string",
            "enum": [
              "auto",
              "scrapingdog",
              "scrapingbee"
            ]
          },
          "timeoutMs": {
            "default": 45000,
            "type": "integer",
            "minimum": 5000,
            "maximum": 60000
          }
        },
        "additionalProperties": {}
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    }
  ]
}
