New274+ blocks and 249+ tools are now fully documented
Agent Workflows

Deep Research Agent

A workflow that searches the web and academic sources in parallel, then synthesizes the findings into a cited research brief with structured output.

What you'll build

A workflow that takes a research question, searches multiple sources in parallel, and returns a structured, cited brief — the kind of task you'd otherwise do by hand across a dozen browser tabs.

Trigger: a chat message or API call carrying the question in {{starter.input}}.

The workflow

Starter
chat trigger
Parallel
search concurrently
Tavily · web searchArXiv · papers
Agent
synthesize + cite
Response
structured JSON
Both searches run in parallel, then the agent synthesizes a cited brief.

Build it

Starter — accept the question

Add a Starter block and set its trigger to Chat (or API). The user's question arrives as {{starter.input}}.

Parallel — search two sources at once

Add a Parallel block so the web and academic searches run concurrently instead of one-after-the-other. Inside it, place:

  • a Tavily tool block — AI-optimized web search. Query: {{starter.input}}.
  • an ArXiv tool block — academic papers. Query: {{starter.input}}.

Parallel waits for both branches, then exposes their combined results downstream.

Agent — synthesize with citations

Add an Agent block. Give it a system prompt like:

You are a research analyst. Using ONLY the search results provided, write a concise brief that answers the question. Cite every claim with its source URL. If the sources disagree, say so.

In the user message, pass both result sets:

Question: {{starter.input}}

Web results:
{{parallel.tavily.results}}

Academic results:
{{parallel.arxiv.results}}

Turn on Response Format (structured output) with a schema so the result is machine-readable:

{
  "summary": "string",
  "key_findings": ["string"],
  "sources": [{ "title": "string", "url": "string" }]
}

Response — return the brief

Add a Response block and return {{agent.output}}. Because the agent used structured output, downstream consumers get typed JSON, not free text.

With Response Format on, read the agent's result from {{agent.output}} (the parsed object), not {{agent.content}}. Wiring a downstream block to .content when structured output is enabled is the most common cause of "undefined is not valid JSON".

Make it yours

  • Add more sources. Drop an Exa (neural search) or Perplexity block into the Parallel block — each new branch runs at no extra latency.
  • Go deeper on one result. Add a Firecrawl block after the search to scrape the top URL's full text before synthesis.
  • Let the agent decide. Instead of a fixed Parallel, connect the search tools to the Agent as agent tools and let it choose which to call and when.
  • Swap the model. Any provider works — see the AI Models reference. For long briefs, pick a model with a large context window.