Exa Search News
exa_search_newsA find-companies News-mode discovery source, used alongside
search_news_events and tavily_search — the News-mode skill owns
the routing (which signals fan out here). Each query retrieves the
top recent news articles matching it, and each article comes back as
pre-extracted company rows (name, domain, one-line event), so unlike
tavily_search there is no article-extraction step. Covers narrative
signals PredictLeads' typed categories miss (AI initiatives,
role-scoped exec changes, plant incidents) and fills its zero-result
gaps on typed events.
Compose queries in positive form describing the event sought, e.g. "manufacturing companies announcing new plant openings in the United States" — one query per signal, all in one call (the tool fans them out in parallel; one tool call is one LLM round). Don't embed exclusions — vector retrieval has no concept of "not", so naming an excluded term biases results towards it.
Each query retrieves the 10 most relevant recent articles. Pass
lookback_days to bound how far back to look (default 30); articles
published before that window are excluded server-side. A news scan
passes the window from its trigger prompt.
Costs 0.5 Sliq credits per query that returns without error, so a batch of 4 queries costs 2 credits; a failed query is free. Free on BYO Exa (a connected Exa key). Soft-fails on insufficient credits: the charge is capped at the remaining balance.
Each company is then checked against criteria, one company at a time,
reading its name and its article's headline and event, and only the
matches come back in companies; the rest come back in rejected as
{name, reason}. It adds a few seconds per ten companies.
When this runs in an agent, every company with a domain is saved to the
Output tab as a company row (deduped by domain) with its verdict,
carrying its article in data.signals — except a company whose domain
is the article's own host, which is often the outlet's domain misread as
the company's. The rejected ones are hidden from the list's default
view.
Dict with companies, the matching companies; rejected, the
companies the check turned down, as {name, reason}; count, every
company found, rejected ones included; and created_identifiers, the
domains of matching companies this call newly added to the list.
Each company row is {company_name, domain, event, headquarters, source_url, title, published_at, query, verdict, verdict_reason} —
verdict is 'qualified', 'unclear' when the row says too little to
judge, or null when the check couldn't run; domain is
lowercased-bare or None when the article didn't reveal one (resolve
those downstream before recording), event is a one-line
description of what happened, source_url/title/published_at
identify the article, and query names the originating query. Rows
are deduped by domain across queries (first article wins).
If every query failed with an upstream error and nothing landed,
also exa_available: False plus a human-readable error — a
source outage, NOT a genuinely empty feed. Partial failure (some
queries errored, others returned) stays silent and reports only
the companies.
On insufficient Sliq credits the call is refused before running —
it raises InsufficientCreditsError instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | One positive-form news query per signal. Pass a list of one for a single-signal lookup. | |
| agent_id | No | Optional — a specific agent to save the companies into. Omit it to use the running agent, which is the usual case. | |
| criteria | Yes | What makes a company a match for this search, in plain words: the event it must show and the kind of company (e.g. "A manufacturer that itself opened or is opening a new US plant"). Each company is checked against it, and the check reads nothing else of your instructions, so make it no narrower than what this call searches for. A role that is part of the signal belongs here; who you'll contact at a matching company doesn't, since the check reads that as a rule about which companies match. | |
| list_name | No | Short kebab slug naming the Output-tab list bucket. Absent, companies land in the 'default' list. | |
| on_behalf_of | No | An agency client's email, from list_agency_clients, to run this call in that client's account: their agents, settings, connected accounts, and credits. Omit it to act on your own account. | |
| lookback_days | No | Days of news history to scan (default 30). |