Industry signals
Industry signals is your market radar. On a schedule (and on demand) the platform sweeps the web, news, and SEC EDGAR filings for what's happening in your market, dedupes and ranks what it finds, and lands the results as a per-workspace corpus of market-signal documents you can browse, read, and feed to agents.
It is deliberately raw — a feed of the source documents themselves, not a clustered analysis. Think "what's going on in my industry this week," with a link straight to each source.
This guide covers browsing the feed, reading it as an agent or over the API (the lean-list / full-document split), automating a weekly digest, and the limits worth knowing.
What's in the corpus
Each signal is one collected document with:
title,url,domainsource—exa(web / news) oredgar(SEC filings)angle— the sub-query that found it (e.g. a competitor, a topic)authority_tier—high/mid/lowpublished_date,collected_at- the document text (see the split read below)
The corpus is tenant-scoped and starts empty until a sweep has run.
Browsing it in the console
Open the Industry page in your workspace. You'll see the feed newest-first — title, domain, angle, authority, and date. Click any row to open the full document, formatted, with a link to the original. Hit Refresh sweep to collect fresh signals now instead of waiting for the scheduled sweep.
Two reads: scan cheap, drill deep
The read surface is split so it stays fast to survey and rich to quote:
| Read | Returns | Use it to |
|---|---|---|
List — industry_signal://list | one row per document with a short snippet (~300 chars) | survey many documents cheaply, filter, pick |
Get — industry_signal://<id> | one document with its full text | read or quote a specific document in full |
The pattern is survey the list, then drill into the few documents that matter. The list is lean enough to scan a hundred signals in one call; the full text is one fetch away when you find something worth quoting.
The list is filterable and paginated — domain, source, angle,
authority_tier, sweep_id, collected/published date ranges, a free-text
search, plus limit / offset.
Reading it over the API
Every read is data:read; triggering a sweep is data:write (see
Good to know). Base URL and key:
export AMDAHL_API_KEY="amdhl_…" # a workspace API keySurvey the feed (snippets):
curl -s -H "X-API-Key: $AMDAHL_API_KEY" \
"https://app.amdahl.co/api/platform/v1/industry/signals?limit=25&angle=pricing"
# -> { "data": { "signals": [ { "document_id": "…", "snippet": "…", "title": "…", "url": "…", … } ], "limit": 25, "offset": 0 } }Read one document in full:
curl -s -H "X-API-Key: $AMDAHL_API_KEY" \
"https://app.amdahl.co/api/platform/v1/industry/signals/<document_id>"
# -> { "data": { "signal": { "document_id": "…", "text": "…full body…", "url": "…", … } } }
# an unknown id returns 404 (no document is ever leaked across workspaces)Trigger a fresh sweep (long-running, paid fan-out — needs data:write):
curl -s -X POST -H "X-API-Key: $AMDAHL_API_KEY" \
"https://app.amdahl.co/api/platform/v1/industry/refresh"
# -> { "data": { "angle_count": …, "collected": …, "written": …, "run_id": "…" } }You can watch a sweep and audit past ones via industry_run://list and
industry_run://<id> (REST GET /industry/runs and /industry/runs/:id).
Reading it from an MCP client or the copilot
Over MCP (Claude Desktop, Cursor, ChatGPT-with-MCP, or any MCP client with a workspace key):
- the
industrycoarse tool'srefreshaction triggers a sweep; - the corpus is read as resources —
industry_signal://list(snippets) andindustry_signal://<id>(full text), plusindustry_run://…for sweep history.
The in-app copilot reads the same corpus to ground a market question in real collected documents. A natural agent loop:
refresh(optional — the scheduled sweep already keeps the corpus fresh);- read
industry_signal://listand filter to what's relevant; - read
industry_signal://<id>for the handful worth quoting; - synthesize — a briefing, a competitor watch, content grounding, all with source links.
Automate it: the Market Intelligence Digest
The Market Intelligence Digest starter workflow turns the feed into a standing habit. It reads your corpus (surveying the snippet list, drilling into the top documents in full), frames the read for your business using your profile and named competitors, and writes a versioned living document — an executive read, what's moving, a competitor watch, and the documents worth a full read.
- Fork it from the starter workflows (
market-intelligence-digest) — via the Workflows surface, theblueprintsMCP tool'sforkaction, oragents.fork_blueprint. - Schedule it — it ships with a weekly cron (Monday 08:00), disabled by default; enable it to get the digest every week hands-off. It also runs on demand.
- Each run appends a new promoted version, so the freshest digest is always current and you can watch it evolve week over week.
It's read-only of the sweep (it reads the corpus, it doesn't trigger one), so it
runs without data:write. Keep the corpus fresh with the scheduled sweep, or run
industry.refresh out of band.
End-to-end use cases
- Weekly market briefing — "what's going on in my market?" → an agent surveys the feed, drills into the top items, and hands you a synthesized briefing with source links (or automate it with the digest above).
- Content grounding — before drafting a post or newsletter, read signals on the topic and cite the full source document (the snippet alone is too short to quote safely).
- Competitor monitoring — filter the feed by a competitor's
domainorangle, read the new developments in full, feed a battlecard or a competitive analysis. - Regulatory / filings watch — filter to
source=edgarto surface new filings relevant to your category.
Good to know
- Freshness comes from the sweep, not the read. A scheduled sweep keeps the
corpus current;
industry.refreshtops it up on demand. The corpus is empty until the first sweep runs — if a read comes back empty, run a sweep (or wait for the scheduled one). - Triggering a sweep needs write access. Reads are
data:read(available to any workspace key, the copilot, and read-only MCP keys).refreshisdata:write(an editor-level scope) because it runs a long, paid fan-out — so a read-only scheduled workflow can read the corpus but can't sweep it. - No time-travel (yet). Industry reads are always the current corpus — there's no "as of a past date" read. A workflow that reads industry signals reflects today, which is right for a forward-looking digest but means you can't backtest a strategy against how the market looked on a past date.
- Snippet vs full text. The list returns a bounded snippet per row; quote only
from the full document (
industry_signal://<id>). Freshly collected documents store a long excerpt; older documents keep whatever length they were collected at until they're re-swept.