{
  "name": "signal-bureau",
  "description": "SigB (Signal Bureau): We maintain a continuously-updated, source-traced record of the entities and events in a customer's named domain, and we sell that maintained, verified state — prediction-market prices are one sensor we cite and grade for accuracy; we serve current state, not forecasts. No key to read.",
  "endpoint": "https://api.signalbureau.ai/api/mcp",
  "transport": "streamable-http",
  "auth": {
    "required": false,
    "header": "x-api-key",
    "self_issue": "https://api.signalbureau.ai/api/keys",
    "note": "No key required for reads and discovery. The ask tool rides an identified key: self-issue one free with a single POST to /api/keys - instant, no human, no card. Bearer sb_live_... in an authorization header works too. Past the free allowance a key pays either from a balance funded once (create_order item 'balance') or on a monthly metered arrangement. Limits are published by the server's start_here tool (its earlier name, orient, keeps answering permanently) and at GET https://api.signalbureau.ai/api/tariff."
  },
  "tools": "29 tools, in the order tools/list serves them (grouped by job): 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.",
  "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.",
  "tool_side_effects": "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).",
  "orientation": "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. MCP tool: traverse, first call {\"id\": \"entity:hormuz\"}; REST: GET https://api.signalbureau.ai/api/v1/node?id=entity:hormuz.",
  "walk_the_record": "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\":\"<a relations.items[].id whose kind is claim>\"}, 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\":\"<the same claim 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.",
  "docs": "https://sigb.ai/machine/",
  "contact": "https://sigb.ai/machine/",
  "terms": "https://sigb.ai/terms/",
  "privacy": "https://sigb.ai/privacy/"
}
