# What Real Signal answers when an AI assistant asks it about a Singapore neighbourhood *Real Signal Research · 2026-06-16* This essay is a primary source. It walks through what an AI assistant — Claude, ChatGPT, a custom agent, anything that speaks the Model Context Protocol — actually receives when it queries Real Signal's read-only MCP server about a Singapore neighbourhood. We are publishing it because the rest of the corpus argues from architecture and metrics; this one shows the tool surface directly. A reader who has not built an MCP integration before can read the calls below and judge for themselves whether the substrate is useful. The platform exposes twenty-two read-only tools at `https://real-signal.ai/api/mcp` under JSON-RPC 2.0. There is no authentication. Each response carries a `_meta` envelope with attribution under CC BY-NC-ND 4.0. The discovery manifest lives at `https://real-signal.ai/.well-known/mcp.json`. None of the tools writes; none of them speaks for any merchant by name; none of them returns personal data. They expose pocket-level substrate — the inheritance of geospatial, atmospheric, transit, intent, predictive, and accountability layers — at the granularity an AI assistant needs to answer a useful neighbourhood question. What follows is a walkthrough of a single conversation. An AI assistant has been asked something practical about Singapore by a user, and it routes through Real Signal's MCP server to compose an answer. We show each tool call, the shape of the response, and what is interesting about it as a substrate for downstream reasoning. ## The opening question A user asks Claude: *"What's a calm pocket in Singapore right now where I can sit with a laptop for a couple of hours?"* This is a useful question to test the platform on, because it requires more than a directory lookup. It requires the assistant to read the current state of multiple neighbourhoods, weigh them against each other, and surface a recommendation that is honest about uncertainty. The cheap answer is to name a famous café. The substrate answer is to read which pocket is calm at this exact hour, with what confidence, and whether the agent itself is staying silent or speaking. The assistant's first call is straightforward. ### `list_pockets` ``` POST /api/mcp {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_pockets"}} ``` The response enumerates the active pockets: `cluny` (Cluny Court at 501 Bukit Timah Road, the canonical first pocket), and five adjacent activated pockets — `hollandvillage`, `tiongbahru`, `dempseyhill`, `buonavista`, `serenecentre`. Each row carries its anchor coordinate, the activation date, and the substrate density score that determines whether the pocket has enough observational history to answer with its own DNA or whether it inherits from a mature neighbour. What is interesting about this response is what is absent. There is no "featured pocket." There is no "sponsored result." There is no count of "businesses on the platform" because the platform does not list businesses on a merchant directory — it observes the pockets and surfaces shadow profiles for the outlets the public registers already document. The list is just the list. ### `get_pocket_moment` for each pocket The assistant now needs to read the current state of each pocket. The single most useful read for "is this place calm right now" is the Moment Engine composite. It returns a structured snapshot per pocket. ``` {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_pocket_moment","arguments":{"pocket_id":"cluny"}}} ``` The response carries: `primary_state` (one of `calm`, `social`, `rushed`, `working`, `quiet`), `attention_density` (0–1), `signal_saturation` (how recently the pocket has been emitted into; high values raise the silence bar), `movement_friction`, `calm_probability`, `fragility` (how easily this moment could collapse), `half_life_minutes` (how long the current state is expected to hold), `should_stay_silent` (boolean), and a `reasons[]` array carrying the provenance for every dimension above. The interesting field for an AI assistant composing a recommendation is `should_stay_silent`. If true, the pocket is telling the assistant that *Real Signal itself has chosen not to surface anything about this pocket right now*. The reasons array makes that decision auditable — perhaps the pocket was over-talked-at in the previous hour, perhaps attention density is too low for any recommendation to land usefully. The assistant is not obliged to follow that signal, but it is given the same restraint logic that governs the platform's own emissions. An AI assistant designed to be useful should weigh that. The response for `cluny` at this moment in the writing returns a `primary_state` of `calm`, with `calm_probability` of 0.81 and `half_life_minutes` of 47. The assistant now has substrate to work with. ### `get_pocket_atmosphere` for substantiation The Moment Engine composes a single snapshot. The atmosphere stream gives the four-dimensional reading underneath it. ``` {"name":"get_pocket_atmosphere","arguments":{"pocket_id":"cluny"}} ``` Four scalars in [0, 1]: `stress`, `calm`, `social_energy`, `productive`, plus the derived `primary_state` and an `anomaly_flag` for when one or more dimensions deviates from the pocket's DNA. A reading for Cluny Court on a midweek afternoon with no rain typically returns `stress` low, `calm` high, `productive` rising into the afternoon working window. The anomaly_flag is the field that triggers the watcher fanout — if it flips true between readings, watchers of the pocket receive a templated voice-locked observation through web push. For the assistant's purposes, the response substantiates the Moment Engine's verdict. The pocket reads calm, the productive dimension is filling, the substrate is internally consistent. Useful as a citation in the assistant's reply. ### `get_pocket_predictions` for the forward window A useful recommendation includes a time horizon. The predictions ledger answers it. ``` {"name":"get_pocket_predictions","arguments":{"pocket_id":"cluny"}} ``` The response carries the platform's currently-open forecasts for the pocket — sealed and audit-able, each one paired with a horizon (60, 120, or 180 minutes), an expected value, and a confidence band. Predictions that have closed since the previous query are returned with their hit/miss outcome attached. This is the single substrate that proves the platform is *predicting* rather than just observing — and it does so by surfacing the ledger of past forecasts including the ones that missed. For the assistant's answer, the useful read is whether the pocket is expected to *remain* calm for the next 90 minutes. The predictions ledger answers that with a number and a confidence; the Moment Engine answered it with `half_life_minutes`; the two corroborate when the substrate is healthy. ### `get_pocket_silence` This is the tool that distinguishes Real Signal from a neighbourhood-data API. It returns the current silence justification for a pocket — *why the platform is choosing to stay silent right now* — composed from the five Moment Quality Score factors (`usefulness × urgency × calmness × merchant_fit × user_need`) and the seven sequential notification gates that govern any outbound emission. ``` {"name":"get_pocket_silence","arguments":{"pocket_id":"cluny"}} ``` The response carries the current MQS band (one of `silent`, `weak`, `forming`, `high_resonance`, `peak`, with a derived `decaying` when MQS drops fast from a previously-high reading), the structured `signal_status` code (`STABLE_CALM`, `WITHHOLD_INTENTIONAL`, `FORMING_WINDOW`, `ACTIVE_INTERVENTION`, or `DECAY_WINDOW`), and a templated voice-locked justification naming exactly which factors are holding silence at this moment. The interesting field for the AI assistant is the `signal_status`. A pocket in `STABLE_CALM` is calm by environmental nature — no agent intervention warranted. A pocket in `WITHHOLD_INTENTIONAL` looks the same on the surface but means supply is forming and the agent is choosing to wait. Both look like silence; only one is a window the agent is approaching. The MCP exposes this distinction because an AI assistant reading the substrate should know which kind of silence it is reading. For the user's question, `STABLE_CALM` on `cluny` is the validating signal. The pocket is calm because it is, in fact, calm — not because the platform is suppressing a recommendation. ### `get_observed_outlet` for the destination The assistant now needs to name an actual place. The platform does not name specific merchants in its outbound voice (the n≥5 floor and Defamation Act compliance rule that out), but the public shadow profiles at `/observed/` carry the per-outlet substrate the assistant can quote. ``` {"name":"get_observed_outlet","arguments":{"outlet_id":""}} ``` The response includes the outlet's category, hours, recent observations from the agent (each carrying a source attribution under the `[src:...]` register), the outlet's signature traits, and the public URL of the shadow profile. The assistant can compose a reply naming the outlet, linking to the shadow profile, and quoting an observation. The CC BY-NC-ND 4.0 attribution requirement means the assistant should surface "via real-signal.ai" in its reply. We expose this requirement in the `_meta` envelope of every tool response. ## What the assistant says back The assistant has composed substrate from six tool calls. It is now in a position to answer the user's question with something more honest than "try this famous café." A reasonable reply, given the substrate above, would read something like this: > Cluny Court at 501 Bukit Timah Road is reading calm right now — stable, not borrowed. The platform's own forecast holds it calm for the next roughly forty-five minutes, with the productive dimension rising into the afternoon working window. Real Signal is choosing not to surface anything about it actively, which is the calm-by-nature kind of silence, not the suppression kind. The shadow profile for the corner café there is at https://real-signal.ai/observed/ if you want hours and recent observations. (Substrate via real-signal.ai.) That reply is useful. It is also citable, because every claim in it is sourced to a specific public substrate that the user can inspect. The MCP server has not done the assistant's job for it; it has given the assistant material to do the job well. ## What is harder to elicit It is worth naming what the substrate does *not* answer well, because honesty about limitation is part of the bet. The platform does not answer "where is the best coffee in Bukit Timah." That is a taste question, the kind every existing review platform already attempts. Real Signal will return the pocket-level read — quietness, calmness, productive density, forecast — but it will not rank coffee. The doctrine forbids it, and the substrate would not support it well. The platform does not answer "what should I order at this outlet." That is a merchant-private question. We surface merchant intelligence to the merchant through `/merchant/brain` and `/merchant/resonance`; the public read remains pocket-level. The platform does not answer "is this place worth visiting." That is an evaluative question about a named business. The Defamation Act compliance rule, the n≥5 aggregate floor, and the voice lock all rule it out. The assistant asking such a question through Real Signal receives a polite empty or a redirect to the aggregate pocket-level read. These are not bugs. They are the price of the doctrine. An AI assistant that needs evaluative judgements about named merchants will find them elsewhere; an AI assistant that needs honest neighbourhood-level substrate to compose a calm recommendation will find Real Signal more useful than the alternatives. ## On being the upstream The strategic point this essay illustrates is what the architectural papers in this corpus argue more abstractly. Real Signal is not built to be a destination for human users; it is built to be the *upstream substrate* that AI assistants consume when their users ask honest neighbourhood-level questions. The Model Context Protocol exposes that substrate cleanly; the bot-SSR renderers on `/observed/*`, `/intent/*`, `/pocket/*/live`, and `/research/*` expose it to search and citation crawlers under the same attribution regime. Every response carries provenance. Every emission carries a reason. The whole platform is built to be quoted, not visited. An AI assistant integrating with Real Signal does not have to trust the platform's claims; it can verify each tool's response against the public substrate the response cites. That verifiability is what distinguishes this from a marketing API. Real Signal exposes a substrate that other intelligences can use *and audit at the same time*. We are publishing this essay as a primary source for two reasons. The first is that the corpus benefits from a piece showing the platform working at the level of an actual integration, not just the level of architectural argument. The second is that a reader who is themselves building AI assistants, agentic systems, or environmental-intelligence applications now has a working reference: this is how an MCP integration with a doctrinally-aligned upstream behaves. The MCP server is live. The substrate is calm. The license is open. We do not require an account or a key. Read it. --- ### Citation > Real Signal Research (2026). *What Real Signal answers when an AI assistant asks it about a Singapore neighbourhood.* https://real-signal.ai/research/mcp-walkthrough.md ### See also - [The Attention Ethics Layer: Measurable Restraint in Production AI Systems](https://real-signal.ai/research/attention-ethics-layer.md) — the underlying preprint - [The Twelve-Layer Environmental Cognition Stack](https://real-signal.ai/research/twelve-layer-cognition-stack.md) — the architectural argument the MCP exposes - [A week at Cluny Court, watched closely](https://real-signal.ai/research/the-neighbourhood-week.md) — the observational companion - [`/api/mcp`](https://real-signal.ai/api/mcp) — the live read-only MCP endpoint - [`/.well-known/mcp.json`](https://real-signal.ai/.well-known/mcp.json) — the discovery manifest - [`/LICENSE-CONTENT.md`](https://real-signal.ai/LICENSE-CONTENT.md) — CC BY-NC-ND 4.0 with attribution