{ "kind": "open-flow-workflow", "version": 1, "name": "Web Search Results", "content": { "modelVersion": 14, "document": { "bindings": {}, "graph": { "nodes": { "n_2c65e5aea31a9e61": { "name": "Search query", "kind": "start", "inputDefs": [ { "jsonSchema": { "type": "string", "minLength": 1 }, "nullable": false, "handle": "query" } ] }, "n_4621d4b2a6749d58": { "inputs": { "query": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_2c65e5aea31a9e61", "output": "query" } ] } }, "name": "Validate search query", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "type": "string" }, "nullable": false, "handle": "query" } ], "outputs": [ { "jsonSchema": { "type": "string", "minLength": 1 }, "nullable": false, "handle": "query" } ], "name": "Validate search query", "moduleId": "n_9d4a64015f0b50d3", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_5d4c4ff092466ed5": { "inputs": { "query": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_4621d4b2a6749d58", "output": "query" } ] }, "max_results": { "kind": "value", "value": 5 }, "search_depth": { "kind": "value", "value": "basic" }, "topic": { "kind": "value", "value": "general" }, "auto_parameters": { "kind": "value", "value": false }, "include_answer": { "kind": "value", "value": false }, "include_raw_content": { "kind": "value", "value": false }, "include_images": { "kind": "value", "value": false } }, "name": "Search the web with Tavily", "kind": "task", "task": { "inputs": [ { "description": "The search query to execute with Tavily.", "jsonSchema": { "type": "string", "minLength": 1, "description": "The search query to execute with Tavily." }, "nullable": false, "handle": "query" }, { "description": "Controls the latency-versus-relevance tradeoff for Tavily Search.", "jsonSchema": { "type": "string", "enum": [ "advanced", "basic", "fast", "ultra-fast" ], "description": "Controls the latency-versus-relevance tradeoff for Tavily Search." }, "nullable": true, "handle": "search_depth", "value": null }, { "description": "The maximum number of chunks to return per source.", "jsonSchema": { "type": "integer", "minimum": 1, "maximum": 3, "description": "The maximum number of chunks to return per source." }, "nullable": true, "handle": "chunks_per_source", "value": null }, { "description": "The maximum number of search results to return.", "jsonSchema": { "type": "integer", "minimum": 0, "maximum": 20, "description": "The maximum number of search results to return." }, "nullable": true, "handle": "max_results", "value": null }, { "description": "The search category used by Tavily.", "jsonSchema": { "type": "string", "enum": [ "general", "news", "finance" ], "description": "The search category used by Tavily." }, "nullable": true, "handle": "topic", "value": null }, { "description": "The date range shortcut used to filter results.", "jsonSchema": { "type": "string", "enum": [ "day", "week", "month", "year", "d", "w", "m", "y" ], "description": "The date range shortcut used to filter results." }, "nullable": true, "handle": "time_range", "value": null }, { "description": "Only return results after this YYYY-MM-DD date.", "jsonSchema": { "type": "string", "format": "date", "description": "Only return results after this YYYY-MM-DD date." }, "nullable": true, "handle": "start_date", "value": null }, { "description": "Only return results before this YYYY-MM-DD date.", "jsonSchema": { "type": "string", "format": "date", "description": "Only return results before this YYYY-MM-DD date." }, "nullable": true, "handle": "end_date", "value": null }, { "description": "Whether to include a Tavily-generated answer.", "jsonSchema": { "anyOf": [ { "type": "boolean", "description": "Whether to include an answer." }, { "type": "string", "enum": [ "basic", "advanced" ], "description": "The answer detail level." } ], "description": "Whether to include a Tavily-generated answer." }, "nullable": true, "handle": "include_answer", "value": null }, { "description": "Whether to include raw content from each result.", "jsonSchema": { "anyOf": [ { "type": "boolean", "description": "Whether to include raw content." }, { "type": "string", "enum": [ "markdown", "text" ], "description": "The raw content format." } ], "description": "Whether to include raw content from each result." }, "nullable": true, "handle": "include_raw_content", "value": null }, { "description": "Whether to include top-level and per-result images.", "jsonSchema": { "type": "boolean", "description": "Whether to include top-level and per-result images." }, "nullable": true, "handle": "include_images", "value": null }, { "description": "Whether to include descriptions for returned images.", "jsonSchema": { "type": "boolean", "description": "Whether to include descriptions for returned images." }, "nullable": true, "handle": "include_image_descriptions", "value": null }, { "description": "Whether to include favicons for returned results.", "jsonSchema": { "type": "boolean", "description": "Whether to include favicons for returned results." }, "nullable": true, "handle": "include_favicon", "value": null }, { "description": "Domains that Tavily should include in the search results.", "jsonSchema": { "type": "array", "items": { "type": "string", "description": "A domain name to include." }, "minItems": 1, "description": "Domains that Tavily should include in the search results." }, "nullable": true, "handle": "include_domains", "value": null }, { "description": "Domains that Tavily should exclude from the search results.", "jsonSchema": { "type": "array", "items": { "type": "string", "description": "A domain name to exclude." }, "minItems": 1, "description": "Domains that Tavily should exclude from the search results." }, "nullable": true, "handle": "exclude_domains", "value": null }, { "description": "A country name used to boost results for general searches.", "jsonSchema": { "type": "string", "description": "A country name used to boost results for general searches." }, "nullable": true, "handle": "country", "value": null }, { "description": "Whether Tavily should auto-configure search parameters.", "jsonSchema": { "type": "boolean", "description": "Whether Tavily should auto-configure search parameters." }, "nullable": true, "handle": "auto_parameters", "value": null }, { "description": "Whether Tavily should require quoted exact phrases to match exactly.", "jsonSchema": { "type": "boolean", "description": "Whether Tavily should require quoted exact phrases to match exactly." }, "nullable": true, "handle": "exact_match", "value": null }, { "description": "Whether to include credit usage details in the response.", "jsonSchema": { "type": "boolean", "description": "Whether to include credit usage details in the response." }, "nullable": true, "handle": "include_usage", "value": null } ], "outputs": [ { "description": "The search query that was executed.", "jsonSchema": { "type": "string", "description": "The search query that was executed." }, "nullable": false, "handle": "query" }, { "description": "A Tavily-generated answer for the query.", "jsonSchema": { "type": "string", "description": "A Tavily-generated answer for the query." }, "nullable": true, "handle": "answer" }, { "description": "Query-related images returned by Tavily.", "jsonSchema": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "The image URL." }, "description": { "type": "string", "description": "A short description for the image." } }, "required": [ "url" ], "additionalProperties": true, "description": "A top-level image item returned by Tavily." }, "description": "Query-related images returned by Tavily." }, "nullable": true, "handle": "images" }, { "description": "The ranked search results returned by Tavily.", "jsonSchema": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string", "description": "The source title." }, "url": { "type": "string", "description": "The source URL." }, "content": { "type": "string", "description": "The extracted snippet or summary for the source." }, "score": { "type": "number", "description": "The relevance score of the source." }, "raw_content": { "anyOf": [ { "type": "string", "description": "A union variant." }, { "const": null, "description": "A union variant." } ], "description": "The cleaned page content when include_raw_content is enabled." }, "favicon": { "anyOf": [ { "type": "string", "description": "A union variant." }, { "const": null, "description": "A union variant." } ], "description": "The favicon URL for the result when include_favicon is enabled." }, "images": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "The image URL." }, "description": { "type": "string", "description": "A short description for the image." } }, "required": [ "url" ], "additionalProperties": true, "description": "An image item returned for this result." }, "description": "Images extracted from this result." }, "published_date": { "type": "string", "description": "The published date for the result when Tavily can determine it." } }, "required": [ "title", "url", "content", "score" ], "additionalProperties": true, "description": "A ranked Tavily search result." }, "description": "The ranked search results returned by Tavily." }, "nullable": false, "handle": "results" }, { "description": "The total response time reported by Tavily.", "jsonSchema": { "anyOf": [ { "type": "number", "description": "A union variant." }, { "type": "string", "description": "A union variant." } ], "description": "The total response time reported by Tavily." }, "nullable": false, "handle": "response_time" }, { "description": "Auto-selected parameters returned by Tavily when enabled.", "jsonSchema": { "type": "object", "additionalProperties": { "description": "A record value." }, "description": "Auto-selected parameters returned by Tavily when enabled." }, "nullable": true, "handle": "auto_parameters" }, { "description": "Credit usage details returned by Tavily.", "jsonSchema": { "type": "object", "properties": { "credits": { "type": "number", "description": "The number of API credits consumed by the request." } }, "additionalProperties": true, "description": "Credit usage details returned by Tavily." }, "nullable": true, "handle": "usage" }, { "description": "A unique request identifier for Tavily support and debugging.", "jsonSchema": { "type": "string", "description": "A unique request identifier for Tavily support and debugging." }, "nullable": false, "handle": "request_id" } ], "name": "Search the web with Tavily", "executor": { "kind": "connector", "action": "tavily.search" } } }, "n_89fc45d96ae6546d": { "inputs": { "results": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_5d4c4ff092466ed5", "output": "results" } ] } }, "name": "Read titles, links and snippets", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "type": "array" }, "nullable": false, "handle": "results" } ], "outputs": [ { "jsonSchema": { "type": "array", "maxItems": 5, "items": { "type": "object", "properties": { "title": { "type": "string" }, "url": { "type": "string" }, "snippet": { "type": "string" } }, "required": [ "title", "url", "snippet" ], "additionalProperties": false } }, "nullable": false, "handle": "results" } ], "name": "Read titles, links and snippets", "moduleId": "n_ee8784f01de5c1fc", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_f141c384e2f4d36a": { "name": "Ranked web search results", "kind": "outputs", "outputDefs": [ { "jsonSchema": { "type": "array", "maxItems": 5, "items": { "type": "object", "properties": { "title": { "type": "string" }, "url": { "type": "string" }, "snippet": { "type": "string" } }, "required": [ "title", "url", "snippet" ], "additionalProperties": false } }, "nullable": false, "handle": "results" } ], "outputMappings": { "results": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_89fc45d96ae6546d", "output": "results" } ] } } } }, "edges": [ { "source": "n_2c65e5aea31a9e61", "target": "n_4621d4b2a6749d58" }, { "source": "n_4621d4b2a6749d58", "target": "n_5d4c4ff092466ed5" }, { "source": "n_5d4c4ff092466ed5", "target": "n_89fc45d96ae6546d" }, { "source": "n_89fc45d96ae6546d", "target": "n_f141c384e2f4d36a" } ] } }, "modules": { "n_9d4a64015f0b50d3": { "name": "Validate search query", "imports": [], "source": "export default function ({ query }) {\n if (typeof query !== 'string' || !query.trim()) throw new Error('Enter a nonempty search query.');\n return { query: query.trim() };\n}\n" }, "n_ee8784f01de5c1fc": { "name": "Read titles, links and snippets", "imports": [], "source": "export default function ({ results }) {\n if (!Array.isArray(results) || results.length > 5) throw new Error('Expected at most five Tavily search results.');\n return { results: results.map(result => {\n if (!result || typeof result !== 'object' || Array.isArray(result) || typeof result.title !== 'string' || typeof result.url !== 'string' || typeof result.content !== 'string') throw new Error('A search result is missing its title, URL or snippet.');\n return { title: result.title, url: result.url, snippet: result.content };\n }) };\n}\n" } } }, "presentation": { "designer": { "version": 1, "flow": { "direction": "vertical" } } } }