# Real Signal MCP — changelog *Real Signal MCP · changelog · semver* Every schema change to the MCP server is a numbered release. The server is read-only by doctrine; mutation tools require explicit founder review. Tool removals and breaking input-schema changes bump the minor version while pre-1.0; bump the major version once stability is committed. ## 0.4.0 — 2026-06-07 Added the Restraint API as both an MCP tool and a direct HTTP endpoint. - **Added:** `score_legitimacy` — the keystone synthesis MCP tool. Composes Moment composite, MQS, user-fatigue, signal-saturation, and merchant-pressure into a single 0-100 legitimacy score plus reasoning. Returns band (`legitimate` / `borderline` / `remain_silent`) and recommendation (`emit` / `borderline_remain_silent` / `remain_silent`). Three hard overrides force `remain_silent` regardless of score: `Moment.should_stay_silent`, fatigue > 0.85, saturation > 0.80. Includes a dry-run of the 7-gate cascade so callers can audit which gates would close. Inputs: `pocket_id` (required), `candidate_action` (required), `user_context` (optional), `merchant_context` (optional), `channel` (optional). - **Added:** `POST /api/legitimacy` — same composer exposed as a direct HTTP endpoint for callers outside the MCP transport. Same args, same response shape, same `_meta` attribution envelope. Rate-limited to 30 requests per minute per IP. Tool count: **11**. ## 0.3.0 — 2026-06-06 Added three tools and an alias path on the lookup tool. - **Added:** `get_pocket_predictions` — reads the predictions ledger. Inputs: `pocket_id` (optional), `generator` (optional), `since` (`'1h'`/`'1d'`/`'7d'`/`'30d'`/`'all'`, default `'7d'`), `revealed_only` (default `false`), `limit` (1–500, default 50). Output includes `accuracy_by_generator[]` so an AI assistant can audit the track record before citing an observation. - **Added:** `get_pocket_silence` — reads the active-silence justification for a pocket (or network-level overview if `pocket_id` is omitted). Returns the signal status code (`STABLE_CALM` / `WITHHOLD_INTENTIONAL` / `FORMING_WINDOW` / `ACTIVE_INTERVENTION` / `DECAY_WINDOW`), the justification line, predictive outlook labels, the next-possible-window timestamp, and substrate vitals. - **Added:** `get_intent_substrate` — reads the data behind any `/intent/:pocket/:slug` page. There are 522 valid (pocket × intent) combinations. Returns matched outlets, current-moment alignment, and a narrative line. - **Added:** `aliases` support inside `lookup_pocket_by_name`. The fuzzy match now consults `pocket.aliases[]` from `src/data/pockets.json` in addition to id / name / region — so queries like `"bukit timah"` resolve to the canonical Cluny Court pocket. Tool count: **10**. ## 0.2.0 — 2026-05-30 Added three tools and the attribution envelope. - **Added:** `get_pocket_moment_quality` — the central *is this moment worth breaking silence?* scalar. Reads the latest reading from `pocket_moment_quality_latest`, written every 15 minutes by `moment-quality-loop` cron. Returns MQS plus the five factor scores and a band classification. - **Added:** `lookup_pocket_by_name` — pure fuzzy match over `pockets.json`. No database round-trip. Removes the need for AI assistants to know the pocket id space — they can pass user-typed free text. - **Added:** `get_pocket_atmosphere` — the 15-minute atmosphere stream. Latest reading plus a trend label across the configurable `hours` window (1–24, default 4). - **Added:** `_meta` attribution envelope on every `tools/call` response. Carries `source`, `source_url`, `license` (CC BY-NC-ND 4.0), `license_url`, `attribution_required`, `tool` name, and `computed_at` timestamp. License terms require display in any UI or downstream artifact that surfaces this data. - **Added:** behavioural annotations on every tool (`readOnlyHint: true`, `destructiveHint: false`, `idempotentHint: true`, `openWorldHint: false`) per MCP 2024-11-05 spec. Required for Anthropic's Connectors Directory. Tool count: **7**. ## 0.1.0 — 2026-05-26 Initial release. - **Added:** `list_pockets` — returns the list of active neighbourhood pockets the agent observes. - **Added:** `get_pocket_moment` — returns the agent's current read of a pocket (atmosphere, calm probability, signal saturation, movement friction, fragility, window half-life). - **Added:** `get_observed_outlet` — returns the public shadow-profile data for an outlet (metadata, patterns, decision-support lines). - **Added:** `get_pocket_sustainability` — returns the pocket-level sustainability ledger summary with physical impact and SGD recovery, configurable window. - **Transport:** JSON-RPC 2.0 over HTTP at `https://real-signal.ai/api/mcp`. No auth; read-only public substrate. - **Discovery:** manifest at `GET /api/mcp` and well-known location `/.well-known/mcp.json`. - **Rate limit:** 30 requests per minute per IP (shared with narration limiter). Tool count: **4**. ## Pre-release notes The server speaks MCP protocol version `2024-11-05`. Compatibility with later protocol versions is tracked here as upstream specs land.