Research Agent API · /research
Run a research agent with cited answers in a single API call.
Ask one question and get cited answers back, so your users can verify every claim without building or maintaining a research pipeline.
agent.research · mode: balanced
Synthesized Answer
Regional banks face intensifying capital requirements under the revised Basel III “endgame” rules1, alongside heightened scrutiny of commercial real-estate concentration following recent supervisory guidance2. Liquidity-coverage expectations have also tightened for institutions above the $100B threshold3 |
Basel III Endgame: Implications for Regional Banks
federalreserve.gov/publications/basel-iii-endgame
Interagency Guidance on CRE Concentration Risk
occ.gov/news/bulletins/cre-concentration-2025
2025 Outlook: U.S. Regional Banking Sector
spglobal.com/ratings/us-regional-banking-2025
Trust
Give your users answers they can actually trust.
Answers include cited source URLs your users can verify, so you avoid confident-sounding hallucinations and "summarized the first result" outputs. They can inspect where conclusions came from.
Features
- ✓Citations + source URLs returned inline with every claim
- ✓Multi-source synthesis, not a summary of the first result
- ✓SSE streaming so users watch it work in real time, not a spinning wheel
import Tabstack from '@tabstack/sdk'
const client = new Tabstack()
const stream = await client.agent.research({
query: 'What are the key regulatory risks facing regional banks in 2025?',
mode: 'fast'
})
try {
for await (const event of stream) {
if (event.event === 'complete') {
const result = event.data as {
report?: string
pages?: Array<{ url: string; claims?: unknown[] }>
}
console.log(result.report) // synthesized answer
for (const page of result.pages ?? []) {
console.log(page.url, page.claims) // citations by source page
}
}
if (event.event === 'done') break
}
} catch (err) { console.error(err) }// Before: weeks of orchestration code
// source selection logic → replaced
// synthesis prompting → replaced
// citation validator → replaced
// streaming infrastructure → replaced
// After: one call
const stream = await client.agent.research({ query: 'Your question here' })
try {
for await (const event of stream) {
if (event.event === 'complete') { console.log(event.data.report) }
if (event.event === 'done') break
}
} catch (err) { console.error(err) }Pipeline
Ship a research tool without building the research pipeline.
Give it a question and it finds sources, reads them, synthesizes an answer, and returns citations. Source selection, synthesis prompting, citation formatting, and streaming are all handled inside a single call.
Features
- ✓/research delivers the entire research pipeline in one endpoint
- ✓Source selection, synthesis, citation handling all inside the call
- ✓No orchestration code in your codebase
Live web
Answer from the live web, not a stale index.
Most research APIs answer from pre-indexed data. /research fetches and reads live pages at request time, so your users get current sources, not yesterday's crawl.
Features
- ✓Live retrieval at request time from the open web
- ✓Better coverage for niche and newly published sources
- ✓Choose mode: "fast" for speed or mode: "balanced" for deeper synthesis
Pre-indexed API
- ×Answers from a stale crawled corpus
- ×Misses niche & just-published sources
- ×Locked to a pre-defined topic set
Yesterday's Index
/research
live- ✓Fresh data from the live web
- ✓Niche sources & content published today
- ✓Works on any question you send
In practice
How to build an AI research agent with cited answers
Call the /research endpoint with a question. Tabstack selects sources, reads the live pages, synthesizes the findings, and returns a report with cited pages and source URLs. Progress streams over Server-Sent Events, so your users watch the research happen without you building or maintaining a research pipeline.
Your application sends one question and reads one result. Source selection, synthesis, citation handling, and streaming all happen inside the call.
Example input
import Tabstack from '@tabstack/sdk'
const client = new Tabstack()
const stream = await client.agent.research({
query: 'What are the EU AI Act compliance deadlines?',
mode: 'fast'
})
try {
for await (const event of stream) {
if (event.event === 'complete') {
const { report, metadata } = event.data
// the synthesized answer
console.log(report)
// the sources behind the claims
for (const page of metadata.citedPages ?? []) {
console.log(page.url, page.claims)
}
}
}
} catch (err) { console.error(err) }Example result
{
"report": "The deadlines fall in three phases...",
"metadata": {
"totalPagesAnalyzed": 14,
"citedPages": [
{
"id": "src-1",
"url": "https://example.com/ai-act-timeline",
"title": "EU AI Act Timeline",
"claims": [
"Obligations phase in on separate dates"
],
"sourceQueries": [
"EU AI Act compliance deadlines"
]
}
]
}
}Use this when
- ✓You have a question and do not yet know which pages hold the answer.
- ✓Your users need to inspect the sources behind an answer, not just read it.
- ✓The answer depends on what is published now. For a URL you already have, use /extract/json; for a task that has to click through a page, use /automate.
The response above shows the shape of the complete event. The report, the cited pages, and the page count change with the question and with what is published when you call it.
Who builds on this
Teams that rely on cited, sourced answers.
Legal tech
Citation trail is non-negotiable. Wrong answers are a liability.
Financial services
Every data point needs a traceable source.
Sales intelligence
Reps trust a brief when they can see where it came from.
Competitive intelligence
Sourced change summaries, not raw diffs.
Mozilla-backed
Privacy, Transparency, and Control
When you build on /research, your users' questions and the data behind every answer stay yours. Tabstack is a Mozilla-backed platform, and we handle live-web research responsibly, so you can ship features your users actually trust.
Private by default.Queries and retrieved pages are used to build your answer and support you, then purged. Never sold, never used to train models.
Verifiable by design.Every answer returns source URLs and inline citations, so you and your users can confirm exactly where each claim came from.
Yours to control.You set the mode, scope, and depth of every call. No retained corpus, no lock-in, just clean, cited data you own.
See exactly how we source and handle data in the documentation.
Mozilla ManifestoPricing & Plans
All prices in USD.
Starter
100,000 credits included
For tinkerers & hobbyists who want to simply connect their systems to the internet.
Get StartedTeam
500,000 credits included
Low-latency, predictable cost automation so you can focus on your core product.
Get StartedPro
3,000,000 credits included
For teams deploying and managing production workloads efficiently at scale.
Get StartedEnterprise Plan
Need Custom Pricing?
Custom API quotas, dedicated support, and SLAs for high-volume teams.
Cost per action
Every endpoint bills in credits. Extract and Generate are a single action per call. Automate and Research run a variable number of actions per task, so cost scales with the work they do.
- Extract (Markdown)10 credits
- Extract (JSON)50 credits
- Generate100 credits
- Automate100 credits
- Research (Fast)250 credits
- Research (Balanced)350 credits
From the developers
“I was burning thousands of credits on Tavily for results that still required cleanup. Tabstack hands back cited answers. I stopped thinking about the retrieval layer entirely.”
Developer Tools Analyst
Tech StackupsStart researching in minutes.
Start free with your first 10,000 credits included, and skip building a research pipeline.