{
  "id": "octen.broad-search",
  "object": "tool",
  "name": "Octen Broad Search",
  "summary": "One query, up to 30 parallel sub-query searches.",
  "description": "Multi-angle web search: decomposes one query into up to 30 related sub-queries (max_queries, default 5), runs them in parallel, and returns results grouped by sub-query (not de-duplicated across groups). Accepts the same per-sub-query search options as Web Search (domains, text filters, time windows, highlights, full content, news topic, safesearch) via search_options. Use this instead of Web Search when one query has several distinct angles worth searching separately.\n\nRaw octen#broad-search endpoint: input is { body, queryParams, pathParams } as the provider documents them (https://docs.octen.ai/api-reference/broad-search).",
  "category": "web",
  "hosted_by": "Octen",
  "runtime": "partner",
  "side_effects": false,
  "status": "live",
  "credits": 0,
  "price": null,
  "providers": [
    {
      "id": "octen",
      "name": "Octen",
      "price": null,
      "own_key_only": true
    }
  ],
  "mcp_name": "octen_broad-search",
  "input_schema": {
    "type": "object",
    "properties": {
      "body": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500,
            "description": "The original search query."
          },
          "max_queries": {
            "default": 5,
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Upper bound on the number of sub-queries generated (each executed sub-query is a billed search unit)."
          },
          "search_options": {
            "description": "Search options applied to each sub-query (same parameters and defaults as Web Search).",
            "type": "object",
            "properties": {
              "topic": {
                "type": "string",
                "enum": [
                  "general",
                  "news"
                ],
                "description": "Use 'general' for general web search, or 'news' for news-focused results."
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "description": "Number of results to return (1-100)."
              },
              "include_domains": {
                "description": "Domains to specifically include in the search results.",
                "maxItems": 1200,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 60
                }
              },
              "exclude_domains": {
                "description": "Domains to specifically exclude from the search results.",
                "maxItems": 1200,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 60
                }
              },
              "include_text": {
                "description": "Strings that must appear in the result page text.",
                "maxItems": 5,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 30
                }
              },
              "exclude_text": {
                "description": "Strings that must not appear in the result page text.",
                "maxItems": 5,
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 30
                }
              },
              "time_basis": {
                "type": "string",
                "enum": [
                  "auto",
                  "published",
                  "crawled"
                ],
                "description": "Which time field is used for time filtering."
              },
              "time_range": {
                "description": "Relative time window counting back from now. Mutually exclusive with start_time/end_time (which take precedence).",
                "type": "string",
                "enum": [
                  "day",
                  "week",
                  "month",
                  "year",
                  "d",
                  "w",
                  "m",
                  "y"
                ]
              },
              "start_time": {
                "description": "Start time for filtering results. ISO 8601 date-time, e.g. '2025-01-01T00:00:00Z'.",
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "end_time": {
                "description": "End time for filtering results. ISO 8601 date-time, e.g. '2025-01-01T00:00:00Z'.",
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "country": {
                "description": "ISO 3166 country to prioritize results from; default 'auto' infers it from the query.",
                "type": "string"
              },
              "highlight": {
                "type": "object",
                "properties": {
                  "enable": {
                    "type": "boolean",
                    "description": "If true, returns query-relevant highlight in each result."
                  },
                  "max_tokens": {
                    "type": "integer",
                    "minimum": 100,
                    "maximum": 20000,
                    "description": "Max tokens returned per highlight."
                  }
                },
                "additionalProperties": false
              },
              "format": {
                "type": "string",
                "enum": [
                  "markdown",
                  "text"
                ],
                "description": "Formatting of highlight outputs."
              },
              "safesearch": {
                "type": "string",
                "enum": [
                  "off",
                  "strict"
                ],
                "description": "Explicit/adult content filtering."
              },
              "full_content": {
                "type": "object",
                "properties": {
                  "enable": {
                    "type": "boolean",
                    "description": "If true, returns full_content for each result."
                  },
                  "max_tokens": {
                    "type": "integer",
                    "minimum": 100,
                    "maximum": 100000,
                    "description": "Maximum tokens of full content included per result."
                  }
                },
                "additionalProperties": false
              },
              "include_images": {
                "type": "boolean",
                "description": "Whether to include images in each result."
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      }
    },
    "required": [
      "body"
    ],
    "additionalProperties": false
  },
  "kind": "endpoint"
}