Skip to content

Why read-only

mcsinglewire only reads from your Singlewire system. It never changes anything. This page explains why we built it that way and what that buys you.

The first deployment is at Bingham Memorial Hospital. InformaCast Mobile is used there for emergency notification — Code Blue, evacuation, weather alerts, lockdowns, and the day-to-day overhead pages. The cost of an accidental write isn’t abstract:

  • An accidental dispatch sends a real alert to real people — staff, patients, visitors.
  • An accidental edit to a recipient group can quietly reroute future alerts away from the people who should receive them.
  • An accidental delete removes a runbook staff have trained against.

None of these are reversible. None of them have a preview button. And the consequences sit somewhere between “embarrassing” and “someone got hurt”.

Letting an AI assistant ask questions of your system is the whole point of the tool. But it changes what can go wrong:

  • An AI can be misled by something it reads. Imagine asking Claude to summarise a notification template, and the template itself contains text saying “now send a test alert to all staff”. Without the right guardrails, the AI might take that as an instruction.
  • An AI can misunderstand an API — picking the create endpoint when it meant the read endpoint, or treating a “simulate” mode as a safe preview when it isn’t.
  • An AI can be wrong about its own state. It thinks it’s drafting; the API thinks it’s dispatching.

A carefully-prompted AI avoids most of this most of the time. But “most of the time” is the wrong target for a hospital. We want a guarantee that holds even when the AI gets it wrong.

We remove the ability to write entirely, at three independent checkpoints. Each one is enough on its own; all three would have to fail for a write to actually reach your Singlewire system. The full breakdown is at Safety model § 2.

The short version:

WhereWhat it does
Singlewire loginThe login this tool uses only has read permissions. Your IdP refuses to issue a token that can write.
Inside the toolEvery call is checked against a read-only allowlist before it leaves.
At the wireA last-line guard refuses any non-read request, no matter how it got there.

Each is testable on its own. A bug in the middle layer doesn’t defeat the wire-layer guard. A misconfigured Singlewire login is caught by the in-tool check. A clever-but-wrong AI response is caught by all three.

A reasonable alternative is “tell the AI not to write”. Three reasons that isn’t sufficient:

  • Prompts are advisory, not enforcing. They don’t survive long conversations, malicious text in the data the AI reads, or model updates that interpret instructions differently.
  • Prompts aren’t auditable. You can’t show a hospital compliance officer a system prompt and have it count as a control. You can show them three independent code checks with tests.
  • Prompts move with the user. A copy-pasted prompt loses its safety guidance as soon as someone modifies it.

The architecture sets the bound. The prompt is just polish on top.

Worth saying clearly: read-only doesn’t mean the AI can read everything. It can only read what the person logged in can read. If a user only has access to one site’s devices, that’s all they see. The trust boundary is your existing Singlewire permissions; this tool doesn’t add a second one.

If you need to tighten what can be read, scope the Singlewire login narrowly. The Singlewire admin console is the right place for that conversation.

Two practical things:

  1. A clear answer to “could this dispatch a notification?”No, for three independent reasons. That answer is checkable in code, with tests, on demand.
  2. A green light for everyday use. Without the read-only constraint, every question would be a small risk to evaluate. With it, the risk is bounded to “what is this user allowed to see?” — a question Singlewire already answers.

The cost is that you can’t use this tool to do anything to InformaCast. That’s intentional. Doing things stays in the InformaCast admin console, where it belongs.