{
  "id": "web.search",
  "object": "tool",
  "name": "Web search",
  "summary": "Search the live web, routed across providers.",
  "description": "Searches the live web and returns ranked results with titles, URLs and snippets. Served by Exa, Tavily, Serper (Google results) or TinyFish: Opentools picks by price and health and fails over when one is down. Pin or exclude providers with routing. Snippets only: pass result URLs to web.markdown for the full page.",
  "category": "web",
  "hosted_by": "Partner",
  "runtime": "partner",
  "side_effects": false,
  "status": "live",
  "credits": 2,
  "price": "$0.0020",
  "providers": [
    {
      "id": "serper",
      "name": "Serper",
      "price": "$0.0020"
    },
    {
      "id": "tinyfish",
      "name": "TinyFish",
      "price": "$0.0020"
    },
    {
      "id": "exa",
      "name": "Exa",
      "price": "$0.0080"
    },
    {
      "id": "tavily",
      "name": "Tavily",
      "price": "$0.0100"
    }
  ],
  "mcp_name": "web_search",
  "input_schema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "minLength": 1,
        "maxLength": 500,
        "description": "What to search for"
      },
      "num_results": {
        "default": 10,
        "description": "How many results",
        "type": "integer",
        "minimum": 1,
        "maximum": 20
      },
      "type": {
        "default": "web",
        "description": "news: recent articles only",
        "type": "string",
        "enum": [
          "web",
          "news"
        ]
      },
      "recency": {
        "description": "Only results from this period",
        "type": "string",
        "enum": [
          "day",
          "week",
          "month",
          "year"
        ]
      },
      "include_domains": {
        "description": "Only these domains",
        "maxItems": 20,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 253
        }
      },
      "exclude_domains": {
        "description": "Never these domains",
        "maxItems": 20,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 253
        }
      }
    },
    "required": [
      "query"
    ]
  },
  "kind": "tool"
}