The current-flags feed (same payload as the get_signals MCP tool)

Every currently flagged entity with trajectory, domains, desk membership, and an explicit evidenceStatus per signal ('receipted' rows carry source-attributed evidence URLs; 'unreceipted' rows report the attention measurement without article receipts — filter on evidenceStatus for fully attributable rows). Snapshot-backed: refreshes nightly; edge-cached 10 minutes (cache-control: public, max-age=600). No pagination — the feed is a bounded set (all currently flagged entities, totalFlagged in the envelope); limit truncates from the top of the ranking. Sorting is fixed: the platform's priority ranking, highest first.

Rate limits: 30 requests/minute burst per network address (shared egress shares the allowance) and 500/day anonymous, plus a global daily breaker — enforced on ORIGIN reads. Edge-cached responses (10-minute TTL) serve without consuming quota, so short read bursts against a warm cache may all return 200; quota protects origin compute, not cached reads. Every 429 carries a retry-after header (seconds); daily-quota 429s additionally carry requiresAuth: true.

get/api/signals

Request

  • Base URL: https://api.signalbureau.ai
  • URL: https://api.signalbureau.ai/api/signals
  • Auth: none declared

Query parameters

limitinteger

Cap the list. Clamped to 1..totalFlagged; values above the flagged count return the full feed. Default: all flagged entities.

direction'rising' | 'fading' | 'steady' | 'new' | 'insufficient_history'

Filter by trajectory regime. insufficient_history marks entities too new to have earned a regime. An unknown value is refused with 400 (code invalid_param) and the accepted list — never answered with an empty feed.

Response

The feed envelope.

okboolean required
schemastring required

Envelope version tag, e.g. sb.signals.v1. Additive changes only within a version.

asOfstring nullable

Snapshot date (YYYY-MM-DD).

generatedAtstring nullable
nextBuildAtstring date-time

OPTIONAL. When the NEXT scheduled data build is due (ISO-8601 UTC), derived from the build workflow's real cron schedule — never guessed. A quiet gap before nextBuildAt is scheduled rest, not staleness. Present from the first post-release data build; absent on snapshots that predate the field.

buildCadencestring

OPTIONAL. Plain-text statement of the data-build schedule (e.g. how many builds per day and over which UTC window), computed from the same parsed cron schedule as nextBuildAt. Present from the first post-release data build.

generated_bystring
methodologyobject
countinteger required

Signals in this response.

totalFlaggedinteger

Size of the full flagged set before limit/direction filters.

coverageUnavailableReasonstring

Present exactly when coverage is null: a plain-language reason the counts are unavailable (e.g. the committed snapshot predates the coverage object; populated by the next scheduled data build). Absent when coverage is populated.

Example response

{
  "nextBuildAt": "2026-07-23T12:47:00+00:00",
  "buildCadence": "8 scheduled data builds daily between 12:47 and 23:05 UTC; the market panel is sampled every 2 hours around the clock. A quiet gap between builds is scheduled rest, not staleness.",
  "coverageUnavailableReason": "committed snapshot predates the coverage object; populated by the next scheduled data build"
}

Changes

No recorded changes to this operation across all 1 revision of this API.