Deep Research Agent

Multi-source research dossier on any company, market, or person, pulling from web, news, filings, and forums into a fact-checked memo.

Multi-source research dossier on any company, market, or person, pulling from web, news, filings, and forums into a fact-checked memo. A junior analyst takes 2 days to produce one dossier and ships it with single-sourced claims. This produces a stronger memo in 8 minutes that refuses to lie.

This is the whole blueprint, nothing held back: the model, the tools, the exact prompt, the source on disk, and the setup. Everything you need to run Deep Research Agent yourself is on this page, and it deploys in an afternoon.

See it running

Agents like Deep Research Agent run behind a mission control board that runs the whole job. Here is that pattern, live: every action stays visible and reviewable. Click into it.

crescendo.51ultron.com/kits/mission-control

What it does

Deep Research Agent handles the work end to end:

  • Search across Exa, Brave, news, and forums in a single workflow
  • Synthesize a structured dossier with every claim tied to a source URL
  • Fact-check quantitative claims against a second source automatically
  • Refuse to publish dossiers where too many claims are single-sourced

The anatomy

An agent is a composition, not a prompt: a model, the tools it is allowed to call, the integrations that give those tools reach, and the rules that keep it honest. Here is Deep Research Agent on one card.

Deep Research Agentblueprint
Model
claude-sonnet-4-6
Tools
web_searchfetch_urlsynthesize_dossierfact_check
Integrations
Exa.aiBrave SearchZod
Guardrails
every claim must cite at least one source url. uncited claims must be removed.; conflicting sources must be surfaced explicitly, not averaged away

The instructions

Every run is governed by this prompt. It is short on purpose: enough to make Deep Research Agent reliable, not so much that it can misread itself. Copy it as a starting point for any agent you build.

Deep Research Agent
You are a deep research analyst. You produce dossiers that hold up under scrutiny. WORKFLOW: 1. Call web_search across multiple providers to cast a wide net. 2. Call fetch_url on the top sources to extract full text. 3. Call synthesize_dossier to produce a structured memo with claims and citations. 4. Call fact_check on every quantitative claim (dollar amounts, dates, headcounts). RULES: - Every claim must cite at least one source URL. Uncited claims must be removed. - Conflicting sources must be surfaced explicitly, not averaged away. - Quantitative claims must be fact-checked against a second source or marked as single-sourced. - Refuse to publish a dossier where more than 30% of claims are single-sourced.

The source, on disk

Three files carry the whole agent: the definition with its tools, the environment it expects, and the setup. Walk them.

deep-research-agent/deep-research-agent.ts1.4 KB
1import { agent, tool } from "@agent-sdk"
2import Exa from "exa-js"
3import { z } from "zod"
4
5const searchInput = z.object({
6 query: z.string(),
7 freshness: z.enum(["day", "week", "month", "year", "any"]).default("any"),
8})
9
10export default agent({
11 model: "claude-sonnet-4-6",
12 permissionMode: "bypassPermissions",
13 maxTurns: 35,
14 systemPrompt: `...`, // see System Prompt section above
15 tools: {
16 web_search: tool({
17 description: "Search across Exa and Brave",
18 inputSchema: searchInput,
19 execute: async ({ query, freshness }) => {
20 const exa = new Exa(process.env.EXA_API_KEY)
21 // also call Brave Search
22 return exa.search(query, { numResults: 10, contents: { text: true } })
23 },
24 }),
25 fetch_url: tool({
26 description: "Fetch full text of a URL",
27 inputSchema: z.object({ url: z.string().url() }),
28 execute: async ({ url }) => {
29 // GET + readability extract
30 },
31 }),
32 synthesize_dossier: tool({
33 description: "Produce structured memo with claims + citations",
34 inputSchema: z.object({ sources: z.array(z.any()) }),
35 execute: async ({ sources }) => {
36 // returns markdown dossier
37 },
38 }),
39 fact_check: tool({
40 description: "Verify quantitative claims against second sources",
41 inputSchema: z.object({ claim: z.string() }),
42 execute: async ({ claim }) => {
43 // returns { verified, evidence, conflicts }
44 },
45 }),
46 },
47})

The business case

If you run an agency, Deep Research Agent is also a product. It sells into vc associates, m&a teams, strategy consultants, and the numbers work at very small scale.

$3,000

setup you can charge

$480/mo

monthly retainer

4

jobs off your plate

Ship it

The whole install is a handful of commands and the keys from the env file. Run the list, then point Deep Research Agent at real work.

Deploy checklist

0 of 4

That is the entire blueprint: one model, 4 tools, and a prompt. Built by hand it costs you an afternoon. Inside Ultron it costs you a sentence, because you can build this exact agent in the workforce and watch it run before you commit to anything.

Build Deep Research Agent in Ultron

1
Describe what you want

Start from this blueprint or your own words. Ultron reads the intent and picks the tools.

2
It builds the agent

The model, the tools, the prompt, the console. Assembled in front of you, nothing to wire.

3
Watch it run

Test it live in the chat, then put it to work. You review what it does, it does the rest.

Keep reading