pakx
← Explore

Brave Search

latest
Smithery

brave

Search the web with Brave's independent index — web, news, images, and videos. Bring your own subscription token from the [Brave Search API dashboard](https://api-dashboard.search.brave.com).

Install

One line. Adds the dep to agents.yml and resolves it.

pakx add mcp brave

Raw metadata

Source-specific install hints as returned by Smithery.

{
  "qualifiedName": "brave",
  "displayName": "Brave Search",
  "description": "Search the web with Brave's independent index — web, news, images, and videos. Bring your own subscription token from the [Brave Search API dashboard](https://api-dashboard.search.brave.com).",
  "iconUrl": "https://api.smithery.ai/servers/brave/icon",
  "remote": true,
  "deploymentUrl": "https://brave.run.tools",
  "connections": [
    {
      "type": "http",
      "deploymentUrl": "https://brave.run.tools",
      "configSchema": {
        "type": "object",
        "required": [
          "braveApiKey"
        ],
        "properties": {
          "braveApiKey": {
            "type": "string",
            "title": "Brave API Key",
            "x-order": 0,
            "description": "Your Brave Search subscription token. Get one at [api-dashboard.search.brave.com](https://api-dashboard.search.brave.com/app/keys)."
          }
        }
      }
    }
  ],
  "security": null,
  "tools": [
    {
      "name": "brave_web_search",
      "description": "Performs web searches using the Brave Search API and returns comprehensive search results with rich metadata. To chain into local-POI enrichment, pass `result_filter=locations` and feed the resulting `locations.results[].id` values into `brave_local_search`. To chain into the AI summarizer, pass `summary=true` and feed the returned `summarizer.key` into `brave_summarizer`.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "maxLength": 400,
            "description": "Search query (max 400 characters and 50 words)."
          },
          "count": {
            "type": "integer",
            "default": 20,
            "maximum": 20,
            "minimum": 1,
            "description": "Number of results to return (max 20; default 20)."
          },
          "units": {
            "enum": [
              "metric",
              "imperial"
            ],
            "type": "string",
            "description": "Measurement system used in result content."
          },
          "offset": {
            "type": "integer",
            "default": 0,
            "maximum": 9,
            "minimum": 0,
            "description": "Pagination offset (max 9, in units of `count`)."
          },
          "country": {
            "type": "string",
            "default": "US",
            "maxLength": 2,
            "minLength": 2,
            "description": "2-letter country code (ISO 3166-1 alpha-2). Defaults to US."
          },
          "summary": {
            "type": "boolean",
            "description": "Set to true to request a summarizer key in the response. Pair with `brave_summarizer` to fetch the AI-generated summary text. Pro AI tier required."
          },
          "ui_lang": {
            "type": "string",
            "default": "en-US",
            "description": "User interface language for the response, in the form <lang>-<country> (e.g. en-US)."
          },
          "freshness": {
            "type": "string",
            "description": "Filter results by recency. Use pd (past day), pw (past week), pm (past month), py (past year), or a YYYY-MM-DDtoYYYY-MM-DD range."
          },
          "goggles_id": {
            "type": "string",
            "description": "Goggles ID for re-ranked results. See https://search.brave.com/help/goggles."
          },
          "safesearch": {
            "enum": [
              "off",
              "moderate",
              "strict"
            ],
            "type": "string",
            "default": "moderate",
            "description": "Filter level for adult content."
          },
          "spellcheck": {
            "type": "boolean",
            "default": true,
            "description": "Whether to spellcheck the query."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          },
          "result_filter": {
            "type": "string",
            "description": "Comma-separated list of result types to include. Available values: discussions, faq, infobox, news, query, summarizer, videos, web, locations. Use `locations` to chain into `brave_local_pois`."
          },
          "extra_snippets": {
            "type": "boolean",
            "description": "Return up to 5 extra alternate snippets per result. Premium plans only."
          },
          "text_decorations": {
            "type": "boolean",
            "default": true,
            "description": "Whether to include decoration markers (e.g. highlighting) in result strings."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_news_search",
      "description": "Searches for news articles using Brave's News Search API. Use it when you need current news, breaking updates, or articles about specific topics.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "maxLength": 400,
            "description": "Search query (max 400 characters and 50 words)."
          },
          "count": {
            "type": "integer",
            "default": 20,
            "maximum": 20,
            "minimum": 1,
            "description": "Number of results to return (max 20; default 20)."
          },
          "offset": {
            "type": "integer",
            "default": 0,
            "maximum": 9,
            "minimum": 0,
            "description": "Pagination offset (max 9, in units of `count`)."
          },
          "country": {
            "type": "string",
            "default": "US",
            "maxLength": 2,
            "minLength": 2,
            "description": "2-letter country code (ISO 3166-1 alpha-2). Defaults to US."
          },
          "ui_lang": {
            "type": "string",
            "default": "en-US",
            "description": "User interface language for the response, in the form <lang>-<country> (e.g. en-US)."
          },
          "freshness": {
            "type": "string",
            "description": "Filter results by recency. Use pd (past day), pw (past week), pm (past month), py (past year), or a YYYY-MM-DDtoYYYY-MM-DD range."
          },
          "safesearch": {
            "enum": [
              "off",
              "moderate",
              "strict"
            ],
            "type": "string",
            "default": "moderate",
            "description": "Filter level for adult content."
          },
          "spellcheck": {
            "type": "boolean",
            "default": true,
            "description": "Whether to spellcheck the query."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          },
          "text_decorations": {
            "type": "boolean",
            "default": true,
            "description": "Whether to include decoration markers (e.g. highlighting) in result strings."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_image_search",
      "description": "Performs an image search using the Brave Search API. Helpful when you need pictures of people, places, things, graphic-design ideas, or art inspiration. Counts of up to 100 are supported.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "maxLength": 400,
            "description": "Search query (max 400 characters and 50 words)."
          },
          "count": {
            "type": "integer",
            "maximum": 100,
            "minimum": 1,
            "description": "Number of results (max 100; default 50)."
          },
          "country": {
            "type": "string",
            "default": "US",
            "maxLength": 2,
            "minLength": 2,
            "description": "2-letter country code (ISO 3166-1 alpha-2). Defaults to US."
          },
          "safesearch": {
            "enum": [
              "off",
              "moderate",
              "strict"
            ],
            "type": "string",
            "default": "moderate",
            "description": "Filter level for adult content."
          },
          "spellcheck": {
            "type": "boolean",
            "default": true,
            "description": "Whether to spellcheck the query."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_video_search",
      "description": "Searches for videos using Brave's Video Search API. Returns structured video results with metadata.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "maxLength": 400,
            "description": "Search query (max 400 characters and 50 words)."
          },
          "count": {
            "type": "integer",
            "default": 20,
            "maximum": 20,
            "minimum": 1,
            "description": "Number of results to return (max 20; default 20)."
          },
          "offset": {
            "type": "integer",
            "default": 0,
            "maximum": 9,
            "minimum": 0,
            "description": "Pagination offset (max 9, in units of `count`)."
          },
          "country": {
            "type": "string",
            "default": "US",
            "maxLength": 2,
            "minLength": 2,
            "description": "2-letter country code (ISO 3166-1 alpha-2). Defaults to US."
          },
          "ui_lang": {
            "type": "string",
            "default": "en-US",
            "description": "User interface language for the response, in the form <lang>-<country> (e.g. en-US)."
          },
          "freshness": {
            "type": "string",
            "description": "Filter results by recency. Use pd (past day), pw (past week), pm (past month), py (past year), or a YYYY-MM-DDtoYYYY-MM-DD range."
          },
          "safesearch": {
            "enum": [
              "off",
              "moderate",
              "strict"
            ],
            "type": "string",
            "default": "moderate",
            "description": "Filter level for adult content."
          },
          "spellcheck": {
            "type": "boolean",
            "default": true,
            "description": "Whether to spellcheck the query."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_local_search",
      "description": "Brave Local Search API returns enriched information (address, phone, hours, rating) for location-search results. Access requires the Brave Search API Pro plan; currently US-only. Two-step flow: first call `brave_web_search` with `result_filter=locations` to obtain `locations.results[].id`, then pass them here. NOTE: This tool takes location IDs from a prior web-search response; if you have a free-text query, call `brave_web_search` first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "minItems": 1,
            "description": "One or more location IDs returned by a prior `brave_web_search` with `result_filter=locations`. Up to 20 IDs per call."
          },
          "units": {
            "enum": [
              "metric",
              "imperial"
            ],
            "type": "string",
            "description": "Measurement system."
          },
          "ui_lang": {
            "type": "string",
            "default": "en-US",
            "description": "User interface language for the response, in the form <lang>-<country> (e.g. en-US)."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_llm_context",
      "description": "Retrieves pre-extracted, relevance-ranked web content using Brave's LLM Context API, optimized for AI agents, LLM grounding, and RAG pipelines. Unlike a traditional web search that returns links and short descriptions, this tool returns the actual substance of matching pages — text chunks, tables, code blocks, and structured data — so the model can reason over it directly. When relaying results in markdown-supporting environments, cite source URLs from the `sources` map.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "default": 20,
            "maximum": 50,
            "minimum": 1,
            "description": "Maximum number of search results considered to select the LLM context data. Default 20, max 50."
          },
          "query": {
            "type": "string",
            "maxLength": 400,
            "description": "The user's search query. Max 400 characters and 50 words."
          },
          "country": {
            "type": "string",
            "default": "US",
            "maxLength": 2,
            "minLength": 2,
            "description": "2-letter country code (ISO 3166-1 alpha-2). Defaults to US."
          },
          "freshness": {
            "type": "string",
            "description": "Filter results by recency. Use pd, pw, pm, py, or YYYY-MM-DDtoYYYY-MM-DD."
          },
          "spellcheck": {
            "type": "boolean",
            "default": true,
            "description": "Whether to spellcheck the query."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          },
          "enable_local": {
            "type": "boolean",
            "description": "Whether to enable local recall."
          },
          "context_threshold_mode": {
            "enum": [
              "disabled",
              "strict",
              "lenient",
              "balanced"
            ],
            "type": "string",
            "default": "balanced",
            "description": "Mode used to determine the inclusion threshold for content."
          },
          "enable_source_metadata": {
            "type": "boolean",
            "description": "Enable source metadata enrichment (site_name, favicon) in the sources attribute."
          },
          "maximum_number_of_urls": {
            "type": "integer",
            "maximum": 50,
            "minimum": 1,
            "description": "Maximum number of different URLs to include in LLM context."
          },
          "maximum_number_of_tokens": {
            "type": "integer",
            "default": 8192,
            "maximum": 32768,
            "minimum": 1024,
            "description": "Approximate maximum number of tokens to include in context. Default 8192, max 32768."
          },
          "maximum_number_of_snippets": {
            "type": "integer",
            "default": 50,
            "maximum": 256,
            "minimum": 1,
            "description": "Maximum number of snippets (chunks of text) to include in LLM context. Default 50, max 256."
          },
          "maximum_number_of_tokens_per_url": {
            "type": "integer",
            "default": 4096,
            "maximum": 8192,
            "minimum": 512,
            "description": "Maximum number of tokens to include per URL. Default 4096, max 8192."
          },
          "maximum_number_of_snippets_per_url": {
            "type": "integer",
            "default": 50,
            "maximum": 100,
            "minimum": 1,
            "description": "Maximum number of snippets to include per URL. Default 50, max 100."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_place_search",
      "description": "Searches Brave's Place Search API. A single call may populate any combination of `results` (POIs), `cities`, `addresses`, `streets`, and `location` (the resolved search area), depending on the query shape. Use for POIs near coordinates or a named area, browsing general POIs (omit `query`, supply coords or `location`), disambiguating bare city names, resolving specific addresses, or looking up streets. Anchor via `latitude`+`longitude` or `location`; with neither, `query` is required.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "default": 20,
            "maximum": 50,
            "minimum": 1,
            "description": "Number of results (max 50, default 20)."
          },
          "query": {
            "type": "string",
            "maxLength": 400,
            "description": "Query string. Shape influences the response: POI-like queries return `results`; ambiguous city names return `cities`; address-/street-shaped queries with a geographic anchor return `addresses` and/or `streets`. Omit to browse general POIs in the supplied area. Required if neither `latitude`+`longitude` nor `location` is provided."
          },
          "units": {
            "enum": [
              "metric",
              "imperial"
            ],
            "type": "string",
            "default": "metric",
            "description": "Units of measurement for distance values."
          },
          "geoloc": {
            "type": "string",
            "description": "Optional geolocation token used to refine results."
          },
          "radius": {
            "type": "number",
            "minimum": 0,
            "description": "Bias toward results closer to the supplied coordinates, in meters. NOT a hard cutoff."
          },
          "country": {
            "type": "string",
            "default": "US",
            "maxLength": 2,
            "minLength": 2,
            "description": "2-letter country code (ISO 3166-1 alpha-2). Defaults to US."
          },
          "ui_lang": {
            "type": "string",
            "default": "en-US",
            "description": "User interface language for the response, in the form <lang>-<country> (e.g. en-US)."
          },
          "latitude": {
            "type": "number",
            "maximum": 90,
            "minimum": -90,
            "description": "Latitude of the geographical coordinates to search around (-90 to 90). Typically paired with `longitude`."
          },
          "location": {
            "type": "string",
            "description": "Location string used as an alternative to lat/long. US: '<city> <state> <country>' (e.g. 'san francisco ca united states'). Non-US: '<city> <country>' (e.g. 'tokyo japan'). Capitalization and commas don't matter."
          },
          "longitude": {
            "type": "number",
            "maximum": 180,
            "minimum": -180,
            "description": "Longitude of the geographical coordinates to search around (-180 to 180). Typically paired with `latitude`."
          },
          "safesearch": {
            "enum": [
              "off",
              "moderate",
              "strict"
            ],
            "type": "string",
            "default": "moderate",
            "description": "Filter level for adult content."
          },
          "spellcheck": {
            "type": "boolean",
            "default": true,
            "description": "Whether to spellcheck the query."
          },
          "search_lang": {
            "type": "string",
            "default": "en",
            "description": "2-letter language code for the search. Defaults to en."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    },
    {
      "name": "brave_summarizer",
      "description": "Retrieves AI-generated summaries of web search results. Two-step flow: first call `brave_web_search` with `summary=true` to obtain `summarizer.key`, then pass it here. Pro AI tier required.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Summarizer key returned by a prior `brave_web_search` with `summary=true`."
          },
          "entity_info": {
            "type": "boolean",
            "description": "Whether to include extra entity-info fields with citation metadata."
          }
        }
      },
      "outputSchema": {
        "type": "object"
      }
    }
  ],
  "resources": null,
  "prompts": null
}