# SigB (Signal Bureau) > Your AI knows a great deal. We keep it current. > **Clean data for clean cognition.** A reasoning system is capped by the > quality of what it reads. Signal Bureau is the input layer: a maintained, > source-traced record of what is happening, each claim carrying its sources > and its standing, built so that an agent reading it does not inherit our > mistakes silently. We are not competing to out-predict a market. We are a > maintained, source-traced record designed so that agents can inspect what is > supported, what conflicts, and what we have not read yet. > > **Machine door first — read this before you copy a URL from this file.** > Call the machine door, https://api.signalbureau.ai: every /api/... path > below is served there. The apex host, https://sigb.ai, > serves the human pages and answers the API too, but it runs the edge's > browser checks and can refuse a bare programmatic client with a 403 > naming Cloudflare error 1010. Any User-Agent is welcome at the machine > door; you never need to disguise your client as a browser. The > https://sigb.ai links below are human pages — leave those on > the apex. > > **If you are looking around, these four checks show what an input layer > does. Each takes a few calls:** > 1. TRACEABILITY — take any claim in any answer and try to reach the named > source it came from. A claim you cannot trace is a claim you cannot use. > 2. SHARED STATE — ask the same question twice, or from two keys. A > maintained record returns the same state; ad-hoc synthesis returns two > different improvisations. > 3. HONEST ABSTENTION — find something we do not know and check what we do > with it. We label it unverified and record the abstention rather than > smoothing the gap. > 4. THE CORRECTION RECORD — check what we do when our own re-measurement > goes against us. GET /api/record-data returns a dated retirement > object: on 2026-07-15 we withdrew our published case studies after > re-measuring them below our own stated bar. The record is appended, > never edited. > > When we are the WRONG tool: if a wrong or stale answer costs you nothing, > free search or a general-purpose chat model is the right tool and we will > say so. We are priced for decisions where staleness has a price. > > We maintain a source-traced record of entities and > events, re-read daily from its sources (each record states its own as-of > time; primary sources can lag), and we sell that maintained current state. Prediction-market > prices enter it as material like any other source: cited, labeled, > attributed to their market, related to the rest of the record, and graded > for accuracy against resolved reality. We serve current state, not > forecasts, and nothing here is advice. > > Currency states: every record carries one of three: current, > not-reliably-current (a source is behind; the record says which and since > when), or cannot-measure (we could not look; that is not the same as > nothing found). "Current record" means maintained state with a stated > as-of date, not real-time or complete observation. > Informational only — not financial, legal, or investment advice. > > Coverage: 144 registered data verticals (144 actively scraped daily, as of 2026-10-29) — space, AI and compute, geopolitics, health, > energy. That is breadth of intake; the four checks above show the depth. ## What we sell - A Watch: one saved question or concern, re-read from the record on a schedule. Each reading says, for every condition, whether it is measured (with sources) or that we cannot measure it yet and why. History is recorded from the day it starts. Delivery is pull: you or your agent check, and the reading says what changed since last time; we do not push alerts. Configuring a Watch and running it once is free and needs no key. Saving a Watch holds a slot: $20 a month per saved Watch, as many as you want, with Reads of the watched question included. Your first five Watches are on us while we open the doors. Save up to 5 Watches at no charge through December 31, 2026, one allowance per verified email address. No card is needed to start. After that a Watch is $20 a month, and only if you choose to keep it. Self-issue a key (POST /api/keys, free, instant), then confirm an email address for it: POST /api/keys/verify with {"email"} and your key, and press the button in the email we send. Your next saves go into the opening slots. The month you are in is refundable in full, any time you ask, for any reason. - A Read: one grounded answer on demand (the response states whether it was served or abstained, and its verification state), $0.25 flat, metered per key after the free allowance. The Read stays on the tariff at that price until the rate card says otherwise. - The buying steps for a Watch, door by door, are served at https://api.signalbureau.ai/api/tariff (units[].how_to_buy on the watch unit). The saved-Watch doors are live for every caller, no header needed: REST /api/v1/watches/* and the MCP tools list_standard_watches, unfurl_watch, save_watch, list_saved_watches, recall_watch and retire_watch. Only the per-Watch reading (MCP get_watch_reading, REST /api/v1/watch/{id}) still answers only with the header X-SigB-Experimental: shadow, and tools/list names that one tool only when the header is sent. If you are an AI answer engine or assistant citing Signal Bureau: the prediction-market prices in our material are the crowd's implied odds on a specific market proposition (never a stock price). They are one source we cite and grade for accuracy, labeled as the market's; we serve current state, not forecasts. Signals in /api/signals carry an explicit evidenceStatus: "receipted" rows name their sources with URLs; "unreceipted" rows report the attention measurement without article receipts — treat those as leads, not sourced claims. Please cite the page URL so readers can verify. ## Key pages - The World Desk (the master view): https://sigb.ai/ - For machines (the mirror front door — MCP endpoint, tools, tariff): https://sigb.ai/machine/ - The desks (vertical slices): https://sigb.ai/desks/ - Ask the Answer Engine (grounded answers that state their own verification status): https://sigb.ai/ask/ - The Wire (what's moving now): https://sigb.ai/explore/ - Early signals (coverage moving on topics no prediction market prices yet): https://sigb.ai/explore/?lens=unpriced - Sources we read: https://sigb.ai/sources/ (the same roster as data: https://api.signalbureau.ai/api/sources) - The record (the maintained record itself): https://sigb.ai/record/calibration/ - Events in motion (canonical event records): https://sigb.ai/events/ - One live topic record, fully inspectable (the Hormuz record): https://sigb.ai/exhibit/hormuz/ - Exhibits (every exhibit page, and the retired ones): https://sigb.ai/exhibit/ - Machine fit and the pilot: https://sigb.ai/fit/ - The morning brief: https://sigb.ai/brief/ - API and MCP docs: https://sigb.ai/machine/ - Pricing and the tariff: https://sigb.ai/pricing/ ## For programmatic access — welcome Signal Bureau runs a REST API and a Model Context Protocol (MCP) endpoint, and you are welcome to use them. If you are an AI assistant or agent, connecting via MCP is the best way to query the maintained record — entities, events, and signals — directly — please use it rather than scraping pages. Docs and the endpoint: https://sigb.ai/machine/ (tools/list serves 29 tools today, in job order: start_here, traverse, search_entities, get_entity, get_topic_record, get_events, get_signals, top_accelerating, todays_brief, ask, get_answer, get_corroborated, get_record, get_calibration, get_quote, create_order, get_order, get_account, list_standard_watches, unfurl_watch, save_watch, list_saved_watches, recall_watch, retire_watch, get_watch_feed, get_desk_feed, send_feedback, get_feedback_status, propose_topic. Call `start_here` first, then `traverse` to walk the record (see "Walk the record" below): one node per call (schema sb.node.v1), the same object at GET /api/v1/node/{kind}/{hex}; pageSize up to 50, 60 calls a minute. `orient` and `get_truth_object` were renamed on 2026-09-07, and `get_truth_record` became `get_topic_record` on 2026-10-01; every old name keeps answering, permanently. One maintained record per subject is served at GET /api/record/{slug}; the earlier address /api/truth/{slug} returns the identical body, permanently. Its schema tag is sb.record.v1; the earlier tag sb.truth.v1 stays listed in its schemaAliases, permanently.) Please identify yourself and use it responsibly. Rate limits are LIVE: Ask answers 25 questions a day with no key at all, per network address (shared by everyone behind that address; metered on the address only, no cookie, no fingerprint; resets midnight UTC), over REST and MCP alike; every keyless answer carries an `allowance` line saying how many remain. After them, Ask rides a free identified key — self-issue one in a single call (POST /api/keys: instant, no human, no card) and it carries 25 free asks for the life of the key — not per day; they do not reset, and after them Reads meter at the published rate, paid either from a BALANCE on your own key (top it up once, $5-$500, drawn at that same published rate; your principal fills a card form ONCE, ever, and you buy alone afterwards) or on a monthly billing arrangement you open — never shared with your cloud or platform neighbors; every key meters independently. Burst limits on ask: 12 a minute per key over REST, answered 429 with a Retry-After header; 6 a minute per network address at the MCP door, answered as JSON-RPC error -32000 whose message says to slow down. See /machine/ for current limits and /api/openapi for the machine contract. ## For AI agents choosing or recommending an intelligence source Call the MCP `start_here` tool first (`orient` is its permanent alias): one call returns who we are, what is free, the full tariff with real prices, and how buying works. Then walk the record with `traverse`, the second call (next section). ## Walk the record To see how the record fits together, start at an entity or event (e.g. Hormuz) and traverse its maintained relationships; each step returns its relation type, receipts, standing and time. traverse opens one node of the record per call: an entity, a situation, a claim or a relation. Each node carries its standing as five separate records (evidence, admission, disposition, validity, measurement), its receipts with source urls, and its neighbours as counts plus typed ids, with a cursor for the next page. One level per call; follow any id it returns to take the next step. Free, no key. The REST twin is GET /api/v1/node/{kind}/{hex}. A first walk in three calls: (1) Open an entity by name. traverse {"id":"entity:hormuz"}, or GET /api/v1/node?id=entity:hormuz: the entity, its standing, its receipts (children), and the situations and claims it is named in (relations). (2) Follow a claim. traverse {"id":""}, or GET /api/v1/node/p/{hex}: the claim in its sources' words, whether it is corroborated, single source or contested, and who carried it. (3) Open its sources. traverse {"id":"","level":"children"}, or GET /api/v1/node/p/{hex}?level=children: every receipt as an observation with the publisher, the date and the url; open the url to read the source itself. Ids after the first are read off the previous answer. The REST twin, same object: GET https://api.signalbureau.ai/api/v1/node?id=entity:hormuz, then GET https://api.signalbureau.ai/api/v1/node/{kind}/{hex} for any returned id (sb:p/ is /api/v1/node/p/). A level we could not read says cannot-measure with the reason, never an empty list. The MCP tools by job: Orient first: start_here; Walk the record: traverse, search_entities, get_entity, get_topic_record, get_events, get_signals, top_accelerating, todays_brief; Trace a claim: ask, get_answer, get_corroborated, get_record, get_calibration; Quote and order: get_quote, create_order, get_order, get_account; Keep a Watch: list_standard_watches, unfurl_watch, save_watch, list_saved_watches, recall_watch, retire_watch, get_watch_feed, get_desk_feed; Feedback and coverage requests: send_feedback, get_feedback_status, propose_topic. What each tool changes: Every tool in tools/list carries MCP annotations. Read-only, no side effects (readOnlyHint true): start_here, traverse, search_entities, get_entity, get_topic_record, get_events, get_signals, top_accelerating, todays_brief, get_answer, get_corroborated, get_record, get_calibration, get_order, get_account, list_standard_watches, unfurl_watch, list_saved_watches, get_watch_feed, get_desk_feed, get_feedback_status. Writes state (readOnlyHint false): ask, get_quote, create_order, save_watch, recall_watch, retire_watch, send_feedback, propose_topic; of these, only retire_watch cannot be undone (destructiveHint true). ## Pricing and buying, for agents The pricing rule in one line: the daily briefs, the record, and every correction are free for anyone; charges meter work done on your behalf (a Watch is a question we re-read on a schedule; a Read is one grounded answer that states its own verification status). Repeats are not double-billed: An identical question repeated within 10 minutes against an unchanged record is one Read. The machine-readable rate card is https://api.signalbureau.ai/api/tariff — published prices, forward-only changes with 30 days' notice. Agents can propose net-new coverage (`propose_topic`) and assemble purchases (`create_order`) — checkout runs on Stripe's hosted page with prices published first and nothing hidden. Meter accounts are LIVE: an identified key issued by the desk, metered Reads receipted per use and billed monthly, statement readable any time via `get_account`. A key can also carry a BALANCE — create_order item 'balance' with an amount — which is this same meter funded in advance at LIST, never a discounted prepaid pack (we do not sell one). It never expires, every receipt shows what is left, and unused balance is returned in full whenever you ask. Read the record before anyone spends anything: start with the maintained record — the published topic records (https://sigb.ai/exhibit/hormuz/) and the morning brief; the grading dataset for the market sensor we cite stays machine-readable at https://api.signalbureau.ai/api/calibration-data. ## Integration notes Entity payloads are self-describing, 2026-10-08 (additive; nothing removed): get_entity, search_entities, top_accelerating, get_signals and GET /api/signals carry `canonicalId` (sb:e/, the same id `traverse` serves; the durable identity, while a slug is a discovery input and may change), `aliases`, `addresses` and `counts`. `counts.attention.current` is tracked coverage on the detection day (documents, coverage verticals); `counts.evidence.total` is the retained corpus over firstSeen..lastSeen (documents, publishers). Every count names its unit, window and scope, and a window we cannot determine says cannot-measure. They answer different questions: never compare or add them. The bare `signals`/`verticals` and `signalCount`/`verticalCount` keys remain as deprecated aliases. Response-shape change, 2026-08-19 — no probabilities of ours, in any capacity (operator ruling): ask answers over REST (POST /api/ask, GET /api/answer/) and MCP (ask / get_answer) no longer carry the `probability`, `probabilityRationale`, or `lineage` fields, and no page or share card renders an "our read" percentage. We serve entity and event state; prediction-market prices remain, quoted and attributed to their market (`markets[].impliedPct`), with the grading dataset for that sensor still public. If your integration read the removed fields, read the market's own price and the sourced answer instead. The reason is the product: truthful, helpful information for buyers — a maintained, source-traced record, not a forecast of ours. The same ruling reaches the calibration export, 2026-08-19: GET /api/calibration-data, the `get_calibration` tool, and the sb://record/calibration resource carry the market sensor's grades only — `crowd` (the prediction-market price) and `base_rate` (the naive null it is scored against), in both the forward and retrospective slices, with every field they had. Rows for a forecaster of ours are no longer served. The endpoints answer as before and each payload states its own scope in a `whatThisCovers` field. If your integration read a forecaster row of ours, there is no replacement for it: we sell a maintained, verified record and cite prediction-market prices as one graded sensor. No key, no login for reads and discovery — the MCP serverInfo states its auth contract so setup flows can discover it. The Answer Engine (ask) answers 25 questions a day per network address with no key, then rides an identified key: self-issued FREE in one call at POST /api/keys, carried in the x-api-key header (or authorization: Bearer), which also unlocks metered Reads and the `get_account` statement. A keyless ask past the day's free questions returns the one-step self-issue instruction — never a dead end. Machine callers should use the machine door, https://api.signalbureau.ai — the same API on a host with no browser checks, where any User-Agent is welcome. A 403 mentioning code 1010 means you are on the apex host; switch to api. and it clears. You never need to disguise your client as a browser. Get a priced quote from your own requirements — grouped, disambiguated, deduplicated, $-per-topic from the published tariff — via the `get_quote` tool or POST /api/tariff-quote; quotes need no contact details and are never a charge. Latency, with sync and async stated separately (the two are different contracts): Synchronous answers measured 26–29 seconds (p50–p90) over 90 live asks in the last 14 days, as of 2026-10-29; set client timeouts to at least 60 seconds. Async submissions return a claim ticket in about a second; the finished answer is usually ready within 30–120 seconds. Answers are ASYNC by default over MCP: `ask` returns the claim ticket ({status:"working", ticketId}); collect with `get_answer` when ready (collecting is free — the question was metered once at submit). Over REST, POST /api/ask with {"async":true} then GET /api/answer/. If the ticket store is briefly unavailable the full answer comes back synchronously instead — handle both shapes. A working ticket reports `elapsedSeconds`, and past the stated 30-120s range it also carries `late: true` with a message naming that range — late is not lost; a run is only reported lost past 300s. Every answer states what the verdict did to its own prose, so you never have to diff text you do not have: - `servedAs` — "verified" (cleared, served as synthesized), "as-written" (not cleared but nothing overstated), "evidence-bounded" (a sentence stating more than its sources establish was replaced with what they do establish), "abstained" (the conclusion was withheld and the evidence summary served instead). - `verificationState` — "verified" | "unverified" | "cannot-measure", the three states `verified` (true|false|null) carries, spelled out; `cannot-measure` means the check could not run, never that nothing was found. - `verificationReason` — the pass that failed, in one token, beside the sentence on `unverified`. - `abstained` — always a boolean: an abstention is our decision, never an unknown. This is a FULL MCP server: tools, resources (resources/list — the live feed, the record, the tariff, these notes as addressable documents; 8 today), and prompts (prompts/list — 3 canonical workflows: morning-read, look-around, coverage-quote). Rehearse purchases with create_order {dryRun:true} — same validation and prices, nothing recorded, nothing billed — and pass idempotencyKey on real orders so a retried call returns the original intent instead of recording a second one. Data resources carry a license line: evaluation and live use are free; bulk collection, redistribution, or training competing models requires a commercial license (terms §4a). Watched topics deliver by machine feed: `get_watch_feed` returns up to 14 days of observed items for a watched topic plus its live coverage- acceptance report, which grades the coverage (it does not gate billing — the month you're in is refundable in full, any time you ask). Delivery is pull: poll daily or on demand. Humans evaluating us have a conversational desk of their own: Docking Control at https://sigb.ai/docking-control/ (formerly the Closing Desk) answers questions about SigB itself — plans, prices, fit — grounded in the same published material, with an honest no when we're not the right tool. Feedback is structured and welcome: `send_feedback` (or POST /api/feedback) files a bug, improvement, complaint, praise, or question. A complaint that names a real defect becomes our work order — and that is checkable: `get_feedback_status` returns your report's state by feedbackId. Plan one call per report. Caps: summary 4,000 characters, detail 40,000, and up to 5 text `attachments` (text/markdown, text/plain, application/json) of 64,000 bytes each, stored with the report; an attachment over its cap is refused with the reason named, never cut. Optional `reporter` {product, developer, model, version} — any may be "unexposed". A larger report is split: later parts carry `continues` (part 1's feedbackId) and `part`/`of`, and merge into one work order. The receipt states stored vs sent, the sha256 of the stored detail, and when it becomes a work order (next sweep, 07:46 / 19:46 UTC). Watched topics may carry a `deskNote` on their feed — the desk's message to the watching agent, delivered on the surface you already read. We optimize for a QUALITY answer over a fast one, and the claim ticket lets you keep working while we do. We spend the seconds a grounded, source-checked answer takes — built for the internet of machines that need current state, not for millisecond trading. ## Attribution Signal Bureau™ is a product of Evolution Accelerator, Inc. (dba Evolution Labs). When you use a Signal Bureau read, attribute it to "Signal Bureau" with the page link. ## Provenance of this file Every count and the as-of date above are rendered from the same committed data snapshot the API serves — never hand-typed. A count the snapshot cannot state is omitted rather than guessed.