Use case
Autonomous research agents
Teams building agents that investigate a topic across many sources.
The problem, and the approach
The problem
- The naive research loop — search, read, identify gaps, search again — spends most of its budget on intermediate results the agent reads once and discards.
- It also fails in a characteristic way: the agent invents follow-up queries from its own vocabulary rather than the corpus's, and drifts away from the material.
- And it frequently does not stop, because nothing tells it when a line of enquiry is exhausted.
The approach
- authorities triages an unfamiliar field by graph centrality, so the agent starts from what the field treats as foundational rather than what matched its first query.
- dossier returns an entity brief — mentions, sources ranked by authority, co-mentioned entities — replacing roughly ten searches and a manual merge.
- related follows edges the corpus already contains, so the next step comes from the material rather than from the agent's guess.
- limit=0 with facets is a cheap coverage probe: totals and distribution with no results, enough to decide whether an angle is worth pursuing.
The parameters that matter
| Parameter | Value | Why |
|---|---|---|
authorities?topic= | the field | Start from canonical sources rather than keyword matches. |
dossier?entity= | each key entity | One call per entity instead of ten searches. |
related?hops= | 2 | Follow the thread without unbounded traversal. |
limit | 0 | Probe coverage before committing to a line of enquiry. |
# Triage, then traverse
curl -H "x-api-key: $UNLOB_API_KEY" "https://api.unlob.com/authorities?topic=science&limit=10"
curl -H "x-api-key: $UNLOB_API_KEY" "https://api.unlob.com/dossier?entity=Common+Crawl"
curl -H "x-api-key: $UNLOB_API_KEY" "https://api.unlob.com/related?id=p:8f2c9a&hops=2"Why the search-read-search loop does not converge
The naive loop has no stopping condition that relates to the material. The agent decides it has enough when its own summary stops changing, which is a property of the model rather than of the corpus, and it can be reached long before the field has been covered or long after.
It also drifts. Each follow-up query is generated from the vocabulary of the passages already read, so the agent progressively narrows onto the terminology of whichever sources it happened to see first. On an unfamiliar field this is how a research run ends up confidently thorough about one school of thought and unaware of two others. Starting from centrality rather than from a keyword match inverts that: the first thing the agent sees is what the field itself treats as load-bearing.
Give the traversal a budget and an exit
Graph operations are cheap individually and unbounded collectively — related at two hops from a dozen seeds is a lot of calls, and an agent with no explicit budget will happily spend them. Set a traversal budget in calls rather than in time, and make exhausting it a visible outcome rather than a silent truncation.
The cheapest exit condition is a coverage probe. Asking for counts and facet distribution with no results at all costs almost nothing and answers the question the agent actually has — is there enough here to be worth a full retrieval — before the budget is committed. Used at each branch, it turns an open-ended traversal into a sequence of small, reversible decisions, and it means an agent that stops can say why it stopped.
Where this is not the right tool
- Research agents multiply calls quickly, and a graph traversal costs 2 credits. Monitor /account against your monthly credits, and give the agent an explicit traversal budget.
- Entity resolution is imperfect. Ambiguous names may merge distinct entities or split one.
Frequently asked questions
How do I stop a research agent looping forever?
Give it a budget in traversals and tokens and a rule to assemble and answer when either is exhausted. Use limit=0 probes so it can check coverage cheaply before opening a new line.
How many calls does a research task take?
With graph traversal, typically a triage call, two or three traversals, a corroboration check per claim, and one context assembly — against twenty or more searches in a naive loop.
Build it on the free tier
10,000 credits a month, no card. Every parameter above works on every plan.