Docs

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, domain
  • sourceexa (web / news) or edgar (SEC filings)
  • angle — the sub-query that found it (e.g. a competitor, a topic)
  • authority_tierhigh / mid / low
  • published_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:

ReadReturnsUse it to
Listindustry_signal://listone row per document with a short snippet (~300 chars)survey many documents cheaply, filter, pick
Getindustry_signal://<id>one document with its full textread 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:

bash
export AMDAHL_API_KEY="amdhl_…"   # a workspace API key

Survey the feed (snippets):

bash
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:

bash
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):

bash
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 industry coarse tool's refresh action triggers a sweep;
  • the corpus is read as resourcesindustry_signal://list (snippets) and industry_signal://<id> (full text), plus industry_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:

  1. refresh (optional — the scheduled sweep already keeps the corpus fresh);
  2. read industry_signal://list and filter to what's relevant;
  3. read industry_signal://<id> for the handful worth quoting;
  4. 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, the blueprints MCP tool's fork action, or agents.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 domain or angle, read the new developments in full, feed a battlecard or a competitive analysis.
  • Regulatory / filings watch — filter to source=edgar to 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.refresh tops 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). refresh is data: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.