[{"id":"action_board","name":"Action Board","alias":"ActionBoard","aliases":[],"description_short":"Retrieve actions from ActionBoard for your projects.","description_long":"Retrieve actions from ActionBoard for your projects.","description_tool_prompt":"Retrieve actions from ActionBoard for your projects.","source":"Botify ActionBoard","conversation_examples":["Show me my current ActionBoard items and their status","What critical SEO issues need my attention right now?","What are the high-priority technical SEO problems to fix?","Show me all semantic issues from ActionBoard"],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{},"required":[]},"response":{"$defs":{"ActionBoardCanvas":{"properties":{"title":{"title":"Title","type":"string"},"description":{"title":"Description","type":"string"},"config":{"additionalProperties":true,"title":"Config","type":"object"}},"required":["title","description","config"],"title":"ActionBoardCanvas","type":"object"},"ActionBoardResult":{"properties":{"name":{"title":"Name","type":"string"},"description":{"title":"Description","type":"string"},"relevance":{"anyOf":[{"enum":["LOW","MIDDLE","HIGH"],"type":"string"},{"type":"null"}],"title":"Relevance"},"impact_metrics":{"$ref":"#/$defs/ImpactedMetric"},"canvas":{"items":{"$ref":"#/$defs/ActionBoardCanvas"},"title":"Canvas","type":"array"}},"required":["name","description","relevance","impact_metrics","canvas"],"title":"ActionBoardResult","type":"object"},"ImpactedMetric":{"properties":{"total_urls_affected":{"title":"Total Urls Affected","type":"integer"},"previous_total_urls_affected":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Total Urls Affected"},"active_urls_affected":{"title":"Active Urls Affected","type":"integer"},"previous_active_urls_affected":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Active Urls Affected"},"page_rank_impact":{"title":"Page Rank Impact","type":"number"},"previous_page_rank_impact":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Previous Page Rank Impact"}},"required":["total_urls_affected","previous_total_urls_affected","active_urls_affected","previous_active_urls_affected","page_rank_impact","previous_page_rank_impact"],"title":"ImpactedMetric","type":"object"}},"properties":{"results":{"description":"Action board results","items":{"$ref":"#/$defs/ActionBoardResult"},"title":"Results","type":"array"}},"required":["results"],"title":"ActionBoardProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"agentic_catalog_sources","name":"Agentic Catalog Sources","alias":"AgenticCatalogSources","aliases":[],"description_short":"List the AgenticCatalog sources of a project","description_long":"\n    List every source configured on a project's AgenticCatalog, with its name,\n    description, config, and destinations.\n\n    Call this BEFORE any query about an AgenticCatalog table when the user has not named a\n    source. Those tables (`agentic_catalog_sources_pull`,\n    `agentic_catalog_destinations_push`, `agentic_catalog_source_<source>_v<version>`) hold\n    every source of the project mixed together, so an organization and project alone do not\n    identify what to read -- and picking a source yourself silently answers a different\n    question than the one asked.\n\n    If this returns more than one source, ASK THE USER which one they mean rather than\n    choosing. If it returns exactly one, use it. `id` is the `source_id` filter;\n    `destinations[].type` is the `destination` filter on the push table. Do not invent\n    a destination that is not listed.\n\n    This is the authoritative list. Do NOT substitute `SELECT DISTINCT source_id` on a\n    BigQuery table: that only sees sources which have landed a pull, so it omits sources\n    that are configured but never pulled, and sources whose pulls are not reaching BigQuery.\n\n    Listing is all this tool does. Once you have the source, answer the actual question with\n    the `tables_*` tools, filtering on `source_id`.\n    ","description_tool_prompt":"\n    List every source configured on a project's AgenticCatalog, with its name,\n    description, config, and destinations.\n\n    Call this BEFORE any query about an AgenticCatalog table when the user has not named a\n    source. Those tables (`agentic_catalog_sources_pull`,\n    `agentic_catalog_destinations_push`, `agentic_catalog_source_<source>_v<version>`) hold\n    every source of the project mixed together, so an organization and project alone do not\n    identify what to read -- and picking a source yourself silently answers a different\n    question than the one asked.\n\n    If this returns more than one source, ASK THE USER which one they mean rather than\n    choosing. If it returns exactly one, use it. `id` is the `source_id` filter;\n    `destinations[].type` is the `destination` filter on the push table. Do not invent\n    a destination that is not listed.\n\n    This is the authoritative list. Do NOT substitute `SELECT DISTINCT source_id` on a\n    BigQuery table: that only sees sources which have landed a pull, so it omits sources\n    that are configured but never pulled, and sources whose pulls are not reaching BigQuery.\n\n    Listing is all this tool does. Once you have the source, answer the actual question with\n    the `tables_*` tools, filtering on `source_id`.\n    ","source":"AgenticCatalog","conversation_examples":[],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{},"required":[]},"response":{"$defs":{"AgenticCatalogDestination":{"description":"One destination configured on an AgenticCatalog source.","properties":{"type":{"description":"Destination type. Filter `destination` on this value in `agentic_catalog_destinations_push`. `dummy` is a no-op and never appears in that table.","title":"Type","type":"string"},"name":{"description":"Human-readable destination name.","title":"Name","type":"string"},"config":{"additionalProperties":true,"description":"Destination settings (credentials are masked).","title":"Config","type":"object"}},"required":["type","name","config"],"title":"AgenticCatalogDestination","type":"object"},"AgenticCatalogSource":{"description":"One AgenticCatalog source configured on the project.","properties":{"id":{"description":"Source identifier. Filter `source_id` on this value in the AgenticCatalog BigQuery tables.","title":"Id","type":"string"},"name":{"description":"Human-readable source name.","title":"Name","type":"string"},"description":{"description":"Optional source description.","title":"Description","type":"string"},"config":{"additionalProperties":true,"description":"Source-level settings (datasource, enrichment, language, ...). Secrets are masked.","title":"Config","type":"object"},"destinations":{"description":"Destinations this source is configured to push to.","items":{"$ref":"#/$defs/AgenticCatalogDestination"},"title":"Destinations","type":"array"}},"required":["id","name","description","config","destinations"],"title":"AgenticCatalogSource","type":"object"}},"properties":{"sources":{"description":"Every source configured on the project, pulled or not. `id` is what to filter `source_id` on in the AgenticCatalog BigQuery tables; `destinations[].type` is what to filter `destination` on. Empty means the project has no AgenticCatalog.","items":{"$ref":"#/$defs/AgenticCatalogSource"},"title":"Sources","type":"array"}},"required":["sources"],"title":"AgenticCatalogSourcesProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"ai_gateway","name":"AI Gateway","alias":"AiGateway","aliases":["llm_wrapper"],"description_short":"Generate structured output from text input","description_long":"\n    Generate structured output from unstructured text input based on\n    configurable item definitions. It can extract specific information types (strings,\n    numbers, booleans) from text according to custom instructions.\n\n    Supports both OpenAI models (gpt-5.6-luna, gpt-5.6-terra, gpt-5.5, gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.2, gpt-5.1, gpt-5-mini, gpt-5-nano) and\n    Gemini models (gemini-3.1-pro-preview, gemini-3-flash-preview, gemini-3.1-flash-lite, gemini-3.5-flash).\n\n    Can also use other agents as tools for complex reasoning tasks.\n    ","description_tool_prompt":"\n    Generate structured output from unstructured text input based on\n    configurable item definitions. It can extract specific information types (strings,\n    numbers, booleans) from text according to custom instructions.\n\n    Supports both OpenAI models (gpt-5.6-luna, gpt-5.6-terra, gpt-5.5, gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.2, gpt-5.1, gpt-5-mini, gpt-5-nano) and\n    Gemini models (gemini-3.1-pro-preview, gemini-3-flash-preview, gemini-3.1-flash-lite, gemini-3.5-flash).\n\n    Can also use other agents as tools for complex reasoning tasks.\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"prefeed":{"default":[],"description":"List of agent pre-calls whose results are injected into the user prompt before the LLM runs.","items":{"$ref":"#/$defs/PrefeedCall"},"title":"Prefeed","type":"array"},"system_prompt":{"default":"","description":"System prompt used to generate the items","title":"System Prompt","type":"string"},"structured_output_json_schema":{"additionalProperties":true,"description":"JSON Schema for the structured output","title":"Structured Output Json Schema","type":"object"},"model_settings":{"description":"The settings for the AI model","discriminator":{"mapping":{"gemini-3-flash-preview":"#/$defs/Gemini3FlashSettings","gemini-3.1-flash-lite":"#/$defs/Gemini31FlashSettings","gemini-3.1-pro-preview":"#/$defs/Gemini31Settings","gemini-3.5-flash":"#/$defs/Gemini35FlashSettings","gpt-5-mini":"#/$defs/OpenAISettings","gpt-5-nano":"#/$defs/OpenAISettings","gpt-5.1":"#/$defs/OpenAISettings","gpt-5.2":"#/$defs/OpenAI52Settings","gpt-5.4":"#/$defs/OpenAI54Settings","gpt-5.4-mini":"#/$defs/OpenAI54Settings","gpt-5.4-nano":"#/$defs/OpenAI54Settings","gpt-5.5":"#/$defs/OpenAI55Settings","gpt-5.6-luna":"#/$defs/OpenAI56Settings","gpt-5.6-terra":"#/$defs/OpenAI56Settings"},"propertyName":"model"},"oneOf":[{"$ref":"#/$defs/Gemini3FlashSettings"},{"$ref":"#/$defs/Gemini31FlashSettings"},{"$ref":"#/$defs/Gemini31Settings"},{"$ref":"#/$defs/Gemini35FlashSettings"},{"$ref":"#/$defs/OpenAISettings"},{"$ref":"#/$defs/OpenAI52Settings"},{"$ref":"#/$defs/OpenAI54Settings"},{"$ref":"#/$defs/OpenAI55Settings"},{"$ref":"#/$defs/OpenAI56Settings"}],"title":"Model Settings"},"agents":{"description":"List of agent IDs to be used as tools.","items":{"enum":["action_board","agentic_catalog_sources","botify_config","get_credit_usage","google_trends","html_code_executor","html_code_executor_batch","html_fetch","html_grep","html_grep_batch","html_question","knowledge","list_annotations","perplexity","quality_control","screenshot","tables_create","tables_insert","tables_list","tables_load","tables_query","tables_schema","text_hash","tool_documentation","topics_extractor","web_search"]},"title":"Agents","type":"array"},"is_gzip":{"default":false,"description":"If True, the user_prompt is expected to be base64-encoded and gzip-compressed. The agent will decode base64, then decompress gzip, and use the resulting UTF-8 string as the prompt. Enable this if your prompt is transmitted in this format, regardless of the processing mode (batch or not). This can be used to reduce payload size in any context.","title":"Is Gzip","type":"boolean"},"toon_tool_results":{"default":false,"description":"Serialize agent tool results as TOON instead of JSON","title":"Toon Tool Results","type":"boolean"}},"required":["structured_output_json_schema","model_settings"],"$defs":{"Gemini31FlashSettings":{"description":"Settings specific to Gemini 3.1 Flash model","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"model":{"const":"gemini-3.1-flash-lite","description":"The model to use for the Gemini model","title":"Model","type":"string"},"service_tier":{"anyOf":[{"enum":["default","flex","flex_only"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for Google Models: 'default', 'flex', or 'flex_only'.","title":"Service Tier"},"thinking_level":{"anyOf":[{"enum":["minimal","low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Thinking level: 'minimal', 'low', 'medium', or 'high'. Controls the depth of reasoning.","title":"Thinking Level"}},"required":["model"],"title":"Gemini31FlashSettings","type":"object"},"Gemini31Settings":{"description":"Settings specific to Gemini 3.1 models","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"model":{"const":"gemini-3.1-pro-preview","description":"The model to use for the Gemini model","title":"Model","type":"string"},"service_tier":{"anyOf":[{"enum":["default","flex","flex_only"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for Google Models: 'default', 'flex', or 'flex_only'.","title":"Service Tier"},"thinking_level":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Thinking level: 'low', 'medium', or 'high'. Controls the depth of reasoning.","title":"Thinking Level"}},"required":["model"],"title":"Gemini31Settings","type":"object"},"Gemini35FlashSettings":{"description":"Settings specific to Gemini 3.5 Flash model","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"model":{"const":"gemini-3.5-flash","description":"The model to use for the Gemini model","title":"Model","type":"string"},"service_tier":{"anyOf":[{"enum":["default","flex","flex_only"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for Google Models: 'default', 'flex', or 'flex_only'.","title":"Service Tier"},"thinking_level":{"anyOf":[{"enum":["minimal","low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Thinking level: 'minimal', 'low', 'medium', or 'high'. Controls the depth of reasoning.","title":"Thinking Level"}},"required":["model"],"title":"Gemini35FlashSettings","type":"object"},"Gemini3FlashSettings":{"description":"Settings specific to Gemini 3 Flash model","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"model":{"const":"gemini-3-flash-preview","description":"The model to use for the Gemini model","title":"Model","type":"string"},"service_tier":{"anyOf":[{"enum":["default","flex","flex_only"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for Google Models: 'default', 'flex', or 'flex_only'.","title":"Service Tier"},"thinking_level":{"anyOf":[{"enum":["minimal","low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Thinking level: 'minimal', 'low', 'medium', or 'high'. Controls the depth of reasoning.","title":"Thinking Level"}},"required":["model"],"title":"Gemini3FlashSettings","type":"object"},"OpenAI52Settings":{"description":"Settings specific to OpenAI 5.2 models","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"verbosity":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Text verbosity level: 'low', 'medium', or 'high'. Controls how concise or verbose the model's text response is.","title":"Verbosity"},"service_tier":{"anyOf":[{"enum":["default","flex","priority"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for OpenAI API: 'default', 'flex', or 'priority'.","title":"Service Tier"},"model":{"const":"gpt-5.2","description":"The model to use for the OpenAI model","title":"Model","type":"string"},"reasoning_effort":{"anyOf":[{"enum":["low","medium","high","xhigh"],"type":"string"},{"type":"null"}],"default":"high","description":"Reasoning effort level: 'low', 'medium', 'high', or 'xhigh'. Controls the depth of reasoning for reasoning models.","title":"Reasoning Effort"}},"required":["model"],"title":"OpenAI52Settings","type":"object"},"OpenAI54Settings":{"description":"Settings specific to OpenAI 5.4 models","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"verbosity":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Text verbosity level: 'low', 'medium', or 'high'. Controls how concise or verbose the model's text response is.","title":"Verbosity"},"service_tier":{"anyOf":[{"enum":["default","flex","priority"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for OpenAI API: 'default', 'flex', or 'priority'.","title":"Service Tier"},"model":{"description":"The model to use for the OpenAI model","enum":["gpt-5.4","gpt-5.4-mini","gpt-5.4-nano"],"title":"Model","type":"string"},"reasoning_effort":{"anyOf":[{"enum":["none","low","medium","high","xhigh"],"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning effort level: 'none', 'low', 'medium', 'high', or 'xhigh'. Controls the depth of reasoning for GPT-5.4 models.","title":"Reasoning Effort"}},"required":["model"],"title":"OpenAI54Settings","type":"object"},"OpenAI55Settings":{"description":"Settings specific to OpenAI 5.5 models","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"verbosity":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Text verbosity level: 'low', 'medium', or 'high'. Controls how concise or verbose the model's text response is.","title":"Verbosity"},"service_tier":{"anyOf":[{"enum":["default","flex","priority"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for OpenAI API: 'default', 'flex', or 'priority'.","title":"Service Tier"},"model":{"const":"gpt-5.5","description":"The model to use for the OpenAI model","title":"Model","type":"string"},"reasoning_effort":{"anyOf":[{"enum":["none","low","medium","high","xhigh"],"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning effort level: 'none', 'low', 'medium', 'high', or 'xhigh'. Controls the depth of reasoning for GPT-5.5 models.","title":"Reasoning Effort"}},"required":["model"],"title":"OpenAI55Settings","type":"object"},"OpenAI56Settings":{"description":"Settings specific to OpenAI 5.6 models","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"verbosity":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Text verbosity level: 'low', 'medium', or 'high'. Controls how concise or verbose the model's text response is.","title":"Verbosity"},"service_tier":{"anyOf":[{"enum":["default","flex","priority"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for OpenAI API: 'default', 'flex', or 'priority'.","title":"Service Tier"},"model":{"description":"The model to use for the OpenAI model","enum":["gpt-5.6-luna","gpt-5.6-terra"],"title":"Model","type":"string"},"reasoning_effort":{"anyOf":[{"enum":["none","low","medium","high","xhigh"],"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning effort level: 'none', 'low', 'medium', 'high', or 'xhigh'. Controls the depth of reasoning for GPT-5.6 models.","title":"Reasoning Effort"}},"required":["model"],"title":"OpenAI56Settings","type":"object"},"OpenAISettings":{"description":"Settings specific to OpenAI models","properties":{"temperature":{"default":0.3,"description":"The temperature for the AI model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"},"max_tokens":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"The maximum number of tokens for the AI model","title":"Max Tokens"},"service_tier_flex_fallback_to_default":{"default":false,"description":"If True and service_tier is 'flex'-like, fallback to 'default' tier on errors (429 rate limit, unsupported flex tier).","title":"Service Tier Flex Fallback To Default","type":"boolean"},"verbosity":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Text verbosity level: 'low', 'medium', or 'high'. Controls how concise or verbose the model's text response is.","title":"Verbosity"},"service_tier":{"anyOf":[{"enum":["default","flex","priority"],"type":"string"},{"type":"null"}],"default":null,"description":"Service tier for OpenAI API: 'default', 'flex', or 'priority'.","title":"Service Tier"},"model":{"description":"The model to use for the OpenAI model","enum":["gpt-5.1","gpt-5-mini","gpt-5-nano"],"title":"Model","type":"string"},"reasoning_effort":{"anyOf":[{"enum":["low","medium","high"],"type":"string"},{"type":"null"}],"default":null,"description":"Reasoning effort level: 'low', 'medium', or 'high'. Controls the depth of reasoning for reasoning models.","title":"Reasoning Effort"}},"required":["model"],"title":"OpenAISettings","type":"object"},"PrefeedCall":{"description":"A pre-call to an agent whose result is injected into the user prompt before the LLM runs.","properties":{"description":{"description":"Description of the prefeed result (used as context label in the prompt)","title":"Description","type":"string"},"agent":{"description":"Agent ID to call","title":"Agent","type":"string"},"item":{"additionalProperties":true,"description":"Item payload for the agent","title":"Item","type":"object"},"config":{"additionalProperties":true,"default":{},"description":"Optional config payload for the agent","title":"Config","type":"object"}},"required":["description","agent","item"],"title":"PrefeedCall","type":"object"}}},"item":{"type":"object","properties":{"prefeed":{"default":[],"description":"List of agent pre-calls whose results are injected into the user prompt before the LLM runs.","items":{"$ref":"#/$defs/PrefeedCall"},"title":"Prefeed","type":"array"},"user_prompt":{"description":"User prompt for the LLM","title":"User Prompt","type":"string"}},"required":["user_prompt"],"$defs":{"PrefeedCall":{"description":"A pre-call to an agent whose result is injected into the user prompt before the LLM runs.","properties":{"description":{"description":"Description of the prefeed result (used as context label in the prompt)","title":"Description","type":"string"},"agent":{"description":"Agent ID to call","title":"Agent","type":"string"},"item":{"additionalProperties":true,"description":"Item payload for the agent","title":"Item","type":"object"},"config":{"additionalProperties":true,"default":{},"description":"Optional config payload for the agent","title":"Config","type":"object"}},"required":["description","agent","item"],"title":"PrefeedCall","type":"object"}}},"response":{"description":"Output from AI text generation","properties":{"structured_output":{"additionalProperties":true,"description":"Structured output based on input configuration","title":"Structured Output","type":"object"}},"required":["structured_output"],"title":"LLMWrapperProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"batch_run","name":"Batch Run","alias":"BatchRun","aliases":[],"description_short":"Run any other tool over many records, from a list, a SQL query, a table or an uploaded CSV, and collect the results in a file or a table.","description_long":"Run one tool over many records at once.\n\n    This is the only way to fan a tool out: every other tool takes exactly one item.\n\n    Sources: `rows` (records in the call itself), `sql` (a BigQuery query),\n    `table` (a whole catalog table), `file` (a CSV/TSV uploaded at\n    https://app.botify.com/:organization/:project/o/storage/tmp, or the output of\n    a previous batch).\n\n    Small sources run immediately and return their results. Larger ones run as a\n    background job: you get a job_id to poll with batch_status, and the records\n    never enter this conversation.\n\n    The output is a temporary JSONL file whose URL is directly usable as the\n    `file` source of a next batch, which is how several tools are chained. Each\n    line is {row, item, response, error} -- the original row and mapped item are\n    both kept, so results stay attributable and source columns survive chaining.\n\n    Use tool_documentation on the target tool first: item_map has to match its\n    item schema. Use dry_run to check a mapping against real records before\n    paying for the whole source.\n    ","description_tool_prompt":"Run another tool over many records (a list, a SQL query, a table or an uploaded CSV) and write the results to a file or a table. Read the target tool's schema with tool_documentation before writing item_map, and use dry_run to validate it on a few records first.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"on_error":{"$ref":"#/$defs/OnError","default":"skip","description":"skip: record the failure and carry on. fail_job: stop the whole batch on the first failing record."},"chunk_size":{"default":50,"description":"Records sent to the tool at once.","maximum":500,"minimum":1,"title":"Chunk Size","type":"integer"},"inline_max_rows":{"default":10,"description":"Above this many records, the batch runs as a job.","maximum":100,"minimum":1,"title":"Inline Max Rows","type":"integer"}},"required":[],"$defs":{"OnError":{"enum":["skip","fail_job"],"type":"string"}}},"item":{"type":"object","properties":{"tool":{"description":"Id of the tool to run over every record. Use tool_documentation to read its item schema before writing item_map.","title":"Tool","type":"string"},"source":{"$ref":"#/$defs/SourceSpec","description":"Where the records come from."},"item_map":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Projection from a source record onto the tool's item, using {{row.<column>}} (ex: {\"url\": \"{{row.page_url}}\"}). Omit it when the records already have the tool's item shape.","title":"Item Map"},"sink":{"anyOf":[{"$ref":"#/$defs/SinkSpec"},{"type":"null"}],"default":null,"description":"Where results go. Defaults to a temporary gzipped JSONL file whose URL can be passed straight back as a file source."},"tool_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"The target tool's own config, shared by every record.","title":"Tool Config"},"dry_run":{"default":false,"description":"Run only the first 5 records and return them in full, launching nothing. Use it to check a mapping or a prompt against a large source in one turn.","title":"Dry Run","type":"boolean"}},"required":["tool","source"],"$defs":{"FileFormat":{"enum":["auto","jsonl","csv","tsv"],"type":"string"},"FileSink":{"description":"A temporary JSONL file in project storage, readable back as a source.","properties":{"type":{"const":"file","default":"file","title":"Type","type":"string"},"gzip":{"default":true,"description":"Compress the output.","title":"Gzip","type":"boolean"}},"title":"FileSink","type":"object"},"FileSource":{"description":"Rows from an uploaded CSV/TSV, or from a previous batch's JSONL output.","properties":{"type":{"const":"file","default":"file","title":"Type","type":"string"},"url":{"description":"File URL. Upload a local file at https://app.botify.com/:organization/:project/o/storage/tmp and pass the returned URL, or reuse the sink URL of a previous batch. Public HTTP(S) URLs are accepted too. CSV, TSV and JSONL, gzip allowed.","title":"Url","type":"string"},"format":{"$ref":"#/$defs/FileFormat","default":"auto","description":"File format, or auto-detect."}},"required":["url"],"title":"FileSource","type":"object"},"RowsSource":{"description":"Records passed directly in the call.","properties":{"type":{"const":"rows","default":"rows","title":"Type","type":"string"},"rows":{"description":"The records to process, one object per call.","items":{"additionalProperties":true,"type":"object"},"minItems":1,"title":"Rows","type":"array"}},"required":["rows"],"title":"RowsSource","type":"object"},"SinkSpec":{"discriminator":{"mapping":{"file":"#/$defs/FileSink","table":"#/$defs/TableSink"},"propertyName":"type"},"oneOf":[{"$ref":"#/$defs/FileSink"},{"$ref":"#/$defs/TableSink"}]},"SourceSpec":{"discriminator":{"mapping":{"file":"#/$defs/FileSource","rows":"#/$defs/RowsSource","sql":"#/$defs/SqlSource","table":"#/$defs/TableSource"},"propertyName":"type"},"oneOf":[{"$ref":"#/$defs/RowsSource"},{"$ref":"#/$defs/SqlSource"},{"$ref":"#/$defs/TableSource"},{"$ref":"#/$defs/FileSource"}]},"SqlSource":{"description":"Rows from a BigQuery query over the project's catalog.","properties":{"type":{"const":"sql","default":"sql","title":"Type","type":"string"},"query":{"description":"BigQuery Standard SQL over catalog tables. Prefix every table with \"catalog.\" (ex: catalog.crawl_pages_20251201). Same access as tables_query.","title":"Query","type":"string"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Stop after this many rows.","title":"Limit"}},"required":["query"],"title":"SqlSource","type":"object"},"TableSink":{"description":"A table in the project's editable catalog.","properties":{"type":{"const":"table","default":"table","title":"Type","type":"string"},"table":{"description":"Destination table in the catalog.","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,1023}$","title":"Table","type":"string"},"row_map":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Column projection, using {{item.<field>}}, {{response.<field>}}, {{error}} and {{row.<column>}}. Defaults to `row`, `item`, `response` and `error` columns.","title":"Row Map"},"replace_existing":{"default":false,"description":"Replace the table instead of appending to it.","title":"Replace Existing","type":"boolean"}},"required":["table"],"title":"TableSink","type":"object"},"TableSource":{"description":"Every row of one catalog table.","properties":{"type":{"const":"table","default":"table","title":"Type","type":"string"},"table":{"description":"Table name, with or without the \"catalog.\" prefix.","pattern":"^(?:catalog\\.)?[A-Za-z_][A-Za-z0-9_]*$","title":"Table","type":"string"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Stop after this many rows.","title":"Limit"}},"required":["table"],"title":"TableSource","type":"object"}}},"response":{"$defs":{"SinkPointer":{"description":"Where a batch's output landed.","properties":{"type":{"enum":["file","table"],"title":"Type","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Sink file URL, reusable as the source of a next batch.","title":"Url"},"table":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Destination table.","title":"Table"},"rows_written":{"default":0,"description":"Records written.","title":"Rows Written","type":"integer"}},"required":["type"],"title":"SinkPointer","type":"object"}},"description":"What a batch returns, whichever path it took.","properties":{"mode":{"description":"dry_run and inline carry their results; job carries a job_id to poll with batch_status.","enum":["dry_run","inline","job"],"title":"Mode","type":"string"},"tool":{"description":"The tool that was run.","title":"Tool","type":"string"},"results":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"default":null,"description":"One {item, response, error} object per record.","title":"Results"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Poll it with batch_status.","title":"Job Id"},"execution_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Underlying Cloud Run execution.","title":"Execution Id"},"rows_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Records the batch will process.","title":"Rows Total"},"rows_ok":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Records that succeeded.","title":"Rows Ok"},"rows_error":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Records that failed.","title":"Rows Error"},"estimated_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Credits the batch is expected to cost.","title":"Estimated Credits"},"sink":{"anyOf":[{"$ref":"#/$defs/SinkPointer"},{"type":"null"}],"default":null,"description":"Where the output landed."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"One line about the outcome.","title":"Message"}},"required":["mode","tool"],"title":"BatchRunResult","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"botify_config","name":"Botify Config","alias":"BotifyConfig","aliases":[],"description_short":"Get Botify product configurations (SpeedWorkers, PageWorkers, Botify Core)","description_long":"\n    Retrieve configuration information for Botify products.\n    \n    Supports:\n    - SpeedWorkers: Get beam domain, hosts, production version, crawl stats, and interceptor configs\n    - PageWorkers: Get modules status and deployment information\n    - Botify Core: Get project configuration including URL, timezone, allowed domains for SiteCrawler, Configured analytics providers (Google Analytics, Adobe Analytics..), Google Search Console properties...\n    \n    Multiple products can be requested in a single call.\n    ","description_tool_prompt":"\n    Retrieve configuration information for Botify products.\n    \n    Supports:\n    - SpeedWorkers: Get beam domain, hosts, production version, crawl stats, and interceptor configs\n    - PageWorkers: Get modules status and deployment information\n    - Botify Core: Get project configuration including URL, timezone, allowed domains for SiteCrawler, Configured analytics providers (Google Analytics, Adobe Analytics..), Google Search Console properties...\n    \n    Multiple products can be requested in a single call.\n    ","source":"Botify Activation API","conversation_examples":[],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"products":{"description":"List of products to get configuration for. Can be 'speedworkers', 'pageworkers', 'botify_core', or any combination.","items":{"enum":["speedworkers","pageworkers","botify_core"],"type":"string"},"title":"Products","type":"array"}},"required":["products"]},"response":{"properties":{"speedworkers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"SpeedWorkers configuration if requested","title":"Speedworkers"},"pageworkers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"PageWorkers configuration if requested","title":"Pageworkers"},"botify_core":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Botify Core project configuration if requested","title":"Botify Core"}},"title":"BotifyConfigProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"botify_data","name":"Botify Data","alias":"BotifyData","aliases":[],"description_short":"Query your Botify data.","description_long":"Query your Botify data.","description_tool_prompt":"Get data from the Botify Datamodel (Crawl Data, Search Console Data, Sitemaps, Logs, Core Web Vitals, etc). Supports multiple time periods in a single query for comparison over time. Always use one query for date range comparisons (ideally two periods), not separate queries. IMPORTANT: When the user specifies a data source (crawl, search_console, logs), always preserve it explicitly in the query.Will internally translate to a SQL query, please give one question at a time.","source":"Botify","conversation_examples":["List me indexable URLs filtered on product pages","Give me average links per pagetype"],"tags":[],"available_in_chat":true,"available_in_deepthink":false,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{"run_query":{"default":true,"description":"Whether to run the query","title":"Run Query","type":"boolean"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"Human readable query to get data from (ex: indexable URLs by depth, avg outlinks by pagetype, impressions by country last month, etc)","title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"BQLMetadata":{"properties":{"fields":{"items":{"$ref":"#/$defs/BQLResultField"},"title":"Fields","type":"array"},"is_bql_v2":{"default":true,"title":"Is Bql V2","type":"boolean"}},"required":["fields"],"title":"BQLMetadata","type":"object"},"BQLResultField":{"properties":{"kind":{"enum":["dimension","metric"],"title":"Kind","type":"string"},"name":{"title":"Name","type":"string"},"type":{"title":"Type","type":"string"},"subtype":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Subtype"},"metadata":{"$ref":"#/$defs/FieldMetadata"},"multiple":{"title":"Multiple","type":"boolean"}},"required":["kind","name","type","metadata","multiple"],"title":"BQLResultField","type":"object"},"FieldMetadata":{"properties":{"period_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Period Comment"}},"title":"FieldMetadata","type":"object"}},"properties":{"bql_query":{"additionalProperties":true,"description":"Generated BQL query","title":"Bql Query","type":"object"},"results":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"description":"Results of the BQL query","title":"Results"},"metadata":{"$ref":"#/$defs/BQLMetadata","description":"Metadata of the BQL query"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Query requested by the user","title":"Title"}},"required":["bql_query","results","metadata"],"title":"BQLProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":true},{"id":"calculator","name":"Calculator","alias":"Calculator","aliases":[],"description_short":"Perform basic arithmetic operations.","description_long":"Perform basic arithmetic operations (add, subtract, multiply, divide).","description_tool_prompt":"Perform basic arithmetic operations (add, subtract, multiply, divide).","source":null,"conversation_examples":["5 + 10 * 2 / 4"],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"expression":{"description":"Arithmetic expression to evaluate","title":"Expression","type":"string"}},"required":["expression"]},"response":{"properties":{"result":{"anyOf":[{"type":"integer"},{"type":"number"}],"description":"Arithmetic expression evaluation result","title":"Result"}},"required":["result"],"title":"CalculatorProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"chatgpt_websearch","name":"Chatgpt Websearch","alias":"ChatgptWebsearch","aliases":[],"description_short":"Call ChatGPT.com using web search tool to get real-time responses and information.","description_long":"\n    Use ChatGPT's web interface to search for information and get responses. This agent\n    interacts with ChatGPT's web interface and retrieve answers\n    to queries in real-time.\n\n    This agent can help you:\n    - Get answers to questions from ChatGPT's web interface\n    - Access ChatGPT's knowledge and capabilities through web scraping\n    - Get location-specific results by specifying a country code\n    ","description_tool_prompt":"\n    Use ChatGPT's web interface to search for information and get responses. This agent\n    interacts with ChatGPT's web interface and retrieve answers\n    to queries in real-time.\n\n    This agent can help you:\n    - Get answers to questions from ChatGPT's web interface\n    - Access ChatGPT's knowledge and capabilities through web scraping\n    - Get location-specific results by specifying a country code\n    ","source":null,"conversation_examples":["What are the best hotels in New York?","Explain quantum computing in simple terms","What's the weather like in Paris today?"],"tags":["web search"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"country":{"default":"","description":"ISO 3166-1 alpha-2 country code for location-based results (e.g., 'US', 'FR')","title":"Country","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to send to ChatGPT","minLength":1,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"Citation":{"description":"A source cited in the response with metadata.","properties":{"url":{"title":"Url","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Icon"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Domain"},"cited":{"title":"Cited","type":"boolean"}},"required":["url","cited"],"title":"Citation","type":"object"},"Link":{"description":"An inline citation link extracted from the answer.","properties":{"url":{"title":"Url","type":"string"},"text":{"title":"Text","type":"string"},"position":{"title":"Position","type":"integer"}},"required":["url","text","position"],"title":"Link","type":"object"},"SearchSource":{"description":"A search result source with snippet and ranking info.","properties":{"url":{"title":"Url","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Snippet"},"rank":{"title":"Rank","type":"integer"},"date_published":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date Published"}},"required":["url","rank"],"title":"SearchSource","type":"object"},"Shopping":{"description":"A shopping result item.","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Image"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Link"},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tag"},"all_images":{"default":[],"items":{"type":"string"},"title":"All Images","type":"array"},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Rating"},"purchasing_options":{"default":[],"items":{"$ref":"#/$defs/ShoppingPurchasingOption"},"title":"Purchasing Options","type":"array"},"reviews":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Reviews"},"why_you_might_like_this":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Why You Might Like This"},"what_people_are_saying":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"What People Are Saying"},"merchants":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Free-form merchant label as reported by the scraper (e.g. 'Dunelm + others'). Used to render a fallback merchant name when no direct seller URL is available.","title":"Merchants"}},"title":"Shopping","type":"object"},"ShoppingPurchasingOption":{"description":"A purchasing option for a shopping item.","properties":{"price":{"title":"Price","type":"number"},"currency":{"title":"Currency","type":"string"},"website":{"title":"Website","type":"string"},"buy_link":{"title":"Buy Link","type":"string"}},"required":["price","currency","website","buy_link"],"title":"ShoppingPurchasingOption","type":"object"}},"description":"Unified output item for ChatGPT web search agents.","properties":{"query":{"description":"The search query that was executed","title":"Query","type":"string"},"answer_text_markdown":{"description":"The markdown response from ChatGPT","title":"Answer Text Markdown","type":"string"},"links":{"description":"Inline citation links from the response","items":{"$ref":"#/$defs/Link"},"title":"Links","type":"array"},"citations":{"description":"Sources cited in the response","items":{"$ref":"#/$defs/Citation"},"title":"Citations","type":"array"},"shopping":{"description":"Shopping results if any","items":{"$ref":"#/$defs/Shopping"},"title":"Shopping","type":"array"},"shopping_visible":{"description":"Whether shopping results are visible","title":"Shopping Visible","type":"boolean"},"web_search_triggered":{"description":"Whether the answer shows evidence of a web search (citations, search sources, search queries, inline citation links, or shopping items)","title":"Web Search Triggered","type":"boolean"},"search_sources":{"description":"Search result sources with snippets","items":{"$ref":"#/$defs/SearchSource"},"title":"Search Sources","type":"array"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Name / version of the model used by ChatGPT (e.g., 'gpt-4o')","title":"Model"},"search_queries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Web search queries used during processing","title":"Search Queries"}},"required":["query","answer_text_markdown","links","citations","shopping","shopping_visible","web_search_triggered","search_sources"],"title":"ChatGPTWebSearchProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"embed","name":"Embed","alias":"Embed","aliases":[],"description_short":"Generate embeddings from text","description_long":"Generate embeddings from text input. Currently supports text-multilingual-embedding-002 model. Returns a vector representation of the input text that can be used for semantic search, similarity comparison, and other machine learning tasks.","description_tool_prompt":"Generate embeddings from text input. Currently supports text-multilingual-embedding-002 model. Returns a vector representation of the input text that can be used for semantic search, similarity comparison, and other machine learning tasks.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"model":{"const":"text-multilingual-embedding-002","default":"text-multilingual-embedding-002","description":"The embedding model to use","title":"Model","type":"string"}},"required":[]},"item":{"type":"object","properties":{"text":{"description":"The text to generate an embedding for","title":"Text","type":"string"}},"required":["text"]},"response":{"properties":{"embedding":{"description":"The embedding vector as a list of floats","items":{"type":"number"},"title":"Embedding","type":"array"}},"required":["embedding"],"title":"EmbedProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"get_credit_usage","name":"Credit Consumption","alias":"CreditConsumption","aliases":[],"description_short":"Report how much of this project's agent credit allowance is used, daily and monthly.","description_long":"\n    Report how far through its agent credit allowance the project is, over both\n    windows that carry one: the day and the calendar month.\n\n    The allowance is a project-wide pool shared by every member, not a personal\n    one, and passing it warns rather than blocks: calls keep being served up to a\n    higher ceiling. Reading consumption through this agent is itself free and\n    consumes no credits.\n    ","description_tool_prompt":"Report how much of its Botify agent credit allowance the current project has consumed, both for today and for the current calendar month, as a percentage per window with that window's status and reset time. Use when the user asks how much of their allowance or envelope they have used, how many credits they have left, when their credits reset, or whether they are close to or over their limit. Answers in percentages only: the number of credits used, left, or allowed is not reported and must not be inferred or estimated from the percentage. This agent is free and consumes no credits.","source":"Botify","conversation_examples":["How many Botify credits do we have left this month?","How much of our credit allowance have we used today?","Are we close to our agent credit limit?","When do our credits reset?"],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{},"required":[]},"response":{"$defs":{"CreditWindow":{"description":"How far through its allowance one window is, and where that stands.","properties":{"usage_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Share of the window's allowance that has been consumed, above 100 once the allowance is passed. Null when there is no allowance to take a share of -- not a statement that calls are blocked","title":"Usage Percent"},"status":{"description":"Where this window's consumption stands, and the only field that says whether calls are still being served: they are refused on ``blocked`` alone","enum":["healthy","warning","over","blocked"],"title":"Status","type":"string"},"resets_at":{"description":"When the window rolls over and consumption returns to 0","format":"date-time","title":"Resets At","type":"string"}},"required":["usage_percent","status","resets_at"],"title":"CreditWindow","type":"object"}},"properties":{"credit_status":{"description":"Where the project stands overall: the worse of the daily and the monthly credit status","enum":["healthy","warning","over","blocked"],"title":"Credit Status","type":"string"},"daily":{"$ref":"#/$defs/CreditWindow","description":"Information about the daily allowance usage"},"monthly":{"$ref":"#/$defs/CreditWindow","description":"Information about the monthly allowance usage"},"summary":{"description":"A paragraph summarizing where usage sits expressed in natural language","title":"Summary","type":"string"}},"required":["credit_status","daily","monthly","summary"],"title":"GetCreditUsageProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_ads_keyword_suggestions","name":"Google Ads Keyword Suggestions","alias":"GoogleAdsKeywordSuggestions","aliases":["keywords_suggestions_google_ads_planner_raw"],"description_short":"Get keyword suggestions from Google Ads Keywords Planner.","description_long":"\n    Discover a comprehensive list of related keywords based on a seed keyword, including synonyms, variations, and related topics from Google Ads data.\n    This tool identifies valuable keyword opportunities for your SEO strategy and includes detailed metrics for each keyword such as search volume, CPC, competition level, and search intent.\n    This facilitates content planning, PPC campaigns, and identifying new market opportunities in your niche.\n    ","description_tool_prompt":"\n    Discover a comprehensive list of related keywords based on a seed keyword, including synonyms, variations, and related topics from Google Ads data.\n    This tool identifies valuable keyword opportunities for your SEO strategy and includes detailed metrics for each keyword such as search volume, CPC, competition level, and search intent.\n    This facilitates content planning, PPC campaigns, and identifying new market opportunities in your niche.\n    ","source":"Google Ads Planner","conversation_examples":[],"tags":["keywords","google"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"keywords":{"description":"List of seed keywords","items":{"type":"string"},"maxItems":20,"title":"Keywords","type":"array"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request, will translate to location ID","examples":["Paris, FR"],"title":"Location Request"}},"required":["keywords"]},"response":{"$defs":{"SearchLocation":{"properties":{"code":{"title":"Code","type":"integer"},"name":{"title":"Name","type":"string"},"lang":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Lang"}},"required":["code","name"],"title":"SearchLocation","type":"object"}},"properties":{"location":{"$ref":"#/$defs/SearchLocation"},"results":{"items":{"additionalProperties":true,"type":"object"},"title":"Results","type":"array"}},"required":["location","results"],"title":"GoogleAdsKeywordSuggestionsProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_ads_search_volume","name":"Google Ads Search Volume","alias":"GoogleAdsSearchVolume","aliases":[],"description_short":"Fetches Google Ads search volume data for keywords.","description_long":"\n    This agent retrieves Google Ads search volume data for specified keywords.\n    \n    It provides information including:\n    - Monthly average search volume\n    - Competition level and index\n    - Cost per click (CPC)\n    - Top of page bid estimates\n    - Monthly search volume history\n    - Location and language targeting data\n    \n    The agent supports location and language targeting to get region-specific search volume data.\n    ","description_tool_prompt":"\n    This agent retrieves Google Ads search volume data for specified keywords.\n    \n    It provides information including:\n    - Monthly average search volume\n    - Competition level and index\n    - Cost per click (CPC)\n    - Top of page bid estimates\n    - Monthly search volume history\n    - Location and language targeting data\n    \n    The agent supports location and language targeting to get region-specific search volume data.\n    ","source":"Google Ads Search Volume API","conversation_examples":["Get search volume for 'digital marketing'","What's the search volume for 'python programming' in the US?","Show me competition data for 'e-commerce platform'"],"tags":["keywords","competitive analysis"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The keyword to analyze. Limited to 80 characters.","maxLength":80,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"MonthlySearchData":{"description":"Monthly search volume data for a keyword.","properties":{"year":{"title":"Year","type":"integer"},"month":{"title":"Month","type":"integer"},"search_volume":{"title":"Search Volume","type":"integer"}},"required":["year","month","search_volume"],"title":"MonthlySearchData","type":"object"}},"description":"Processed item containing Google Ads search volume data.","properties":{"keyword":{"description":"The keyword that was searched","title":"Keyword","type":"string"},"search_volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Monthly average search volume","title":"Search Volume"},"competition":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Competition level (HIGH, MEDIUM, LOW)","title":"Competition"},"competition_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Competition index (0-100)","title":"Competition Index"},"cpc":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Cost per click","title":"Cpc"},"low_top_of_page_bid":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum bid for top of page","title":"Low Top Of Page Bid"},"high_top_of_page_bid":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum bid for top of page","title":"High Top Of Page Bid"},"monthly_searches":{"anyOf":[{"items":{"$ref":"#/$defs/MonthlySearchData"},"type":"array"},{"type":"null"}],"description":"Monthly search volume data","title":"Monthly Searches"},"location_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Location code used for search","title":"Location Code"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Language code used for search","title":"Language Code"},"search_partners":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether search partners data is included","title":"Search Partners"}},"required":["keyword","search_volume","competition","competition_index","cpc","low_top_of_page_bid","high_top_of_page_bid","monthly_searches","location_code","language_code","search_partners"],"title":"GoogleAdsSearchVolumeProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_ai_mode","name":"Google AI Mode","alias":"GoogleAIMode","aliases":[],"description_short":"Query Google AI Mode to get AI-generated search results and insights.","description_long":"\n        Retrieve AI-powered search results from Google AI Mode.\n        Get comprehensive AI-generated answers, featured snippets, and search insights for any query.\n    ","description_tool_prompt":"Query Google AI Mode to get AI-generated search results, featured snippets, and comprehensive answers for any search query.","source":"Google","conversation_examples":["What does Google AI Mode say about 'best pizza in New York'?","What are the latest trends in AI according to Google AI Mode?","What does Google AI Mode recommend for 'travel planning tips'?"],"tags":["google","web search"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","maxLength":700,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"GooglAiOverviewReference":{"properties":{"type":{"title":"Type","type":"string"},"source":{"title":"Source","type":"string"},"domain":{"title":"Domain","type":"string"},"url":{"title":"Url","type":"string"},"title":{"title":"Title","type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Text"}},"required":["type","source","domain","url","title"],"title":"GooglAiOverviewReference","type":"object"},"GoogleAiModeResults":{"properties":{"type":{"const":"ai_mode","default":"ai_mode","title":"Type","type":"string"},"rank_group":{"title":"Rank Group","type":"integer"},"rank_absolute":{"title":"Rank Absolute","type":"integer"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markdown"},"items":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/$defs/GoogleAiOverviewElement"},{"additionalProperties":true,"type":"object"}]},"type":"array"},{"type":"null"}],"default":null,"title":"Items"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Name / version of the model used","title":"Model"}},"required":["rank_group","rank_absolute","markdown"],"title":"GoogleAiModeResults","type":"object"},"GoogleAiOverviewElement":{"properties":{"type":{"title":"Type","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Text"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"},"links":{"anyOf":[{"items":{"$ref":"#/$defs/GoogleAiOverviewLinkElement"},"type":"array"},{"type":"null"}],"default":null,"title":"Links"},"images":{"anyOf":[{"items":{"$ref":"#/$defs/GoogleAiOverviewImageElement"},"type":"array"},{"type":"null"}],"default":null,"title":"Images"},"references":{"anyOf":[{"items":{"$ref":"#/$defs/GooglAiOverviewReference"},"type":"array"},{"type":"null"}],"default":null,"title":"References"}},"required":["type"],"title":"GoogleAiOverviewElement","type":"object"},"GoogleAiOverviewImageElement":{"properties":{"type":{"title":"Type","type":"string"},"alt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Alt"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Url"},"image_url":{"title":"Image Url","type":"string"}},"required":["type","image_url"],"title":"GoogleAiOverviewImageElement","type":"object"},"GoogleAiOverviewLinkElement":{"properties":{"type":{"title":"Type","type":"string"},"title":{"title":"Title","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Url"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Domain"}},"required":["type","title"],"title":"GoogleAiOverviewLinkElement","type":"object"}},"properties":{"query":{"description":"The original search query","title":"Query","type":"string"},"location_name":{"description":"The location used for the search, if any","title":"Location Name","type":"string"},"results":{"$ref":"#/$defs/GoogleAiModeResults","description":"The AI-generated search results"}},"required":["query","location_name","results"],"title":"GoogleAiModeProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"google_ai_overview","name":"Google Ai Overview","alias":"GoogleAiOverview","aliases":[],"description_short":"Query Google AI Overview to get an AI-generated summary from a query.","description_long":"Fetch the AI-powered summary from Google AI Overview, a snapshot of key information about a topic or question with links.","description_tool_prompt":"Fetch the AI-powered summary from Google AI Overview, a snapshot of key information about a topic or question with links.","source":"Google","conversation_examples":["What does Google AI Mode say about 'best pizza in New York'?","What are the latest trends in AI according to Google AI Mode?","What does Google AI Mode recommend for 'travel planning tips'?"],"tags":["google","web search"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","maxLength":700,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"GooglAiOverviewReference":{"properties":{"type":{"title":"Type","type":"string"},"source":{"title":"Source","type":"string"},"domain":{"title":"Domain","type":"string"},"url":{"title":"Url","type":"string"},"title":{"title":"Title","type":"string"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Text"}},"required":["type","source","domain","url","title"],"title":"GooglAiOverviewReference","type":"object"},"GoogleAiOverviewElement":{"properties":{"type":{"title":"Type","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Text"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"},"links":{"anyOf":[{"items":{"$ref":"#/$defs/GoogleAiOverviewLinkElement"},"type":"array"},{"type":"null"}],"default":null,"title":"Links"},"images":{"anyOf":[{"items":{"$ref":"#/$defs/GoogleAiOverviewImageElement"},"type":"array"},{"type":"null"}],"default":null,"title":"Images"},"references":{"anyOf":[{"items":{"$ref":"#/$defs/GooglAiOverviewReference"},"type":"array"},{"type":"null"}],"default":null,"title":"References"}},"required":["type"],"title":"GoogleAiOverviewElement","type":"object"},"GoogleAiOverviewImageElement":{"properties":{"type":{"title":"Type","type":"string"},"alt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Alt"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Url"},"image_url":{"title":"Image Url","type":"string"}},"required":["type","image_url"],"title":"GoogleAiOverviewImageElement","type":"object"},"GoogleAiOverviewLinkElement":{"properties":{"type":{"title":"Type","type":"string"},"title":{"title":"Title","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Url"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Domain"}},"required":["type","title"],"title":"GoogleAiOverviewLinkElement","type":"object"},"GoogleAiOverviewResults":{"properties":{"type":{"title":"Type","type":"string"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"},"items":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/$defs/GoogleAiOverviewElement"},{"additionalProperties":true,"type":"object"}]},"type":"array"},{"type":"null"}],"default":null,"title":"Items"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Name / version of the model used","title":"Model"}},"required":["type"],"title":"GoogleAiOverviewResults","type":"object"}},"properties":{"query":{"description":"The original search query","title":"Query","type":"string"},"location_name":{"description":"The location used for the search, if any","title":"Location Name","type":"string"},"results":{"$ref":"#/$defs/GoogleAiOverviewResults","description":"The AI-generated search results"}},"required":["query","location_name","results"],"title":"GoogleAiOverviewProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_gemini","name":"Google Gemini","alias":"GoogleGemini","aliases":[],"description_short":"Query Google Gemini to get AI-generated search results and insights.","description_long":"\n        Retrieve AI-powered search results from Google Gemini.\n        Get comprehensive AI-generated answers with structured text, tables,\n        and source citations for any query.\n    ","description_tool_prompt":"Query Google Gemini to get AI-generated search results, structured answers, and source citations for any search query.","source":"Gemini","conversation_examples":["What does Google Gemini say about 'best pizza in New York'?","What are the latest trends in AI according to Google Gemini?","What does Google Gemini recommend for 'travel planning tips'?"],"tags":["google","web search"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","maxLength":700,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"GeminiImageElement":{"description":"An image element inside a gemini_images item.","properties":{"type":{"title":"Type","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Url"},"alt":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Alt"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Image Url"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"}},"required":["type"],"title":"GeminiImageElement","type":"object"},"GeminiLLMScraperResult":{"description":"Result from the Gemini LLM scraper.","properties":{"keyword":{"title":"Keyword","type":"string"},"location_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Location Code"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Language Code"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Model"},"datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Datetime"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"},"sources":{"anyOf":[{"items":{"$ref":"#/$defs/GeminiSource"},"type":"array"},{"type":"null"}],"default":null,"title":"Sources"},"se_results_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Se Results Count"},"item_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Item Types"},"items_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Items Count"},"items":{"anyOf":[{"items":{"$ref":"#/$defs/GeminiResponseItem"},"type":"array"},{"type":"null"}],"default":null,"title":"Items"}},"required":["keyword"],"title":"GeminiLLMScraperResult","type":"object"},"GeminiResponseItem":{"additionalProperties":true,"description":"A response item from Gemini LLM Scraper.\n\nCan be of types: gemini_text, gemini_table, gemini_images.","properties":{"type":{"title":"Type","type":"string"},"rank_group":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Rank Group"},"rank_absolute":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Rank Absolute"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"},"original_text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Original Text"},"sources":{"anyOf":[{"items":{"$ref":"#/$defs/GeminiSource"},"type":"array"},{"type":"null"}],"default":null,"title":"Sources"},"table":{"anyOf":[{"$ref":"#/$defs/GeminiTable"},{"type":"null"}],"default":null},"items":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/$defs/GeminiImageElement"},{"additionalProperties":true,"type":"object"}]},"type":"array"},{"type":"null"}],"default":null,"title":"Items"}},"required":["type"],"title":"GeminiResponseItem","type":"object"},"GeminiSource":{"description":"A source cited by Gemini in its response.","properties":{"type":{"title":"Type","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Snippet"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Domain"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Url"},"thumbnail":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Thumbnail"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Source Name"},"publication_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Publication Date"},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Markdown"}},"required":["type"],"title":"GeminiSource","type":"object"},"GeminiTable":{"description":"A table structure in Gemini's response.","properties":{"table_header":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Table Header"},"table_content":{"anyOf":[{"items":{"items":{"type":"string"},"type":"array"},"type":"array"},{"type":"null"}],"default":null,"title":"Table Content"}},"title":"GeminiTable","type":"object"}},"properties":{"query":{"description":"The original search query","title":"Query","type":"string"},"location_name":{"description":"The location used for the search, if any","title":"Location Name","type":"string"},"results":{"$ref":"#/$defs/GeminiLLMScraperResult","description":"The Gemini search results"}},"required":["query","location_name","results"],"title":"GoogleGeminiProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"google_knowledge_graph","name":"Google Knowledge Graph","alias":"GoogleKnowledgeGraph","aliases":[],"description_short":"Search Google Knowledge Graph for entities about people, places, and things.","description_long":"Search the Google Knowledge Graph to find information about millions of real-world entities and their relationships, like people, places, organizations, and things.","description_tool_prompt":"\n    Search the Google Knowledge Graph to find information about real-world entities like people, places, organizations,\n    and things. The Knowledge Graph contains millions of entries that describe entities and their relationships.\n\n    This agent can help you:\n    - Find information about celebrities, historical figures, and public figures\n    - Get details about places, landmarks, and locations\n    - Discover information about organizations, companies, and institutions\n    - Learn about books, movies, music, and other cultural entities\n    - Find factual information about various topics and subjects\n    ","source":null,"conversation_examples":["What is the entity for the term: The Very Hungry Caterpillar?","What is the entity for the term: Taylor Swift?"],"tags":["google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"limit":{"default":10,"description":"Maximum number of entities to return (1-50)","maximum":50,"minimum":1,"title":"Result limit","type":"integer"},"types":{"description":"Filter results by entity types (e.g., Person, Place, Organization)","items":{"type":"string"},"title":"Entity Types","type":"array"},"languages":{"description":"Filter results by language codes (e.g., en, fr, es)","items":{"pattern":"^[a-z]{2}$","type":"string"},"title":"Languages","type":"array"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The entity or topic to search for in the Knowledge Graph","minLength":1,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"Entity":{"properties":{"name":{"title":"Name","type":"string"},"description":{"default":"","title":"Description","type":"string"},"types":{"items":{"type":"string"},"title":"Types","type":"array"},"result_score":{"default":0.0,"title":"Result Score","type":"number"},"url":{"default":"","title":"Url","type":"string"},"image":{"default":"","title":"Image","type":"string"},"detailed_description":{"default":"","title":"Detailed Description","type":"string"},"detailed_description_url":{"default":"","title":"Detailed Description Url","type":"string"}},"required":["name"],"title":"Entity","type":"object"}},"properties":{"query":{"description":"The search query that was executed","title":"Query","type":"string"},"entities":{"description":"List of found entities with their information","items":{"$ref":"#/$defs/Entity"},"title":"Entities","type":"array"},"total_count":{"description":"Total number of entities found","title":"Total Count","type":"integer"}},"required":["query","entities","total_count"],"title":"GoogleKnowledgeGraphProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_people_also_ask","name":"Google People Also Ask","alias":"GooglePeopleAlsoAsk","aliases":[],"description_short":"Retrieve Google 'People Also Ask' questions for a specific query.","description_long":"Retrieve the Google 'People Also Ask' questions for a specific query.","description_tool_prompt":"Retrieve the Google 'People Also Ask' questions for a specific query.","source":"Google","conversation_examples":["What are the 'People Also Ask' questions on Google for 'how to make pizza'?","What are the 'People Also Ask' questions on Google for 'best running shoes'?","What are the 'People Also Ask' questions on Google for 'climate change'?"],"tags":["keywords","google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","maxLength":700,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"PeopleAlsoAskItem":{"properties":{"question":{"title":"Question","type":"string"},"type":{"title":"Type","type":"string"}},"required":["question","type"],"title":"PeopleAlsoAskItem","type":"object"}},"properties":{"results":{"description":"List of People Also Ask questions with their details","items":{"$ref":"#/$defs/PeopleAlsoAskItem"},"title":"Results","type":"array"}},"required":["results"],"title":"GooglePeopleAlsoAskProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_people_also_search","name":"Google People Also Search","alias":"GooglePeopleAlsoSearch","aliases":[],"description_short":"Retrieve the Google 'People Also Search' questions for a specific query","description_long":"Retrieve the Google 'People Also Search' questions for a specific query","description_tool_prompt":"Retrieve the Google 'People Also Search' questions for a specific query","source":"Google","conversation_examples":["What are the 'People Also Search' queries on Google for 'iphone 15'?","What are the 'People Also Search' queries on Google for 'best running shoes'?","What are the 'People Also Search' queries on Google for 'climate change'?"],"tags":["keywords","google"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","maxLength":700,"title":"Query","type":"string"}},"required":["query"]},"response":{"properties":{"results":{"description":"List of People Also Search questions with their details","items":{"type":"string"},"title":"Results","type":"array"}},"required":["results"],"title":"GooglePeopleAlsoSearchProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_position_opportunities","name":"Google Position-based Click Opportunities","alias":"GooglePositionOpportunities","aliases":[],"description_short":"Analyze potential click gains from ranking position improvements.","description_long":"\n    Analyze potential click gains from improving search ranking positions for specific URLs or keywords.\n    \n    This agent uses historical Search Console data to calculate the expected additional clicks you could\n    gain by improving from your current position to better positions, broken down by device type\n    (mobile and desktop/tablet).\n    ","description_tool_prompt":"\n    Analyze potential click gains from improving search ranking positions for specific URLs or keywords.\n    \n    This agent uses historical Search Console data to calculate the expected additional clicks you could\n    gain by improving from your current position to better positions, broken down by device type\n    (mobile and desktop/tablet).\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"period":{"description":"Time period to analyze","enum":["last_7d","last_28d"],"title":"Period","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Specific URL to analyze (optional)","title":"Url"},"keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Specific keyword to analyze (optional)","title":"Keyword"}},"required":["period"]},"response":{"$defs":{"CTRDataPoint":{"properties":{"avg_position":{"description":"Average ranking position","title":"Avg Position","type":"integer"},"device":{"description":"Device type","title":"Device","type":"string"},"nb_urls":{"description":"Number of URLs","title":"Nb Urls","type":"integer"},"pct_urls_with_clicks":{"description":"Percentage of URLs with clicks","title":"Pct Urls With Clicks","type":"number"},"impressions":{"description":"Total impressions","title":"Impressions","type":"integer"},"clicks":{"description":"Total clicks","title":"Clicks","type":"integer"},"ctr_global":{"description":"Global CTR","title":"Ctr Global","type":"number"}},"required":["avg_position","device","nb_urls","pct_urls_with_clicks","impressions","clicks","ctr_global"],"title":"CTRDataPoint","type":"object"},"DeviceOpportunity":{"properties":{"position":{"description":"Target ranking position","title":"Position","type":"integer"},"additional_clicks":{"description":"Additional clicks expected at this position","title":"Additional Clicks","type":"number"},"target_ctr":{"description":"Expected CTR at target position (as %)","title":"Target Ctr","type":"number"},"current_ctr":{"description":"Current CTR (as %)","title":"Current Ctr","type":"number"}},"required":["position","additional_clicks","target_ctr","current_ctr"],"title":"DeviceOpportunity","type":"object"},"FilteredCTRMetrics":{"properties":{"impressions":{"title":"Impressions","type":"integer"},"clicks":{"title":"Clicks","type":"integer"},"ctr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ctr"},"avg_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Position"},"desktop_tablet_impressions":{"title":"Desktop Tablet Impressions","type":"integer"},"desktop_tablet_clicks":{"title":"Desktop Tablet Clicks","type":"integer"},"desktop_tablet_ctr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Desktop Tablet Ctr"},"desktop_tablet_avg_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Desktop Tablet Avg Position"},"mobile_impressions":{"title":"Mobile Impressions","type":"integer"},"mobile_clicks":{"title":"Mobile Clicks","type":"integer"},"mobile_ctr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mobile Ctr"},"mobile_avg_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mobile Avg Position"}},"required":["impressions","clicks","ctr","avg_position","desktop_tablet_impressions","desktop_tablet_clicks","desktop_tablet_ctr","desktop_tablet_avg_position","mobile_impressions","mobile_clicks","mobile_ctr","mobile_avg_position"],"title":"FilteredCTRMetrics","type":"object"},"OpportunitiesByDevice":{"properties":{"mobile":{"description":"Opportunities for mobile devices","items":{"$ref":"#/$defs/DeviceOpportunity"},"title":"Mobile","type":"array"},"desktop":{"description":"Opportunities for desktop devices","items":{"$ref":"#/$defs/DeviceOpportunity"},"title":"Desktop","type":"array"}},"required":["mobile","desktop"],"title":"OpportunitiesByDevice","type":"object"}},"properties":{"global_ctr_mobile":{"description":"Global CTR data for mobile devices by position","items":{"$ref":"#/$defs/CTRDataPoint"},"title":"Global Ctr Mobile","type":"array"},"global_ctr_desktop_and_tablet":{"description":"Global CTR data for desktop and tablet devices by position","items":{"$ref":"#/$defs/CTRDataPoint"},"title":"Global Ctr Desktop And Tablet","type":"array"},"ctr_for_filter":{"anyOf":[{"items":{"$ref":"#/$defs/FilteredCTRMetrics"},"type":"array"},{"type":"null"}],"description":"CTR metrics for the specific URL or keyword filter","title":"Ctr For Filter"},"opportunities":{"anyOf":[{"$ref":"#/$defs/OpportunitiesByDevice"},{"type":"null"}],"description":"Potential additional clicks by improving to each position"},"opportunities_explanations":{"description":"Explanation of what the opportunities data represents","title":"Opportunities Explanations","type":"string"}},"required":["global_ctr_mobile","global_ctr_desktop_and_tablet","ctr_for_filter","opportunities","opportunities_explanations"],"title":"GooglePositionOpportunitiesProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_search","name":"Google Search","alias":"GoogleSearch","aliases":[],"description_short":"Ask a question about Google Search results","description_long":"Get feature snippets (e.g., Google shopping, images, video, people also search/ask), blue links, and knowledge graphs from real-time Google results.","description_tool_prompt":"Get feature snippets (e.g., Google shopping, images, video, people also search/ask), blue links, and knowledge graphs from real-time Google results.","source":"Browser Fetching on Google Search","conversation_examples":["What are the main SERP features for 'how to make pizza'?","Who ranks in the top 3 for 'best running shoes'?","What questions appear in People Also Ask for 'climate change'?","Is there a knowledge graph for 'Albert Einstein'?","What shopping results appear for 'wireless headphones'?"],"tags":["keywords","web search","google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{"location_request":{"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request","type":"string"},"device":{"default":"mobile","description":"Device to use for search","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":["location_request"]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","title":"Query","type":"string"},"question":{"description":"What do you want to know about the search results?","title":"Question","type":"string"}},"required":["query","question"]},"response":{"$defs":{"GoogleSearchRawResults":{"properties":{"keyword":{"title":"Keyword","type":"string"},"type":{"title":"Type","type":"string"},"se_domain":{"title":"Se Domain","type":"string"},"location_code":{"title":"Location Code","type":"integer"},"language_code":{"title":"Language Code","type":"string"},"check_url":{"title":"Check Url","type":"string"},"datetime":{"title":"Datetime","type":"string"},"spell":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spell"},"item_types":{"items":{"type":"string"},"title":"Item Types","type":"array"},"se_results_count":{"title":"Se Results Count","type":"integer"},"items_count":{"title":"Items Count","type":"integer"},"items":{"items":{"additionalProperties":true,"type":"object"},"title":"Items","type":"array"}},"required":["keyword","type","se_domain","location_code","language_code","check_url","datetime","spell","item_types","se_results_count","items_count","items"],"title":"GoogleSearchRawResults","type":"object"}},"properties":{"answer":{"description":"The answer to the question","title":"Answer","type":"string"},"results":{"$ref":"#/$defs/GoogleSearchRawResults","description":"The SERP results used to generate the answer"}},"required":["answer","results"],"title":"GoogleSearchProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"google_serp","name":"Google SERP","alias":"GoogleSerp","aliases":["google_search_raw"],"description_short":"Fetch the Google SERP for a given query (returns all data)","description_long":"\n    Fetch the Google SERP for a given query (returns all data)\n    ","description_tool_prompt":"\n    Fetch the Google SERP for a given query (returns all data)\n    ","source":"Google","conversation_examples":[],"tags":["keywords","web search"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"},"limit":{"default":30,"description":"Limit the number of results (optional - defaults to 30)","title":"Limit","type":"integer"},"data_level":{"default":"main","description":"Should we return just main information (item_type (organic, shopping, knowledge_graph, people_also_ask, people_also_search...), title, description, rank), or all information (featured snippets, ratings, prices, refinement chips...)","enum":["main","all"],"title":"Data Level","type":"string"}},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","maxLength":700,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"GoogleSearchRawResults":{"properties":{"keyword":{"title":"Keyword","type":"string"},"type":{"title":"Type","type":"string"},"se_domain":{"title":"Se Domain","type":"string"},"location_code":{"title":"Location Code","type":"integer"},"language_code":{"title":"Language Code","type":"string"},"check_url":{"title":"Check Url","type":"string"},"datetime":{"title":"Datetime","type":"string"},"spell":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spell"},"item_types":{"items":{"type":"string"},"title":"Item Types","type":"array"},"se_results_count":{"title":"Se Results Count","type":"integer"},"items_count":{"title":"Items Count","type":"integer"},"items":{"items":{"additionalProperties":true,"type":"object"},"title":"Items","type":"array"}},"required":["keyword","type","se_domain","location_code","language_code","check_url","datetime","spell","item_types","se_results_count","items_count","items"],"title":"GoogleSearchRawResults","type":"object"}},"properties":{"results":{"$ref":"#/$defs/GoogleSearchRawResults","description":"The SERP results"},"location_name":{"description":"description of output2","title":"Location Name","type":"string"},"query":{"description":"The search query to analyze","title":"Query","type":"string"}},"required":["results","location_name","query"],"title":"GoogleSearchRawProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"google_trends","name":"Google Trends","alias":"GoogleTrends","aliases":[],"description_short":"Get Google Trends data for one or more keywords.","description_long":"Analyze search trend data to understand how interest in specific keywords has changed over time, compare keyword popularity, and discover seasonal trends.","description_tool_prompt":"Analyze search trend data to understand how interest in specific keywords has changed over time, compare keyword popularity, and discover seasonal trends.","source":"Browser Fetching on Google Trends","conversation_examples":["Compare the search trends for 'artificial intelligence' and 'machine learning' over the last year","What are the seasonal trends for 'winter boots'?","Show me the rising interest in 'sustainable fashion' in the US","Has interest in 'work from home' decreased since 2021?","Compare trends for 'iPhone' vs 'Samsung' during product launch months"],"tags":["keywords"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"keywords":{"description":"List of keywords to analyze (up to 5)","items":{"type":"string"},"maxItems":5,"title":"Keywords","type":"array"}},"required":["keywords"]},"response":{"properties":{"keywords":{"description":"List of keywords analyzed","items":{"type":"string"},"title":"Keywords","type":"array"},"date_from":{"description":"Start date of the trends data in YYYY-MM-DD format","title":"Date From","type":"string"},"date_to":{"description":"End date of the trends data in YYYY-MM-DD format","title":"Date To","type":"string"},"graph":{"anyOf":[{"additionalProperties":true,"description":"Graph data showing search interest over time","type":"object"},{"type":"null"}],"default":null,"title":"Graph"},"topics":{"anyOf":[{"additionalProperties":true,"description":"Topics data related to the keywords","type":"object"},{"type":"null"}],"default":null,"title":"Topics"},"queries":{"anyOf":[{"additionalProperties":true,"description":"Queries data related to the keywords","type":"object"},{"type":"null"}],"default":null,"title":"Queries"}},"required":["keywords","date_from","date_to"],"title":"GoogleTrendsProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":true},{"id":"google_url_inspection","name":"Google URL Inspection","alias":"GoogleURLInspection","aliases":[],"description_short":"Get Google URL Inspection data for a specific URL.","description_long":"Get information about Google's indexed version of a page from the URL Inspection Tool, including indexing problems encountered and structured data, video, linked AMP, and indexability details.","description_tool_prompt":"Get information about Google's indexed version of a page from the URL Inspection Tool, including indexing problems encountered and structured data, video, linked AMP, and indexability details.","source":"Google Search Console API","conversation_examples":["Run Google URL Inspection for https://www.example.org/p/5866-toothbrush?","Is https://www.example.org/p/5866-toothbrush indexed by Google?"],"tags":["google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"include_summary":{"default":true,"description":"When true, generate an LLM summary of the inspection; when false, summary is null.","title":"Include Summary","type":"boolean"}},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to inspect","title":"URL","type":"string"}},"required":["url"]},"response":{"properties":{"url":{"description":"The URL that was inspected","title":"Url","type":"string"},"inspection_result":{"additionalProperties":true,"description":"The result of the URL inspection","title":"Inspection Result","type":"object"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Summary of the URL inspection result; null when disabled","title":"Summary"}},"required":["url","inspection_result","summary"],"title":"GoogleURLInspectionProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"html_code_executor","name":"HTML Executor","alias":"HtmlCodeExecutor","aliases":[],"description_short":"Execute a JavaScript function on HTML from SiteCrawler crawls.","description_long":"\n    Execute custom JavaScript extraction functions on HTML content from SiteCrawler.\n\n    This agent is optimized for batch processing - when processing multiple URLs,\n    they are sent to javascript executor together for better performance.\n\n    The JavaScript function should be in the format 'function() { ... }' and has\n    access to a `document` object for DOM traversal (querySelector, querySelectorAll, etc.).\n\n    If no crawl is specified (analysis_slug in config), the last successful crawl is used.\n    Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp\n    are resolved from project storage and do not require a crawl.\n\n    Each input URL may carry a list of quality control expectations. When set,\n    the agent evaluates them against the extracted JSON result and reports, per\n    item, whether all expectations passed and the details of any failures.\n    ","description_tool_prompt":"\n    Execute a JavaScript function on HTML from a SiteCrawler crawl or a\n    temporary uploaded file.\n\n    The function must be written as `function() { ... }` and return\n    JSON-serializable data. A `document` object is pre-created for DOM queries.\n\n    For the full JavaScript API (Document, Element, helpers, runtime\n    differences vs a browser), call tool_documentation with\n    tool_name=\"html_code_executor\".\n\n    If no crawl is specified (analysis_slug), the last successful regular crawl\n    is used. Temporary uploaded URLs on\n    https://app.botify.com/:organization/:project/o/storage/tmp are resolved\n    from project storage and do not require a crawl.\n\n    Each input URL may carry quality control expectations evaluated against the\n    extracted JSON.\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"function":{"description":"JavaScript function to execute on the HTML. Should be in the format 'function() { ... }' and return the extracted data.","title":"JavaScript Function","type":"string"}},"required":["function"]},"item":{"type":"object","properties":{"url":{"description":"URL to execute the JavaScript function on. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.","title":"URL","type":"string"},"expectations":{"default":[],"description":"Quality control expectations the extracted result must satisfy. When provided, the agent evaluates them against the extracted JSON and reports any failures.","items":{"$ref":"#/$defs/Expectation"},"title":"Expectations","type":"array"}},"required":["url"],"$defs":{"ArrayItemMatch":{"description":"A sub-object pattern that at least one array item must match.\n\nThe mapping ``fields`` is keyed by the sub-object's attribute names\n(e.g. ``{\"review_text\": \"great\", \"review_rating\": 5}``). Keys not\nlisted here are not checked.\n\nFor convenience, a bare sub-object is accepted as a shorthand for\n``fields``: ``{\"name\": \"Année\", \"value\": \"1982\"}`` is normalised to\n``{\"fields\": {\"name\": \"Année\", \"value\": \"1982\"}}``. To match an array of\n*scalars* (e.g. a list of URLs), pass the scalar directly in\n``expected_array_items`` rather than an :class:`ArrayItemMatch`.","properties":{"fields":{"additionalProperties":true,"description":"Sub-object fields to match (subset, no exhaustivity required)","title":"Fields","type":"object"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Free-form note describing how to locate this item in the page. Never used by the evaluator — purely informational.","title":"Instructions"}},"title":"ArrayItemMatch","type":"object"},"Expectation":{"description":"An expectation about a single field of the extracted JSON.\n\nExactly one of ``expected_value`` (for scalar fields),\n``expected_array_items`` (for array-item patterns) or\n``expected_length`` (for the length of an array field) must be set. The\n``operator`` is only meaningful for scalar and length expectations.","properties":{"field":{"description":"Name of the extracted JSON field to check. Supports dotted paths for nested objects (e.g. ``dimensions.width``).","title":"Field","type":"string"},"operator":{"default":"equals","description":"Predicate applied between the actual value and ``expected_value`` (scalar expectations) or between the array length and ``expected_length`` (length expectations). Defaults to ``equals``. Length expectations support only ``equals`` / ``gt`` / ``gte`` / ``lt`` / ``lte``.","enum":["equals","contains","matches_regex","gt","gte","lt","lte"],"title":"Operator","type":"string"},"expected_value":{"anyOf":[{},{"type":"null"}],"default":null,"description":"Expected scalar value (set when the field is a scalar)","title":"Expected Value"},"expected_array_items":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/$defs/ArrayItemMatch"},{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"type":"array"},{"type":"null"}],"default":null,"description":"Patterns to match against array items (set when the field is an array). Each pattern is either a scalar — the array must contain an item equal to it (use this for arrays of strings or numbers, e.g. image URLs) — or a sub-object of fields, in which case at least one array item must match all the listed fields. For each pattern, at least one item must match.","title":"Expected Array Items"},"expected_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Expected number of items of an array field (set to assert on the array length). Combined with ``operator`` (equals / gt / gte / lt / lte).","title":"Expected Length"},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Free-form note describing how to locate this field on the page. Never used by the evaluator — purely informational.","title":"Instructions"}},"required":["field"],"title":"Expectation","type":"object"}}},"response":{"$defs":{"ExpectationFailure":{"description":"A single expectation that did not hold against the extracted JSON.","properties":{"attribute":{"description":"The (possibly dotted) field that failed","title":"Attribute","type":"string"},"expected":{"anyOf":[{},{"type":"null"}],"default":null,"description":"What was expected (scalar value or array patterns)","title":"Expected"},"result":{"anyOf":[{},{"type":"null"}],"default":null,"description":"The value actually extracted (None when absent/null)","title":"Result"},"message":{"description":"Human-readable error message","title":"Message","type":"string"}},"required":["attribute","message"],"title":"ExpectationFailure","type":"object"}},"description":"Output from HTML executor agent.","properties":{"url":{"description":"The URL that was processed","title":"Url","type":"string"},"crawl":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Crawl Slug from SiteCrawler","title":"Crawl"},"url_found":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Whether the URL was found in the crawl index","title":"Url Found"},"result":{"anyOf":[{},{"type":"null"}],"default":null,"description":"Result of executing the function on the HTML","title":"Result"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Error if function execution failed","title":"Error"},"quality_control_passed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True when every expectation holds against the extracted result, False when at least one fails, None when no expectations were provided.","title":"Quality Control Passed"},"quality_control_failures":{"default":[],"description":"One entry per failed expectation (empty when passed or when no expectations were provided).","items":{"$ref":"#/$defs/ExpectationFailure"},"title":"Quality Control Failures","type":"array"}},"required":["url"],"title":"HTMLExecutorProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"html_extract_images","name":"HTML Extract Images","alias":"HTMLExtractImages","aliases":[],"description_short":"Extract main images from a webpage with URLs and copyright info.","description_long":"\n    Extract main images from a webpage (excluding logos, icons, and decorative elements) to analyze visual content, build new web pages, and ensure proper image attribution.\n    This agent focuses on important content images and provides image URLs, titles, and copyright information, when available.\n    ","description_tool_prompt":"\n    Extract main images from a webpage (excluding logos, icons, and decorative elements) to analyze visual content, build new web pages, and ensure proper image attribution.\n    This agent focuses on important content images and provides image URLs, titles, and copyright information, when available.\n    ","source":"Page content","conversation_examples":["Extract images from https://www.example.com/p/my-product","Write an HTML page of Things to do in NYC. Ask @perplexity things to do in New York, and fetch images from the first 3 resources to enrich the page."],"tags":["content"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to extract images fro","title":"URL","type":"string"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"us","description":"The country code to use for the real-time fetch. 2 letters lowercase.","title":"Country Code"}},"required":["url"]},"response":{"$defs":{"HTMLExtractImage":{"properties":{"image_url":{"description":"Image URL. If the image is relative, make it absolute (user will provide the domain)","title":"Image Url","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Title (if available from alt text, title attribute or nearby headings)","title":"Title"},"copyright":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Copyright information (if available)","title":"Copyright"}},"required":["image_url","title","copyright"],"title":"HTMLExtractImage","type":"object"}},"properties":{"images":{"description":"The list of images extracted from the HTML page","items":{"$ref":"#/$defs/HTMLExtractImage"},"title":"Images","type":"array"}},"required":["images"],"title":"HTMLExtractImagesProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"html_extractor_css_selector","name":"HTML Extractor through CSS Selector","alias":"HTMLExtractorCSSSelector","aliases":[],"description_short":"Generate a CSS selector to extract data from a given HTML page.","description_long":"\n    Get the CSS selector for a given element.\n    ","description_tool_prompt":"\n    Get the CSS selector for a given element.\n    ","source":"SiteCrawler or Browser fetching","conversation_examples":["Related products section, product count, right navigation bar."],"tags":["content"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to be used","title":"Url","type":"string"},"extract_description":{"description":"The description of the element for which we want the CSS selector","title":"Extract Description","type":"string"}},"required":["url","extract_description"]},"response":{"$defs":{"CssSelectorPreview":{"properties":{"descriptors":{"anyOf":[{"items":{"$ref":"#/$defs/PreviewDescriptor"},"type":"array"},{"type":"null"}],"default":null,"title":"Descriptors"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error"}},"title":"CssSelectorPreview","type":"object"},"PreviewAttribute":{"properties":{"key":{"title":"Key","type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"},"truncated":{"title":"Truncated","type":"boolean"}},"required":["key","value","truncated"],"title":"PreviewAttribute","type":"object"},"PreviewDescriptor":{"properties":{"tag":{"title":"Tag","type":"string"},"first_attributes":{"items":{"$ref":"#/$defs/PreviewAttribute"},"title":"First Attributes","type":"array"},"inner_html_excerpt":{"$ref":"#/$defs/PreviewExcerpt"},"inner_text_excerpt":{"$ref":"#/$defs/PreviewExcerpt"},"has_other_attributes":{"title":"Has Other Attributes","type":"boolean"}},"required":["tag","first_attributes","inner_html_excerpt","inner_text_excerpt","has_other_attributes"],"title":"PreviewDescriptor","type":"object"},"PreviewExcerpt":{"properties":{"value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Value"},"truncated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Truncated"}},"title":"PreviewExcerpt","type":"object"}},"properties":{"crawl":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","description":"If fetched from sitecrawler, the crawl where the URL was found","title":"Crawl"},"css_selector":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","description":"The CSS selector extracted for the user description","title":"Css Selector"},"preview":{"anyOf":[{"$ref":"#/$defs/CssSelectorPreview"},{"type":"null"}],"default":null,"description":"Preview of the extracted data using the CSS selector"},"validation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"Error during validation","description":"Validation status or error message","title":"Validation"}},"title":"HtmlExtractorCssSelectorProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"html_fetch","name":"HTML Fetch","alias":"HtmlFetch","aliases":[],"description_short":"Get the HTML of a given URL.","description_long":"\n    Fetch the HTML of a URL, from the Botify SiteCrawler archive by default, or\n    live through a real-time fetch or the rendering farm (which executes the page\n    JavaScript) when `origin` asks for it.\n\n    The HTML is cleaned before being returned: `remove_tags` drops the listed tags,\n    `only_body` keeps the body only and `only_text` strips the markup down to text.\n    ","description_tool_prompt":"\n    Fetch the HTML of a URL, from the Botify SiteCrawler archive by default, or\n    live through a real-time fetch or the rendering farm (which executes the page\n    JavaScript) when `origin` asks for it.\n\n    The HTML is cleaned before being returned: `remove_tags` drops the listed tags,\n    `only_body` keeps the body only and `only_text` strips the markup down to text.\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to fetch HTML for. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.","title":"URL","type":"string"},"origin":{"$ref":"#/$defs/OriginEnum","default":"site_crawler","description":"The origin of the URL","enumNames":["Botify SiteCrawler","Real Time Fetch URL","Rendering Farm","Temporary upload"],"title":"Origin"},"country_code":{"default":"us","description":"The country code to use for the real-time fetch. 2 letters lowercase","title":"Country Code","type":"string"},"fallback_real_time_fetch":{"default":false,"description":"Fallback to real_time_fetch_url if the URL is not found in SiteCrawler","title":"Fallback To Real Time Fetch","type":"boolean"},"only_text":{"default":false,"description":"Only return the text of the page","title":"Only Text","type":"boolean"},"only_body":{"default":false,"description":"Only return the body of the page","title":"Only Body","type":"boolean"},"remove_tags":{"default":["script","noscript","style","header","footer","nav","aside","form","svg","iframe"],"description":"Remove all tags from the HTML","items":{"description":"The tag to remove","title":"Tag","type":"string"},"title":"Remove Tags","type":"array"},"save_to_tmp_storage":{"default":false,"description":"Save the fetched HTML to Botify temporary storage and return the temporary URL instead of the HTML. Use this to save output tokens. The returned URL can be passed to other HTML-processing tools.","title":"Save To Temporary Storage","type":"boolean"}},"required":["url"],"$defs":{"OriginEnum":{"enum":["site_crawler","real_time_fetch_url","rendering_farm","temporary_upload"],"title":"OriginEnum","type":"string"}}},"response":{"$defs":{"OriginEnum":{"enum":["site_crawler","real_time_fetch_url","rendering_farm","temporary_upload"],"title":"OriginEnum","type":"string"}},"properties":{"origin":{"anyOf":[{"$ref":"#/$defs/OriginEnum"},{"type":"null"}],"default":null,"description":"The origin of the HTML (site_crawler, real_time_fetch_url, rendering_farm, or temporary_upload)"},"crawl":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Crawl Slug from SiteCrawler","title":"Crawl"},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"HTML content of the page. Omitted when `save_to_tmp_storage` is True; see `html_tmp_storage_url` instead.","title":"Html"},"html_tmp_storage_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Temporary storage URL of the HTML page. Returned instead of `html` when `save_to_tmp_storage` is True. Can be passed to other HTML-processing tools.","title":"Html Tmp Storage Url"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"HTTP status code of the response","title":"Status Code"},"headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"HTTP headers of the response","title":"Headers"},"iframe_allowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether iframes are allowed in the response","title":"Iframe Allowed"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for failure, if any","title":"Reason"}},"title":"HTMLFetchProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"html_grep","name":"HTML Grep","alias":"HTMLGrep","aliases":[],"description_short":"Search expressions in a page HTML and return surrounding context.","description_long":"\n    Fetch the HTML of a given URL and search for one or more expressions in it.\n\n    For each occurrence found, the agent returns the matching text along with\n    a configurable number of characters of context on each side. Each expression\n    can be a literal substring (default) or a Python regular expression, and is\n    configured independently (case sensitivity, max matches, context size).\n    ","description_tool_prompt":"\n    Fetch the HTML of a given URL and search for one or more expressions in it.\n\n    For each occurrence found, the agent returns the matching text along with\n    a configurable number of characters of context on each side. Each expression\n    can be a literal substring (default) or a Python regular expression, and is\n    configured independently (case sensitivity, max matches, context size).\n    ","source":"SiteCrawler or Browser fetching","conversation_examples":["Find every occurrence of \"add to cart\" in https://www.example.com/p/123","Grep the regex \"price\\s*:\\s*\\$\\d+\" on https://www.example.com"],"tags":["content"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"queries":{"description":"List of search queries to run against the fetched HTML. Each query is processed independently and shared by all items in a batch.","items":{"$ref":"#/$defs/HtmlGrepQuery"},"minItems":1,"title":"Queries","type":"array"}},"required":["queries"],"$defs":{"HtmlGrepQuery":{"properties":{"expression":{"description":"Expression to search in the HTML. Interpreted as a literal substring unless `is_regex` is True.","minLength":1,"title":"Expression","type":"string"},"n_chars":{"default":100,"description":"Number of characters of context to keep on each side of the match.","minimum":0,"title":"N Chars","type":"integer"},"is_regex":{"default":false,"description":"If True, `expression` is interpreted as a Python regular expression. Otherwise, it is treated as a literal substring.","title":"Is Regex","type":"boolean"},"case_sensitive":{"default":true,"description":"If True, the search is case-sensitive.","title":"Case Sensitive","type":"boolean"},"max_matches":{"default":10,"description":"Maximum number of matches returned for this query. Use 0 (or a negative value) to return all matches.","title":"Max Matches","type":"integer"}},"required":["expression"],"title":"HtmlGrepQuery","type":"object"}}},"item":{"type":"object","properties":{"url":{"description":"The URL to fetch the HTML from. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.","title":"Url","type":"string"}},"required":["url"]},"response":{"$defs":{"HtmlGrepMatch":{"properties":{"match":{"description":"The exact substring that matched","title":"Match","type":"string"},"context":{"description":"The match with up to `n_chars` characters around it","title":"Context","type":"string"},"start":{"description":"Start offset of the match in the HTML","title":"Start","type":"integer"},"end":{"description":"End offset of the match in the HTML","title":"End","type":"integer"}},"required":["match","context","start","end"],"title":"HtmlGrepMatch","type":"object"},"HtmlGrepQuery":{"properties":{"expression":{"description":"Expression to search in the HTML. Interpreted as a literal substring unless `is_regex` is True.","minLength":1,"title":"Expression","type":"string"},"n_chars":{"default":100,"description":"Number of characters of context to keep on each side of the match.","minimum":0,"title":"N Chars","type":"integer"},"is_regex":{"default":false,"description":"If True, `expression` is interpreted as a Python regular expression. Otherwise, it is treated as a literal substring.","title":"Is Regex","type":"boolean"},"case_sensitive":{"default":true,"description":"If True, the search is case-sensitive.","title":"Case Sensitive","type":"boolean"},"max_matches":{"default":10,"description":"Maximum number of matches returned for this query. Use 0 (or a negative value) to return all matches.","title":"Max Matches","type":"integer"}},"required":["expression"],"title":"HtmlGrepQuery","type":"object"},"HtmlGrepQueryResult":{"properties":{"query":{"$ref":"#/$defs/HtmlGrepQuery","description":"The query this result corresponds to (echoed back)"},"matches":{"default":[],"description":"Matches found for this query, up to `max_matches`","items":{"$ref":"#/$defs/HtmlGrepMatch"},"title":"Matches","type":"array"},"total_matches":{"default":0,"description":"Total number of matches found in the HTML for this query (may be greater than `len(matches)` when truncated).","title":"Total Matches","type":"integer"},"truncated":{"default":false,"description":"True if results were truncated by `max_matches`.","title":"Truncated","type":"boolean"}},"required":["query"],"title":"HtmlGrepQueryResult","type":"object"}},"properties":{"crawl":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"If fetched from SiteCrawler, the crawl slug used","title":"Crawl"},"results":{"default":[],"description":"One result per input query, in the same order as `queries`.","items":{"$ref":"#/$defs/HtmlGrepQueryResult"},"title":"Results","type":"array"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Reason for an empty result, if any","title":"Reason"}},"title":"HtmlGrepProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"html_lang","name":"HTML Lang","alias":"HtmlLang","aliases":[],"description_short":"Get the language of a given HTML page (BCP47 format)","description_long":"A simple agent that returns the language of a given HTML page (BCP47 format).\nFirst, we try to read the lang attribute on the html tag.\nIf we don't find it, extract the text from the html and ask to a LLM.","description_tool_prompt":"A simple agent that returns the language of a given HTML page (BCP47 format).\nFirst, we try to read the lang attribute on the html tag.\nIf we don't find it, extract the text from the html and ask to a LLM.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"default_to":{"default":"","description":"If we don't find, return this value (if not empty) instead of an error.","title":"Default To","type":"string"}},"required":[]},"item":{"type":"object","properties":{"html_code":{"description":"HTML code of the page to process","title":"Html Code","type":"string"}},"required":["html_code"]},"response":{"properties":{"bcp47_lang_code":{"description":"BCP47 language code of the page","title":"Bcp47 Lang Code","type":"string"},"source":{"description":"Source of the language code (html_attribute, llm or default)","title":"Source","type":"string"}},"required":["bcp47_lang_code","source"],"title":"HtmlLangProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"html_pageworkers_preview","name":"HTML PageWorkers Preview","alias":"HtmlPageWorkersPreview","aliases":[],"description_short":"Preview PageWorkers.","description_long":"\n    Get the preview for PageWorkers descriptor for a selector or templates rendering.\n    ","description_tool_prompt":"\n    Get the preview for PageWorkers descriptor for a selector or templates rendering.\n    ","source":"SiteCrawler or Browser fetching","conversation_examples":[],"tags":["content"],"available_in_chat":true,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to be used","title":"Url","type":"string"},"options":{"$ref":"#/$defs/PreviewOptions","default":{"use_liquid_engine":false},"description":"Preview options"},"selectors":{"anyOf":[{"items":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"}]},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of extracts to preview. Each entry is an ExtractPreviewConfig object (kind: singleValue / multiValue / arrayOfObjects / jsonLd, with `type` for jsonLd) — the same shape as `extracts`. Config keys use snake_case (css_selector, container_selector, extract_type) and are converted to camelCase before hitting the JS engine. A bare string is also accepted as shorthand for a singleValue CSS selector (the legacy `list[str]` contract). Each entry returns the touched element descriptors plus the extracted value, serialized and truncated for display.","title":"Selectors"},"templates":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of PageWorkers templates to preview. Each entry should be a JSON stringified version of a template, with the `extract` and `context` fields.","title":"Templates"},"extracts":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"default":null,"description":"Optional map of named extracts to resolve against the page. Each value follows the ExtractPreviewConfig shape (singleValue / multiValue / arrayOfObjects / jsonLd). Config keys use snake_case (css_selector, container_selector, extract_type) to match the rest of the API; they are converted to camelCase before being passed to the JS engine. Unlike templates, the raw extracted values are returned to the caller without template rendering or truncation.","title":"Extracts"},"detect_json_ld_types":{"default":false,"description":"If true, return the list of unique @type values found in the page's JSON-LD blocks. Useful to discover what structured data is available before requesting an `extracts` with kind: jsonLd.","title":"Detect Json Ld Types","type":"boolean"}},"required":["url"],"$defs":{"PreviewOptions":{"properties":{"use_liquid_engine":{"default":false,"description":"Whether or not to use liquid engine","title":"Use Liquid Engine","type":"boolean"}},"title":"PreviewOptions","type":"object"}}},"response":{"$defs":{"CssSelectorPreview":{"properties":{"descriptors":{"anyOf":[{"items":{"$ref":"#/$defs/PreviewDescriptor"},"type":"array"},{"type":"null"}],"default":null,"title":"Descriptors"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error"}},"title":"CssSelectorPreview","type":"object"},"ExtractResult":{"properties":{"value":{"anyOf":[{},{"type":"null"}],"default":null,"title":"Value"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error"}},"title":"ExtractResult","type":"object"},"PreviewAttribute":{"properties":{"key":{"title":"Key","type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"},"truncated":{"title":"Truncated","type":"boolean"}},"required":["key","value","truncated"],"title":"PreviewAttribute","type":"object"},"PreviewDescriptor":{"properties":{"tag":{"title":"Tag","type":"string"},"first_attributes":{"items":{"$ref":"#/$defs/PreviewAttribute"},"title":"First Attributes","type":"array"},"inner_html_excerpt":{"$ref":"#/$defs/PreviewExcerpt"},"inner_text_excerpt":{"$ref":"#/$defs/PreviewExcerpt"},"has_other_attributes":{"title":"Has Other Attributes","type":"boolean"}},"required":["tag","first_attributes","inner_html_excerpt","inner_text_excerpt","has_other_attributes"],"title":"PreviewDescriptor","type":"object"},"PreviewExcerpt":{"properties":{"value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Value"},"truncated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Truncated"}},"title":"PreviewExcerpt","type":"object"},"TemplatePreview":{"properties":{"result":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Result"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error"},"truncated":{"default":false,"title":"Truncated","type":"boolean"}},"title":"TemplatePreview","type":"object"}},"properties":{"crawl":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"","description":"If fetched from sitecrawler, the crawl where the URL was found","title":"Crawl"},"selectors_preview":{"anyOf":[{"items":{"$ref":"#/$defs/CssSelectorPreview"},"type":"array"},{"type":"null"}],"default":null,"description":"Preview of the elements matched by the CSS selectors","title":"Selectors Preview"},"templates_preview":{"anyOf":[{"items":{"$ref":"#/$defs/TemplatePreview"},"type":"array"},{"type":"null"}],"default":null,"description":"Preview of the rendered templates","title":"Templates Preview"},"extracts":{"anyOf":[{"additionalProperties":{"$ref":"#/$defs/ExtractResult"},"type":"object"},{"type":"null"}],"default":null,"description":"Resolved extracts for the requested keys. Each entry holds the native extracted value and a per-key error if extraction failed for that key on this page.","title":"Extracts"},"json_ld_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Unique JSON-LD @type values present on the page, when `detect_json_ld_types` was requested.","title":"Json Ld Types"}},"title":"HtmlPageWorkersPreviewProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"html_question","name":"HTML Question","alias":"HTML","aliases":[],"description_short":"Ask any question about an HTML Page.","description_long":"\n    Ask about a page's semantic structure, HTML elements, and technical aspects.\n    Inquire about HTML tags, DOM structure, meta information, or how to access elements with CSS selectors.\n    This agent can also extract and analyze structured data (e.g., JSON-LD, microdata, RDFa), understand semantic hierarchy, find specific attributes or values, and provide insights about a page's technical implementation.\n    ","description_tool_prompt":"\n    Ask any question about the semantic structure, HTML elements, and technical aspects of a webpage.\n    You can inquire about specific HTML tags, DOM structure, meta information, or how to access particular elements using CSS selectors.\n    This agent can also help you extract and analyze structured data (like JSON-LD, microdata, or RDFa), understand the semantic hierarchy of content, find specific attributes or values, and provide insights about the technical implementation of any webpage.\n    ","source":"Page content","conversation_examples":["What is the price of this product for https://www.example.org/p/5866-toothbrush ?","Give me the ld+json structured data for this page https://www.example.org/p/5866-toothbrush","What are the first 5 pages ranking for 'electric toothbrush' in the US? Extract the main terms for each of those URLs."],"tags":["url data"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{"tone_of_voice":{"default":"","description":"IA tone of voice","title":"Tone Of Voice","type":"string"},"response_lang":{"default":"auto","description":"Language of the response (must be a BCP47 lang code or 'auto' (default) to use the HTML page language)","title":"Response Lang","type":"string"},"country_code":{"default":"us","description":"Country code to use for real-time fetches (2 letters lowercase)","title":"Country Code","type":"string"},"remove_tags":{"description":"List of HTML tags to remove from the page before processing","items":{"type":"string"},"title":"Remove Tags","type":"array"},"only_text":{"default":true,"description":"If set to True, extract the text before the LLM","title":"Only Text","type":"boolean"},"fallback_real_time_fetch":{"default":true,"description":"Fall back to real-time ScrapingBee fetch when URL not in SiteCrawler","title":"Fallback Real Time Fetch","type":"boolean"}},"required":[]},"item":{"type":"object","properties":{"url":{"description":"Source URL to ask question about","title":"Url","type":"string"},"question":{"description":"Question to ask","title":"Question","type":"string"}},"required":["url","question"]},"response":{"properties":{"url_found":{"description":"Whether the URL was found and the HTML was fetched","title":"Url Found","type":"boolean"},"answer":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Answer to given question (if the URL was found)","title":"Answer"},"confidence_score":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"description":"A score between 0 (lowest confidence) and 100 (best confidence) representing the confidence that the answer was accurately and completely extracted","title":"Confidence Score"},"url":{"description":"Source URL used to answer the question","title":"Url","type":"string"},"question":{"description":"Question that was asked","title":"Question","type":"string"},"iframe_allowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether iframes are allowed in the answer","title":"Iframe Allowed"}},"required":["url_found","answer","confidence_score","url","question"],"title":"HTMLQuestionProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"html_structured_data","name":"HTML Structured Data","alias":"HTMLStructuredData","aliases":[],"description_short":"Extract structured data (JSON-LD) from HTML pages.","description_long":"\n    Extract structured data from HTML pages in JSON-LD format.\n    ","description_tool_prompt":"\n    Extract structured data from HTML pages in JSON-LD format.\n    ","source":"Browser Fetching or SiteCrawler","conversation_examples":["Extract the structured data from https://www.example.org/p/5866-toothbrush","Extract the structured data from https://www.example.org/p/1234-phone for the types 'Product'"],"tags":["url data"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"country_code":{"default":"us","description":"The country code to use for the real-time fetch. 2 letters lowercase","title":"Country Code","type":"string"},"types":{"description":"The types of structured data to extract. Will extract all if not provided.","items":{"type":"string"},"title":"Types","type":"array"},"fallback_real_time_fetch":{"default":false,"description":"Fallback to real_time_fetch_url if the URL is not found in SiteCrawler","title":"Fallback To Real Time Fetch","type":"boolean"}},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL of the page to extract structured data from","title":"Url","type":"string"}},"required":["url"]},"response":{"$defs":{"HTMLStructuredData":{"description":"Represents a structured data object found in a page.","properties":{"type":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"JSON-LD @type: a single type name or a list of types (e.g. Book and Product).","title":"Type"},"data":{"additionalProperties":true,"description":"The structured data in JSON-LD format","title":"Data","type":"object"}},"required":["type","data"],"title":"HTMLStructuredData","type":"object"},"HTMLStructuredDataParsingError":{"description":"Represents an error that occurred while parsing structured data.","properties":{"error":{"description":"The error message","title":"Error","type":"string"},"raw_json":{"description":"The raw JSON that caused the error","title":"Raw Json","type":"string"}},"required":["error","raw_json"],"title":"HTMLStructuredDataParsingError","type":"object"},"OriginEnum":{"enum":["site_crawler","real_time_fetch_url","rendering_farm","temporary_upload"],"title":"OriginEnum","type":"string"}},"properties":{"origin":{"anyOf":[{"$ref":"#/$defs/OriginEnum"},{"type":"null"}],"default":null,"description":"The origin of the HTML (site_crawler, real_time_fetch_url, or rendering_farm)"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"HTTP status code of the fetched page","title":"Status Code"},"url_found":{"default":true,"description":"Whether the URL was found in the crawl","title":"Url Found","type":"boolean"},"objects":{"description":"List of extracted structured data objects","items":{"$ref":"#/$defs/HTMLStructuredData"},"title":"Objects","type":"array"},"has_objects":{"description":"Whether any structured data objects were found","title":"Has Objects","type":"boolean"},"has_errors":{"description":"Whether any errors were reported in `errors` (currently JSON-LD extraction/parsing; may include other kinds later)","title":"Has Errors","type":"boolean"},"errors":{"description":"List of errors encountered during extraction","items":{"$ref":"#/$defs/HTMLStructuredDataParsingError"},"title":"Errors","type":"array"},"title":{"description":"Title indicating the source URL","title":"Title","type":"string"}},"required":["objects","has_objects","has_errors","errors","title"],"title":"HTMLStructuredDataProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"html_to_text","name":"HTML To Text","alias":"HtmlToText","aliases":[],"description_short":"Extract text from a given HTML page","description_long":"A simple agent that returns the text of a given HTML page.\nFirst, we try to extract the text from the html with the readability tool.\nIf we don't find it, extract the text from the html with the beautifulsoup library.","description_tool_prompt":"A simple agent that returns the text of a given HTML page.\nFirst, we try to extract the text from the html with the readability tool.\nIf we don't find it, extract the text from the html with the beautifulsoup library.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"html_code":{"description":"HTML code of the page to process","title":"Html Code","type":"string"}},"required":["html_code"]},"response":{"properties":{"text":{"description":"Text extracted from the html","title":"Text","type":"string"}},"required":["text"],"title":"HtmlToTextProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"keywords_clustering","name":"Keywords Clustering","alias":"KeywordsClustering","aliases":[],"description_short":"Cluster keywords into groups.","description_long":"\n    This tool groups keywords provided by @KeywordsSuggestions or @KeywordsSuggestionsGoogleAdsPlanner into thematic clusters based on user intent and behavior.\n    The clustering reveals content opportunities by combining related terms, considering search volume, competition, and commercial intent.\n    These clusters inform content strategy by highlighting topic hierarchies, gaps, and potential site structure improvements.\n    Each cluster includes a relevance assessment to guide content prioritization.\n    ","description_tool_prompt":"Analyze and organize keywords into meaningful, thematic clusters that reflect user search intent and behavioral patterns. This advanced clustering process helps identify content opportunities by grouping semantically related search terms, considering factors like search volume, competition, and commercial intent.\n\nThe clusters enable strategic content planning by revealing topic hierarchies, content gaps, and potential site structure improvements. Each cluster includes a detailed rationale and relevance assessment based on your website's context, making it easier to prioritize content creation and optimization efforts.\n\nKeywords must be provided by **@KeywordsSuggestions** or **@KeywordsSuggestionsGoogleAdsPlanner**","source":null,"conversation_examples":["Do a keywords clustering for related keywords to 'best electric toothbrush'","Do a keyword research for 'sustainable fashion' with Google Ads Planner and then cluster them"],"tags":["keywords"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"tool_origin":{"description":"Tool origin to get keywords from","enum":["keywords_suggestions","keywords_suggestions_google_ads_planner"],"title":"Tool Origin","type":"string"},"language":{"default":"en","description":"Target language for clusters","title":"Language","type":"string"},"keywords":{"description":"List of keywords to cluster","items":{"type":"string"},"maxItems":20,"title":"Keywords","type":"array"}},"required":["tool_origin","keywords"]},"response":{"$defs":{"KeywordsCluster":{"properties":{"name":{"description":"Name of the keywords cluster","title":"Name","type":"string"},"main_keyword":{"description":"The main keyword representing the cluster","title":"Main Keyword","type":"string"},"keywords":{"description":"List of keywords belonging to this cluster","items":{"type":"string"},"title":"Keywords","type":"array"},"rationale":{"description":"Explanation of why these keywords are grouped together","title":"Rationale","type":"string"},"relevant_for_website":{"description":"Whether this cluster is relevant for the website based on its description","title":"Relevant For Website","type":"boolean"}},"required":["name","main_keyword","keywords","rationale","relevant_for_website"],"title":"KeywordsCluster","type":"object"}},"properties":{"clusters":{"description":"List of keyword clusters","items":{"$ref":"#/$defs/KeywordsCluster"},"title":"Clusters","type":"array"},"website_description_used_for_clustering":{"description":"The website description that was used to assess cluster relevance","title":"Website Description Used For Clustering","type":"string"},"website_description_used_for_clustering__notes":{"description":"Notes about the website description used for clustering","title":"Website Description Used For Clustering  Notes","type":"string"}},"required":["clusters","website_description_used_for_clustering","website_description_used_for_clustering__notes"],"title":"KeywordsClusteringProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"keywords_extractor","name":"Keywords Extractor","alias":"KeywordsExtractor","aliases":[],"description_short":"Extract top X keywords from given URLs","description_long":"\n    Extract top X keywords from given URLs.\n\n    ","description_tool_prompt":"\n    Extract top X keywords from given URLs.\n\n    ","source":"Botify","conversation_examples":[],"tags":["keywords"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"limit":{"default":10,"description":"Limit of top keywords to retrieve per URL","title":"Limit","type":"integer"},"start_date":{"default":"2026-08-17","description":"Start date of the period (format YYYY-MM-DD)","title":"Start Date","type":"string"},"end_date":{"default":"2026-09-16","description":"End date of the period","title":"End Date","type":"string"},"exclude_branded":{"default":true,"description":"Whether to exclude branded keywords","title":"Exclude Branded","type":"boolean"},"min_ctr":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Minimum CTR to filter keywords (between 0 and 1)","title":"Min Ctr"},"sort":{"default":"impressions","description":"Metric to sort keywords by (descending order)","enum":["impressions","clicks"],"title":"Sort","type":"string"}},"required":[]},"item":{"type":"object","properties":{"urls":{"description":"List of URLs we want to retrieve the keywords","items":{"type":"string"},"title":"Urls","type":"array"}},"required":["urls"]},"response":{"$defs":{"KeywordsExtractorEntity":{"properties":{"url":{"title":"Url","type":"string"},"keywords":{"items":{"type":"string"},"title":"Keywords","type":"array"}},"required":["url","keywords"],"title":"KeywordsExtractorEntity","type":"object"}},"properties":{"results":{"anyOf":[{"items":{"$ref":"#/$defs/KeywordsExtractorEntity"},"type":"array"},{"type":"null"}],"description":"List of keywords per URL","title":"Results"}},"required":["results"],"title":"KeywordsExtractorProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"keywords_suggestions","name":"Keyword Suggestions","alias":"KeywordSuggestions","aliases":[],"description_short":"Get organic keyword suggestions from a given keyword.","description_long":"\n    Discover a comprehensive list of related keywords based on a seed keyword, including synonyms, variations, and related topics from Google search data.\n    This tool identifies valuable keyword opportunities for your SEO strategy and includes detailed metrics for each keyword such as search volume, CPC, competition level, and search intent.\n    This facilitates content planning, PPC campaigns, and identifying new market opportunities in your niche.\n    ","description_tool_prompt":"\n    Analyze Google Ads keyword data and answer questions about:\n        - Search volumes and trends\n        - Competition levels\n        - CPC and bidding metrics\n        - Top performing keywords\n        - Keyword patterns and themes\n        And more...\n    ","source":null,"conversation_examples":["What are the top 5 keywords by search volume for 'electric toothbrush'?","Which keywords have informational intent for 'running shoes'?","What's the average competition level for keywords related to 'organic food'?","Show me keywords with featured snippets for 'yoga mat'"],"tags":["keywords","google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"seed_keyword":{"description":"Seed keyword to get suggestions for.","title":"Seed Keyword","type":"string"},"question":{"description":"What data to get from the keyword.","title":"Question","type":"string"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Country for the analysis.","title":"Country"}},"required":["seed_keyword","question"]},"response":{"properties":{"answer":{"description":"Answer to the question.","title":"Answer","type":"string"},"results":{"description":"List of keywords data.","items":{"additionalProperties":true,"type":"object"},"title":"Results","type":"array"}},"required":["answer","results"],"title":"KeywordsSuggestionsProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"keywords_suggestions_google_ads_planner","name":"Keywords Suggestions From Google Ads Planner","alias":"KeywordSuggestionsGoogleAdsPlanner","aliases":[],"description_short":"Get keyword suggestions from Google Ads Keywords Planner.","description_long":"\n    Discover a comprehensive list of related keywords based on a seed keyword, including synonyms, variations, and related topics from Google Ads data.\n    This tool identifies valuable keyword opportunities for your SEO strategy and includes detailed metrics for each keyword such as search volume, CPC, competition level, and search intent.\n    This facilitates content planning, PPC campaigns, and identifying new market opportunities in your niche.\n    ","description_tool_prompt":"Analyze Google Ads keyword data and answer questions about:\n    - Search volumes and trends\n    - Competition levels\n    - CPC and bidding metrics\n    - Top performing keywords\n    - Keyword patterns and themes\n    And more...\n    ","source":"Google Ads Planner","conversation_examples":["What are the top 5 keywords by search volume for 'electric toothbrush'?","Which keywords have the highest CPC for 'running shoes'?","What's the average competition level for keywords related to 'organic food'?","Show me low competition keywords for 'yoga mat' with over 1000 searches"],"tags":["keywords","google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"keywords":{"description":"List of keywords to get suggestions for","items":{"type":"string"},"maxItems":20,"title":"Keywords","type":"array"},"question":{"description":"What data to get from the keywords","title":"Question","type":"string"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location to get suggestions for.","title":"Location Request"}},"required":["keywords","question"]},"response":{"properties":{"answer":{"description":"The answer to the question","title":"Answer","type":"string"},"results":{"description":"List of keyword data","items":{"additionalProperties":true,"type":"object"},"title":"Results","type":"array"}},"required":["answer","results"],"title":"KeywordsSuggestionsGoogleAdsPlannerProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"knowledge","name":"Knowledge","alias":"Knowledge","aliases":[],"description_short":"Find answers to how to use Botify.","description_long":"Answer questions about the Botify application to understand product features, technical concepts, and best practices for using Botify effectively.In any case but the build of a query, if user asks what a specific filter means (for example a dimension, metric, or UI filter) and strictly for the meaning, query the Knowledge tool using the filter name plus the keyword “filters”, then explain the filter to the user using the field description and any relevant documentation you find.","description_tool_prompt":"Answer questions about the Botify application to understand product features, technical concepts, and best practices for using Botify effectively.In any case but the build of a query, if user asks what a specific filter means (for example a dimension, metric, or UI filter) and strictly for the meaning, query the Knowledge tool using the filter name plus the keyword “filters”, then explain the filter to the user using the field description and any relevant documentation you find.","source":"Botify Documentation","conversation_examples":["How do I set up a custom alert in Botify?","How can I export my data from Botify?","What can I do with SmartIndex in Botify?"],"tags":["web search"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"query":{"description":"The question you want to ask to the Knowledge Agent","minLength":5,"title":"Query","type":"string"}},"required":["query"]},"response":{"$defs":{"DiscoveryEngineModelScoresResult":{"properties":{"relevance_score":{"items":{"type":"number"},"title":"Relevance Score","type":"array"}},"required":["relevance_score"],"title":"DiscoveryEngineModelScoresResult","type":"object"},"DiscoveryEngineSearchResult":{"properties":{"document":{"anyOf":[{"$ref":"#/$defs/DiscoveryEngineStructuredDocumentResult"},{"$ref":"#/$defs/DiscoveryEngineUnstructuredDocumentResult"}],"title":"Document"},"model_scores":{"$ref":"#/$defs/DiscoveryEngineModelScoresResult"}},"required":["document","model_scores"],"title":"DiscoveryEngineSearchResult","type":"object"},"DiscoveryEngineStructuredDocumentResult":{"properties":{"body":{"title":"Body","type":"string"},"link":{"title":"Link","type":"string"},"title":{"title":"Title","type":"string"},"sequenced_group_name":{"title":"Sequenced Group Name","type":"string"},"dataset_name":{"title":"Dataset Name","type":"string"},"description":{"title":"Description","type":"string"}},"required":["body","link","title","sequenced_group_name","dataset_name","description"],"title":"DiscoveryEngineStructuredDocumentResult","type":"object"},"DiscoveryEngineUnstructuredDocumentResult":{"properties":{"extractive_answers":{"items":{"type":"string"},"title":"Extractive Answers","type":"array"},"link":{"title":"Link","type":"string"},"title":{"title":"Title","type":"string"}},"required":["extractive_answers","link","title"],"title":"DiscoveryEngineUnstructuredDocumentResult","type":"object"}},"properties":{"search_results":{"description":"List of search results used to generate the answer","items":{"$ref":"#/$defs/DiscoveryEngineSearchResult"},"title":"Search Results","type":"array"},"answer":{"description":"The answer generated by the Knowledge Agent","title":"Answer","type":"string"}},"required":["search_results","answer"],"title":"KnowledgeAgentProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"list_annotations","name":"List Annotations","alias":"ListAnnotations","aliases":[],"description_short":"Retrieve annotations logged on your project.","description_long":"Retrieve annotations logged on your project.","description_tool_prompt":"List chart annotations on the current project: dated notes and markers on Botify time-series charts (site changes, campaigns, releases, commercial events, incidents). Use when correlating traffic or ranking shifts with known timeline events, or when the user asks what was logged on specific dates.","source":"Botify","conversation_examples":["Show me my annotations","List all annotations from the last 6 months"],"tags":["web search"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"period_start":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"description":"Optional inclusive start of the period filter (ISO date, e.g. 2024-01-01). Annotations whose start_date falls within this period are returned.","title":"Period Start"},"period_end":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}],"default":null,"description":"Optional inclusive end of the period filter (ISO date, e.g. 2024-12-31). Annotations whose start_date falls within this period are returned.","title":"Period End"}},"required":[]},"response":{"$defs":{"ChartAnnotation":{"description":"Project chart annotation with only the fields exposed by the agent.","properties":{"start_date":{"description":"Annotation start date and time","format":"date-time","title":"Start Date","type":"string"},"data":{"anyOf":[{"$ref":"#/$defs/ChartAnnotationData"},{"type":"null"}],"default":null,"description":"Annotation payload (typically includes content text)"}},"required":["start_date"],"title":"ChartAnnotation","type":"object"},"ChartAnnotationData":{"additionalProperties":true,"properties":{"content":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Content"}},"title":"ChartAnnotationData","type":"object"}},"properties":{"annotations":{"description":"Project chart annotations for the project","items":{"$ref":"#/$defs/ChartAnnotation"},"title":"Annotations","type":"array"},"count":{"description":"Number of annotations returned after filtering","title":"Count","type":"integer"},"total_count":{"description":"Total number of annotations on the project before filtering","title":"Total Count","type":"integer"}},"required":["annotations","count","total_count"],"title":"ListAnnotationsProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"nearest_page_for_topic","name":"Find Nearest Pages for Topic","alias":"NearestPages","aliases":[],"description_short":"Get the nearest page for a given topic.","description_long":"\n    Find your five most relevant pages for a given topic from Google search results.\n    This can help you evaluate your pages' relevance to identify internal linking opportunities and content optimization.\n    ","description_tool_prompt":"Get the nearest page (for current project) for a given topic","source":"Browser Fetching on Google Search","conversation_examples":["Find the nearest pages for 'electric toothbrush'","Do a keyword research for 'sustainable fashion' with @KeywordsSuggestionsGoogleAdsPlanner and then find the nearest pages for the 5 keywords with most search volume"],"tags":[],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":false,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"topic":{"description":"The topic to analyze.","title":"Topic","type":"string"},"country":{"description":"The country to search for.","title":"Country","type":"string"}},"required":["topic","country"]},"response":{"$defs":{"TopicPage":{"properties":{"url":{"description":"URL of the page.","title":"Url","type":"string"},"title":{"description":"Title of the page.","title":"Title","type":"string"},"description":{"description":"Description of the page.","title":"Description","type":"string"},"relevance_score":{"description":"Relevance score.","title":"Relevance Score","type":"number"},"explanation":{"description":"Explanation of the relevance score.","title":"Explanation","type":"string"}},"required":["url","title","description","relevance_score","explanation"],"title":"TopicPage","type":"object"}},"properties":{"pages":{"description":"List of evaluated topic pages.","items":{"$ref":"#/$defs/TopicPage"},"title":"Pages","type":"array"}},"required":["pages"],"title":"NearestPageForTopicProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"organic_keyword_suggestions","name":"Organic Keyword Suggestions","alias":"OrganicKeywordSuggestions","aliases":["keywords_suggestions_raw"],"description_short":"Get organic keyword suggestions from a given keyword.","description_long":"\n    Discover a comprehensive list of related keywords based on a seed keyword, including synonyms, variations, and related topics from Google search data.\n    This tool identifies valuable keyword opportunities for your SEO strategy and includes detailed metrics for each keyword such as search volume, CPC, competition level, and search intent.\n    This facilitates content planning, PPC campaigns, and identifying new market opportunities in your niche.\n    ","description_tool_prompt":"\n    Discover a comprehensive list of related keywords based on a seed keyword, including synonyms, variations, and related topics from Google search data.\n    This tool identifies valuable keyword opportunities for your SEO strategy and includes detailed metrics for each keyword such as search volume, CPC, competition level, and search intent.\n    This facilitates content planning, PPC campaigns, and identifying new market opportunities in your niche.\n    ","source":"Botify","conversation_examples":["What are the related keywords for 'toothbrush'?","I need to do a keywords research for valentine's day","Show me related terms for 'healthy recipes'","Research keywords for 'sustainable fashion'"],"tags":["keywords","google"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Location ID (optional)","title":"Location Id"},"location_request":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Location request (ex: Paris, FR), will translate to location ID","title":"Location Request"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO3166 country code (ex: GB)","title":"Country Code"},"lang_code":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"BCP47 language code (ex: \"en\", \"en-GB\")","title":"Lang Code"},"device":{"default":"mobile","description":"Device to use for search (optional - defaults to mobile)","enum":["mobile","desktop"],"title":"Device","type":"string"}},"required":[]},"item":{"type":"object","properties":{"seed_keyword":{"description":"Seed Keyword","title":"Keyword","type":"string"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Country","title":"Country"},"columns":{"default":["keyword","search_volume","competition","cpc","main_intent"],"description":"Columns to display","items":{"enum":["keyword","serp_item_types","results_count","search_volume","cpc","competition","monthly_searches","backlinks_info","main_intent","foreign_intent"],"type":"string"},"title":"Columns","type":"array"}},"required":["seed_keyword"]},"response":{"properties":{"location_code":{"description":"Location code used for the analysis","title":"Location Code","type":"integer"},"language_code":{"description":"Language code used for the analysis","title":"Language Code","type":"string"},"results":{"description":"List of keyword suggestions","items":{"additionalProperties":true,"type":"object"},"title":"Results","type":"array"}},"required":["location_code","language_code","results"],"title":"OrganicKeywordSuggestionsProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"pageworkers_generic_urls_actions","name":"PageWorkers Generic URLs Actions","alias":"PageWorkersGenericUrlsActions","aliases":["pageworkers","PageWorkers"],"description_short":"Update metadata or apply custom changes to URLs (PageWorkers).","description_long":"\n    This agent creates a PageWorkers optimization for a page from your most recent crawl to update its title, description, or H1 tag.\n    ","description_tool_prompt":"\n    Update any title/description/h1 for a list of URLs through PageWorkers, and apply custom changes to specific elements.\n    ","source":"Botify","conversation_examples":["Update title for https://www.example.org/p/5866-toothbrush with 'The Best Electric Toothbrush' and description with 'Discover the best electric toothbrush: infinite battery life, 3 modes, and more'","Add custom changes to https://www.example.org/p/5866-toothbrush: prepend 'NEW! ' to the product name element"],"tags":["collaboration"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"urls":{"description":"List of URLs and their metadata updates","items":{"$ref":"#/$defs/URLMetadataUpdate"},"title":"URLs","type":"array"}},"required":["urls"],"$defs":{"CustomChange":{"description":"A custom change to apply to the page.","properties":{"selector":{"description":"CSS selector of the element to update (ex: \"h1\", \".article-count\", etc).","title":"Selector","type":"string"},"strategy":{"description":"Update strategy to use","enum":["prepend","append","insertAfter","insertBefore","replace","replaceElement"],"title":"Strategy","type":"string"},"value":{"description":"Value to update","title":"Value","type":"string"},"max_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Maximum date to apply the update (YYYY-MM-DD format)","title":"Max Date"}},"required":["selector","strategy","value"],"title":"CustomChange","type":"object"},"URLMetadataUpdate":{"description":"Metadata updates to apply to a specific URL.","properties":{"url":{"description":"Specific URL to update (wildcards like '*' are not allowed)","title":"Url","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New title to set for the page","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New description to set for the page","title":"Description"},"h1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New H1 to set for the page","title":"H1"},"custom_changes":{"default":[],"description":"List of custom changes to apply to specific elements on the page","items":{"$ref":"#/$defs/CustomChange"},"maxItems":10,"title":"Custom Changes","type":"array"}},"required":["url"],"title":"URLMetadataUpdate","type":"object"}}},"response":{"$defs":{"CustomChange":{"description":"A custom change to apply to the page.","properties":{"selector":{"description":"CSS selector of the element to update (ex: \"h1\", \".article-count\", etc).","title":"Selector","type":"string"},"strategy":{"description":"Update strategy to use","enum":["prepend","append","insertAfter","insertBefore","replace","replaceElement"],"title":"Strategy","type":"string"},"value":{"description":"Value to update","title":"Value","type":"string"},"max_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Maximum date to apply the update (YYYY-MM-DD format)","title":"Max Date"}},"required":["selector","strategy","value"],"title":"CustomChange","type":"object"},"URLMetadataUpdate":{"description":"Metadata updates to apply to a specific URL.","properties":{"url":{"description":"Specific URL to update (wildcards like '*' are not allowed)","title":"Url","type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New title to set for the page","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New description to set for the page","title":"Description"},"h1":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"New H1 to set for the page","title":"H1"},"custom_changes":{"default":[],"description":"List of custom changes to apply to specific elements on the page","items":{"$ref":"#/$defs/CustomChange"},"maxItems":10,"title":"Custom Changes","type":"array"}},"required":["url"],"title":"URLMetadataUpdate","type":"object"}},"properties":{"websiteId":{"description":"The website ID","title":"Websiteid","type":"string"},"moduleId":{"description":"The PageWorkers module ID","title":"Moduleid","type":"string"},"urls":{"description":"List of URLs and their metadata updates","items":{"$ref":"#/$defs/URLMetadataUpdate"},"title":"Urls","type":"array"},"message":{"description":"Message about the operation","title":"Message","type":"string"},"organization":{"description":"The organization slug","title":"Organization","type":"string"},"project":{"description":"The project slug","title":"Project","type":"string"},"demo":{"description":"Whether the operation was run in demo mode","title":"Demo","type":"boolean"}},"required":["websiteId","moduleId","urls","message","organization","project","demo"],"title":"PageWorkersProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"perplexity","name":"Perplexity","alias":"Perplexity","aliases":[],"description_short":"Ask a question to Perplexity.","description_long":"Leverage Perplexity AI's robust knowledge base for accurate, current answers to your questions. This agent combines advanced language models with real-time information to provide comprehensive responses with relevant citations.","description_tool_prompt":"\n    Ask a question to Perplexity when you need to ground the web for a specific question.\n    Will return an answer with citations and related questions.\n\n    This agent can help you:\n    - Get up-to-date information from web sources\n    - Find answers with credible citations\n    - Discover related questions on the topic\n    ","source":"Perplexity API","conversation_examples":["What are the best running shoes?","What's trending in fashion in the UK?","What are the TV shows to watch in 2026?"],"tags":["web search"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"model":{"default":"sonar","description":"Perplexity model to use","title":"Model","type":"string"},"temperature":{"default":0.3,"description":"Temperature for the Perplexity model","maximum":2.0,"minimum":0.0,"title":"Temperature","type":"number"}},"required":[]},"item":{"type":"object","properties":{"question":{"description":"The question you want to ask Perplexity","minLength":1,"title":"Question","type":"string"}},"required":["question"]},"response":{"$defs":{"PerplexitySearchResult":{"properties":{"url":{"title":"Url","type":"string"},"title":{"title":"Title","type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Date"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Last Updated"},"snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Snippet"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Source"}},"required":["url","title"],"title":"PerplexitySearchResult","type":"object"}},"properties":{"answer":{"description":"The answer from Perplexity","title":"Answer","type":"string"},"citations":{"description":"List of citation URLs","items":{"type":"string"},"title":"Citations","type":"array"},"search_results":{"description":"List of search results used to generate the answer","items":{"$ref":"#/$defs/PerplexitySearchResult"},"title":"Search Results","type":"array"},"related_questions":{"description":"List of related questions","items":{"type":"string"},"title":"Related Questions","type":"array"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Name / version of the model used","title":"Model"}},"required":["answer","citations","search_results","related_questions"],"title":"PerplexityProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"project_metadata","name":"Project Memory","alias":"ProjectMemory","aliases":[],"description_short":"Get or patch information about the project (tone of voice, website description...)","description_long":"Store and retrieve key project metadata, such as tone of voice, website description, and internationalization strategy, to ensure consistency across content and SEO efforts. This agent helps maintain alignment by using stored data to generate relevant, on-brand outputs.","description_tool_prompt":"Store and retrieve key project metadata, such as tone of voice, website description, and internationalization strategy, to ensure consistency across content and SEO efforts. This agent helps maintain alignment by using stored data to generate relevant, on-brand outputs.","source":null,"conversation_examples":[],"tags":["content"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"method":{"description":"Method to execute: 'get' or 'patch'","enum":["get","patch"],"title":"Method","type":"string"},"keys":{"description":"The metadata keys to retrieve or store","items":{"enum":["brand_name","website_description","internationalization_strategy","tone_of_voice","currency","revenue_per_visit_desktop","revenue_per_visit_tablet","revenue_per_visit_mobile"],"type":"string"},"title":"Keys","type":"array"},"values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"The values to store for given keys, for patch only.It must be the same length as keys and all values must be strings, including numeric ones.","title":"Values"}},"required":["method","keys"]},"response":{"properties":{"values":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]},"description":"Retrieved metadata values","propertyNames":{"enum":["brand_name","website_description","internationalization_strategy","tone_of_voice","currency","revenue_per_visit_desktop","revenue_per_visit_tablet","revenue_per_visit_mobile"]},"title":"Values","type":"object"},"not_set_values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Keys that were requested but not set","title":"Not Set Values"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Message describing the result","title":"Message"}},"required":["values"],"title":"ProjectMetadataProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"screenshot","name":"Screenshot","alias":"Screenshot","aliases":[],"description_short":"Capture a screenshot of a webpage and return a URL for the screenshot and an optional animated GIF","description_long":"\n    Take a screenshot of a webpage.\n    \n    The agent can optionally focus on a specific element using a CSS selector.\n    \n    Features:\n    - Full page screenshots\n    - Optional CSS selector to highlight specific elements\n    - Animated GIF generation (zoom into elements or scroll through page)\n    - Returns a publicly accessible URL\n    \n    Animation Feature:\n    When animate=true:\n    - With a CSS selector: generates an animated GIF that:\n      1. Starts with a full page view from the top\n      2. Zooms into the first element (1-3 slides based on element size/depth)\n      3. Loops over up to 3 additional elements with smooth zoom animations\n    - Without a CSS selector: generates an animated GIF that scrolls from top to bottom of the page\n    ","description_tool_prompt":"\n    Take a screenshot of a webpage.\n    \n    The agent can optionally focus on a specific element using a CSS selector.\n    \n    Features:\n    - Full page screenshots\n    - Optional CSS selector to highlight specific elements\n    - Animated GIF generation (zoom into elements or scroll through page)\n    - Returns a publicly accessible URL\n    \n    Animation Feature:\n    When animate=true:\n    - With a CSS selector: generates an animated GIF that:\n      1. Starts with a full page view from the top\n      2. Zooms into the first element (1-3 slides based on element size/depth)\n      3. Loops over up to 3 additional elements with smooth zoom animations\n    - Without a CSS selector: generates an animated GIF that scrolls from top to bottom of the page\n    ","source":"Web","conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"URL of the page to screenshot","title":"Url","type":"string"},"css_selector_highlight":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional CSS selector to highlight/focus on a specific element on the page","title":"Css Selector Highlight"},"animate":{"default":false,"description":"Generate an animated GIF that zooms into highlighted elements (if CSS selector provided) or scrolls through the page (if no CSS selector)","title":"Animate","type":"boolean"}},"required":["url"]},"response":{"properties":{"screenshot_url":{"description":"Public URL of the screenshot stored in GCS","title":"Screenshot Url","type":"string"},"animated_screenshot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Public URL of the animated GIF screenshot stored in GCS","title":"Animated Screenshot Url"}},"required":["screenshot_url"],"title":"ScreenshotProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"searchgpt","name":"SearchGPT","alias":"SearchGPT","aliases":[],"description_short":"Search the web and get AI-powered answers with citations.","description_long":"Use GPT with web browsing capabilities to search the internet and provide accurate, up-to-date answers to your questions. Perfect for research, fact-checking, and getting comprehensive information about any topic.","description_tool_prompt":"Use GPT with web browsing capabilities to search the internet and provide accurate, up-to-date answers to your questions. Perfect for research, fact-checking, and getting comprehensive information about any topic.","source":"ChatGPT API","conversation_examples":["What are the latest developments in AI?","Tell me about the history of coffee","What are the best practices for SEO in 2026?","Explain the current situation in renewable energy"],"tags":["web search"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"model":{"default":"gpt-5-mini","description":"OpenAI model to use for search","title":"Model","type":"string"}},"required":[]},"item":{"type":"object","properties":{"question":{"description":"What would you like to search for?","title":"Question","type":"string"},"city":{"default":"","description":"The city to search for","title":"City","type":"string"},"country":{"default":"","description":"The country to search for. ISO 3166-1 alpha-2 country code, e.g. \"US\".","title":"Country","type":"string"}},"required":["question"]},"response":{"$defs":{"SearchGptLink":{"properties":{"url":{"title":"Url","type":"string"},"title":{"title":"Title","type":"string"},"position":{"title":"Position","type":"integer"}},"required":["url","title","position"],"title":"SearchGptLink","type":"object"}},"properties":{"model":{"description":"Model used for the search","title":"Model","type":"string"},"answer":{"description":"AI-powered answer to the search query","title":"Answer","type":"string"},"links":{"description":"List of source links with titles, URLs and positions","items":{"$ref":"#/$defs/SearchGptLink"},"title":"Links","type":"array"}},"required":["model","answer","links"],"title":"SearchGptProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false},{"id":"share_of_voice_analysis","name":"Share Of Voice Analysis","alias":"ShareOfVoiceAnalysis","aliases":[],"description_short":"Analyze the share of voice (no brand config required)","description_long":"Analyze the share of voice with per-brand sentiment and addressed topics","description_tool_prompt":"Analyze the share of voice with per-brand sentiment and addressed topics","source":"Targeted Provider (ChatGPT, Google AI Mode, Perplexity,etc.)","conversation_examples":[],"tags":["competitive analysis"],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"domains":{"description":"The brand's domains","items":{"type":"string"},"title":"Domains","type":"array"},"llm_model":{"default":"google:gemini-3.1-flash-lite","description":"Override LLM model (provider:model_name)","title":"Llm Model","type":"string"}},"required":["domains"]},"item":{"type":"object","properties":{"query":{"description":"The search query to analyze","title":"Query","type":"string"},"text":{"description":"The text to analyze","title":"Text","type":"string"},"links":{"description":"The links to analyze","items":{"$ref":"#/$defs/Link"},"title":"Links","type":"array"},"provider_name":{"description":"The provider name","title":"Provider Name","type":"string"}},"required":["query","text","links","provider_name"],"$defs":{"Link":{"properties":{"url":{"title":"Url","type":"string"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Position"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Title"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Text"}},"required":["url"],"title":"Link","type":"object"}}},"response":{"$defs":{"AddressedTopic":{"description":"A topic addressed about a brand with its sentiment.","properties":{"topic":{"description":"Topic addressed (1-3 words, e.g. 'pricing', 'reliability')","title":"Topic","type":"string"},"sentiment":{"description":"Sentiment for this topic about this brand (positive, negative, or neutral)","enum":["positive","negative","neutral"],"title":"Sentiment","type":"string"}},"required":["topic","sentiment"],"title":"AddressedTopic","type":"object"},"BrandMention":{"description":"A brand mentioned in the AI answer with rationale and per-topic sentiments.","properties":{"name":{"description":"Brand name (lowercase, no duplicates, max 100 characters)","maxLength":100,"title":"Name","type":"string"},"rationale":{"description":"Concise explanation (1 sentence) of where/how the brand appears in the answer.\nExample: \"Recommended as budget option in the comparison section.\"\nExample: \"Listed among alternatives without detailed evaluation.\"\nExample: \"Mentioned as market leader in the introduction.\"","title":"Rationale","type":"string"},"addressed_topics":{"default":[],"description":"Topics discussed about THIS BRAND with their sentiment (max 3).\nEach topic should be 1-3 words (e.g. \"pricing\", \"reliability\", \"customer support\").\nExample for Nike: [{\"topic\": \"durability\", \"sentiment\": \"positive\"}, {\"topic\": \"pricing\", \"sentiment\": \"negative\"}, {\"topic\": \"delivery\", \"sentiment\": \"neutral\"}]","items":{"$ref":"#/$defs/AddressedTopic"},"maxItems":3,"title":"Addressed Topics","type":"array"}},"required":["name","rationale"],"title":"BrandMention","type":"object"},"DomainCitation":{"properties":{"domain":{"title":"Domain","type":"string"},"best_position":{"title":"Best Position","type":"integer"}},"required":["domain","best_position"],"title":"DomainCitation","type":"object"},"DomainsAnalysis":{"properties":{"domains_citations":{"items":{"$ref":"#/$defs/DomainCitation"},"title":"Domains Citations","type":"array"},"best_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Position"},"best_position_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Position Url"},"nb_urls_matching_domain":{"title":"Nb Urls Matching Domain","type":"integer"}},"required":["domains_citations","best_position","best_position_url","nb_urls_matching_domain"],"title":"DomainsAnalysis","type":"object"}},"properties":{"summary":{"description":"Summary of brand mentions and analysis","title":"Summary","type":"string"},"all_brands_with_sentiment":{"description":"List of brands mentioned with their sentiment, rationale, and topics","items":{"$ref":"#/$defs/BrandMention"},"title":"All Brands With Sentiment","type":"array"},"domain_analysis":{"$ref":"#/$defs/DomainsAnalysis","description":"Domain analysis"}},"required":["summary","all_brands_with_sentiment","domain_analysis"],"title":"ShareOfVoiceAnalysisProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"site_crawler_url_details","name":"URL Details from Botify SiteCrawler","alias":"URLDetails","aliases":[],"description_short":"Find crawl data for a given URL.","description_long":"\n    Get comprehensive URL analysis from Botify's latest crawl, including:\n\n* Core metadata: title, meta description, H1s, H2s\n\n* Technical details: HTTP status code, response time, content type\n\n* Link relationships: canonical URLs, hreflang tags\n\n* Link graph analysis: internal links, external links, incoming links\n\n* Page content: structured data, main content analysis\n\n* JavaScript rendering: rendered vs HTML content, JS dependencies\n\n* Crawl data: crawl date, crawl depth, crawl path\n    ","description_tool_prompt":"\n    Get comprehensive URL analysis from Botify's latest crawl, including:\n\n* Core metadata: title, meta description, H1s, H2s\n\n* Technical details: HTTP status code, response time, content type\n\n* Link relationships: canonical URLs, hreflang tags\n\n* Link graph analysis: internal links, external links, incoming links\n\n* Page content: structured data, main content analysis\n\n* JavaScript rendering: rendered vs HTML content, JS dependencies\n\n* Crawl data: crawl date, crawl depth, crawl path\n    ","source":"Botify","conversation_examples":["What are the title, description, canonical and pagerank of https://www.example.com/page","List incoming links to https://www.example.com/page","Do I have hreflang issues with https://www.example.com/page"],"tags":["url data"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to analyze","title":"URL","type":"string"},"question":{"description":"What information would you like to know about this URL","title":"Question","type":"string"}},"required":["url","question"]},"response":{"properties":{"summary":{"description":"A summary of the URL details","title":"Summary","type":"string"},"url_details_href":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A link to the detailed URL analysis in Botify Analytics","title":"Url Details Href"}},"required":["summary"],"title":"SiteCrawlerURLDetailsProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"tables_insert","name":"Tables Insert","alias":"TablesInsert","aliases":[],"description_short":"Agent that inserts data into a BigQuery table in the customer's editable catalog dataset","description_long":"Insert rows into a table in the project's editable catalog.\n    Only tables created manually by project members can be modified.\n    The table name is specified in the config, and each item contains a single row.\n    Use batch mode to insert multiple rows efficiently.\n    ","description_tool_prompt":"Insert rows into a table in the project's editable catalog.\n    Only tables created manually by project members can be modified.\n    The table name is specified in the config, and each item contains a single row.\n    Use batch mode to insert multiple rows efficiently.\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"table_name":{"description":"Name of the table to insert data into (must be in the editable catalog)","title":"Table Name","type":"string"}},"required":["table_name"]},"item":{"type":"object","properties":{"row":{"additionalProperties":true,"description":"A single row to insert as a dictionary","title":"Row","type":"object"}},"required":["row"]},"response":{"properties":{"table_name":{"description":"Name of the table","title":"Table Name","type":"string"},"rows_inserted":{"description":"Number of rows inserted","title":"Rows Inserted","type":"integer"},"errors":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"description":"Any errors that occurred during insertion","title":"Errors"}},"required":["table_name","rows_inserted","errors"],"title":"TablesInsertProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"tables_load","name":"Tables Load","alias":"TablesLoad","aliases":[],"description_short":"Load a CSV or TSV file into the current project's editable BigQuery catalog","description_long":"Load a CSV or TSV file into the project's editable BigQuery catalog.\n\n    The file can be provided by a public HTTP(S) URL or Base64 content.\n    For a local file, upload it at https://app.botify.com/:organization/:project/o/storage/tmp and pass the returned URL as source_url.\n    \n    CSV/TSV files may be gzip compressed.\n    The operation fails when the destination table exists unless replace_existing is explicitly enabled.\n    ","description_tool_prompt":"Load a CSV or TSV file into the project's editable BigQuery catalog.\n\n    The file can be provided by a public HTTP(S) URL or Base64 content.\n    For a local file, upload it at https://app.botify.com/:organization/:project/o/storage/tmp and pass the returned URL as source_url.\n    \n    CSV/TSV files may be gzip compressed.\n    The operation fails when the destination table exists unless replace_existing is explicitly enabled.\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"table_name":{"description":"Destination table name in the editable catalog; must not match a managed table family","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,1023}$","title":"Table Name","type":"string"},"table_description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional BigQuery table description","title":"Table Description"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"HTTP(S) URL of the source file. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.","title":"Source Url"},"content_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Base64-encoded file content. Prefer source_url for large files.","title":"Content Base64"},"format":{"$ref":"#/$defs/DelimitedFormat","default":"auto","description":"Delimited input format, or auto-detect from the filename"},"columns":{"anyOf":[{"items":{"$ref":"#/$defs/ColumnDefinition"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional explicit BigQuery schema. When omitted, BigQuery infers the schema from the file header and rows.","title":"Columns"},"replace_existing":{"default":false,"description":"Replace an existing table. Disabled by default to prevent unintentional data loss.","title":"Replace Existing","type":"boolean"}},"required":["table_name"],"$defs":{"ColumnDefinition":{"description":"Definition of a column in the table.","properties":{"name":{"description":"Name of the column","title":"Name","type":"string"},"type":{"description":"BigQuery column type","enum":["STRING","BYTES","INTEGER","INT64","FLOAT","FLOAT64","NUMERIC","BIGNUMERIC","BOOLEAN","BOOL","TIMESTAMP","DATE","TIME","DATETIME","GEOGRAPHY","RECORD","STRUCT","JSON"],"title":"Type","type":"string"},"mode":{"default":"NULLABLE","description":"Column mode","enum":["NULLABLE","REQUIRED","REPEATED"],"title":"Mode","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional description of the column","title":"Description"},"fields":{"anyOf":[{"items":{"$ref":"#/$defs/ColumnDefinition"},"type":"array"},{"type":"null"}],"default":null,"description":"Nested fields for RECORD type columns","title":"Fields"}},"required":["name","type"],"title":"ColumnDefinition","type":"object"},"DelimitedFormat":{"enum":["auto","csv","tsv"],"type":"string"}}},"response":{"properties":{"table_name":{"description":"Created or loaded table name","title":"Table Name","type":"string"},"rows_loaded":{"description":"Number of rows loaded","title":"Rows Loaded","type":"integer"},"format":{"description":"Detected file format","title":"Format","type":"string"},"replaced_existing":{"description":"Whether an existing table was replaced","title":"Replaced Existing","type":"boolean"}},"required":["table_name","rows_loaded","format","replaced_existing"],"title":"TablesLoadProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"tables_query","name":"Tables Query","alias":"TablesQuery","aliases":[],"description_short":"Query any table in the data model with BigQuery Standard SQL syntax. Always prefix tables with \"catalog.\" (ex: catalog.crawl_pages_20251201).","description_long":"Query any data-model table with\n    BigQuery Standard SQL syntax. Always prefix tables with \"catalog.\" (for example,\n    catalog.crawl_pages_20251201).\n\n    The following query-string functions are supported:\n    - query_string_keys(input): returns ARRAY<STRING> with query-string keys.\n    - query_string_params(input): returns\n      ARRAY<STRUCT<key STRING, value STRING>> with query-string key/value pairs.\n    - remove_query_string(url, keys): removes URL query-string parameters whose keys\n      are in an ARRAY<STRING>. It removes the \"?\" when no parameter remains.\n\n    The parsing functions accept a raw query string with or without a leading \"?\",\n    or a complete URL. They preserve parameter order and duplicate keys, ignore\n    empty keys, and do not URL-decode values. remove_query_string accepts a complete URL.\n    For example:\n    SELECT query_string_params(url) FROM catalog.crawl_pages_20251201\n    SELECT remove_query_string(url, ['bar']) FROM catalog.crawl_pages_20251201\n    ","description_tool_prompt":"Query any table in the data model with BigQuery Standard SQL syntax.\nAlways prefix tables with \"catalog.\" (ex: catalog.crawl_pages_20251201).\n\nCrawl tables exist in two flavours: SiteCrawler (catalog.crawl_pages_<crawl>) and AlertPanel (catalog.alert_panel_crawl_pages_<crawl>). AlertPanel crawls only cover a small subset of URLs, so use the SiteCrawler table by default - including when picking the most recent crawl - and only use an alert_panel_ table when AlertPanel data is explicitly requested.\n\nSupported query-string functions:\n- query_string_keys(input): returns ARRAY<STRING> with query-string keys.\n- query_string_params(input): returns ARRAY<STRUCT<key STRING, value STRING>> with query-string key/value pairs.\n- remove_query_string(url, keys): removes parameters whose key is included in an ARRAY<STRING> from a complete URL, and removes '?' when none remain.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"query":{"description":"BigQuery SQL query to execute","title":"Query","type":"string"},"max_results":{"default":10000,"description":"Maximum number of results to return","maximum":10000,"minimum":1,"title":"Max Results","type":"integer"}},"required":["query"]},"response":{"properties":{"fields":{"description":"Field definitions with name and type","items":{"additionalProperties":{"type":"string"},"type":"object"},"title":"Fields","type":"array"},"results":{"description":"Query execution results as list of lists","items":{"additionalProperties":true,"type":"object"},"title":"Results","type":"array"}},"required":["fields","results"],"title":"TablesQueryProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"tables_schema","name":"Tables Schema","alias":"TablesSchema","aliases":[],"description_short":"Agent that retrieves the schema (field names and types) for a given table","description_long":"List all fields from a given table, including enum values when known.","description_tool_prompt":"List all fields (names, types, and enum values when known) from a given table. When a field has `enum`, use those values in filters. If `bitmask` is true, test nonzero flags with `column & value != 0` (values are combinable); for a zero/no-flags value, use `column = 0`.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"table_name":{"description":"Name of the table to get schema for. Wildcard not allowed.","title":"Table Name","type":"string"}},"required":["table_name"]},"response":{"$defs":{"TableField":{"properties":{"name":{"title":"Name","type":"string"},"type":{"title":"Type","type":"string"},"mode":{"title":"Mode","type":"string"},"fields":{"anyOf":[{"items":{"$ref":"#/$defs/TableField"},"type":"array"},{"type":"null"}],"default":null,"title":"Fields"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional documentation for this field","title":"Description"},"enum":{"anyOf":[{"items":{"$ref":"#/$defs/TableFieldEnumValue"},"type":"array"},{"type":"null"}],"default":null,"description":"Known discrete values for this field. Each entry has value, name, and optional extra. Absent when the field is not an enum.","title":"Enum"},"bitmask":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"If true, enum values are combinable flags. Test a nonzero flag with `column & value != 0`; for a zero/no-flags value, use `column = 0`.","title":"Bitmask"}},"required":["name","type","mode"],"title":"TableField","type":"object"},"TableFieldEnumValue":{"description":"One known discrete value of a table field (regular enum or bitmask flag).","properties":{"value":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Value"},"name":{"title":"Name","type":"string"},"extra":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Extra"}},"required":["value","name"],"title":"TableFieldEnumValue","type":"object"}},"properties":{"table_name":{"description":"Name of the table","title":"Table Name","type":"string"},"fields":{"description":"List of field definitions with name, type, and enum values when known","items":{"$ref":"#/$defs/TableField"},"title":"Fields","type":"array"},"found":{"description":"Whether the table was found in the available tables","title":"Found","type":"boolean"}},"required":["table_name","fields","found"],"title":"TablesSchemaProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"tables_text_to_sql","name":"Tables Text To Sql","alias":"TablesTextToSql","aliases":[],"description_short":"Convert natural language to SQL queries","description_long":"\n    This agent converts natural language descriptions into BigQuery SQL query.\n\n    You can optionally execute the generated query and get results directly.\n    ","description_tool_prompt":"\n    This agent converts natural language descriptions into BigQuery SQL query.\n\n    You can optionally execute the generated query and get results directly.\n    ","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{"reasoning_effort":{"default":"low","description":"Thinking level for the LLM: 'low' for simple queries, 'high' for complex ones","enum":["low","high"],"title":"Reasoning Effort","type":"string"},"run_query":{"default":true,"description":"If true, execute the generated query and return results. If false, only return the generated SQL.","title":"Run Query","type":"boolean"},"allow_empty_results":{"default":true,"description":"If true, a query returning zero rows is a valid answer. Set it to false in workflows, so the node fails (and retries) instead of passing empty data to the downstream nodes.","title":"Allow Empty Results","type":"boolean"}},"required":[]},"item":{"type":"object","properties":{"text_query":{"description":"Natural language description of the data you want to query. Avoid writing SQL syntax.","title":"Text Query","type":"string"},"max_rows":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of rows to return. Enforces a LIMIT in the SQL and caps results at the API level.","title":"Max Rows"},"output_fields":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional. Restrict the query output to exactly these column names and no others. Keeps downstream steps stable while the agent stays agnostic. Other columns may still be used in WHERE/ORDER BY/GROUP BY.","title":"Output Fields"}},"required":["text_query"]},"response":{"properties":{"query":{"description":"The generated BigQuery SQL query","title":"Query","type":"string"},"fields":{"description":"Field definitions with name and type (empty if run_query=false)","items":{"additionalProperties":{"type":"string"},"type":"object"},"title":"Fields","type":"array"},"results":{"description":"Query execution results (empty if run_query=false)","items":{"additionalProperties":true,"type":"object"},"title":"Results","type":"array"}},"required":["query","fields","results"],"title":"TablesTextToSqlProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"template_generator","name":"Template Generator","alias":"TemplateGenerator","aliases":[],"description_short":"Generate a template based on HTML structure and available variables.","description_long":"Generate a template based on HTML structure and available variables.","description_tool_prompt":"Generate a template based on HTML structure and available variables.","source":null,"conversation_examples":[],"tags":[],"available_in_chat":false,"available_in_deepthink":false,"available_in_mcp":null,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"An example URL of the page to generate the template for.","title":"Example URL","type":"string"},"template_engine":{"default":"nunjucks","description":"Template engine to target (nunjucks or liquid)","enum":["nunjucks","liquid"],"title":"Template Engine","type":"string"},"element_type":{"default":"customHtml","description":"Type of element for which to generate the template. Can be one of: title, description, h1, canonical or customHtml.","enum":["title","description","h1","canonical","customHtml"],"title":"Element type","type":"string"},"variables_description":{"description":"Describe the available variables and their structure.","format":"textarea","title":"Variables Description","type":"string"},"template_requirements":{"description":"Describe what you want to generate in the template.","format":"textarea","title":"Template Requirements","type":"string"}},"required":["url","variables_description","template_requirements"]},"response":{"properties":{"template":{"description":"The template code","title":"Template","type":"string"},"explanation":{"description":"A brief explanation of the template","title":"Explanation","type":"string"}},"required":["template","explanation"],"title":"TemplateGeneratorProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false},{"id":"url_keywords","name":"Keywords performance for URL (From Google Search Console)","alias":"URLKeywords","aliases":[],"description_short":"Get GSC keywords for a given URL.","description_long":"\n    Get Google Search Console keyword performance metrics for a specific URL (i.e., clicks, impressions, position).\n    ","description_tool_prompt":"\n    Get Google Search Console keyword performance metrics for a specific URL (i.e., clicks, impressions, position).\n    ","source":"Google Search Console API","conversation_examples":["Show me the keywords performance for https://www.example.org/p/5866-toothbrush","What is the top keyword for https://www.example.org/p/5866-toothbrush in the last 30 days?"],"tags":["keywords","google"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{},"required":[]},"item":{"type":"object","properties":{"url":{"description":"The URL to analyze.","title":"Url","type":"string"},"period":{"description":"Time period to analyze.","enum":["last_7d","last_30d","last_90d"],"title":"Time Period","type":"string"}},"required":["url","period"]},"response":{"$defs":{"KeywordPerformance":{"properties":{"keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The keyword.","title":"Keyword"},"clicks":{"description":"Number of clicks.","title":"Clicks","type":"number"},"impressions":{"description":"Number of impressions.","title":"Impressions","type":"number"},"position":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Average position.","title":"Position"},"ctr":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Click-through rate (CTR).","title":"Ctr"},"estimated_revenue":{"description":"Estimated revenue for this keyword.","title":"Estimated Revenue","type":"number"},"predictions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Predicted metrics for different devices.","title":"Predictions"},"smart_keyword_in_metadata":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether the keyword is present in the page title or description.","title":"Smart Keyword In Metadata"}},"required":["keyword","clicks","impressions","position","ctr","estimated_revenue","predictions"],"title":"KeywordPerformance","type":"object"},"ProjectMetadataProcessedItem":{"properties":{"values":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"}]},"description":"Retrieved metadata values","propertyNames":{"enum":["brand_name","website_description","internationalization_strategy","tone_of_voice","currency","revenue_per_visit_desktop","revenue_per_visit_tablet","revenue_per_visit_mobile"]},"title":"Values","type":"object"},"not_set_values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Keys that were requested but not set","title":"Not Set Values"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Message describing the result","title":"Message"}},"required":["values"],"title":"ProjectMetadataProcessedItem","type":"object"}},"properties":{"project_metadata":{"$ref":"#/$defs/ProjectMetadataProcessedItem","description":"Project metadata information."},"period":{"description":"The time period analyzed.","title":"Period","type":"string"},"keywords":{"description":"List of keyword performance metrics.","items":{"$ref":"#/$defs/KeywordPerformance"},"title":"Keywords","type":"array"},"metrics":{"additionalProperties":true,"description":"Top-level metrics for the URL.","title":"Metrics","type":"object"},"estimated_revenue":{"description":"Estimated revenue based on keyword performance.","title":"Estimated Revenue","type":"number"},"estimated_revenue_currency":{"description":"Currency of the estimated revenue.","title":"Estimated Revenue Currency","type":"string"},"predictions_agg":{"additionalProperties":{"additionalProperties":{"type":"number"},"type":"object"},"description":"Aggregated predictions for different devices.","title":"Predictions Agg","type":"object"},"estimated_revenue_comments":{"description":"Comments on how the estimated revenue was calculated.","title":"Estimated Revenue Comments","type":"string"},"keywords_comments":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comments on the keyword performance metrics provided.","title":"Keywords Comments"}},"required":["project_metadata","period","keywords","metrics","estimated_revenue","estimated_revenue_currency","predictions_agg","estimated_revenue_comments"],"title":"URLKeywordsProcessedItem","type":"object"},"has_canvas":true,"open_canvas_automatically":false}]