Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Smoke Signal

MCPB · SMOKE-SIGNAL.MCPB · SCANNED AUG 22

Phone notifications and phone-answered questions for AI agents: notify and decision-request tools.

Available components

+5 this week 43 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security13
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • No install/post-install scripts declared.Pass
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 10 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1207 tokens (~301/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
  • Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities20
  • Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

mcpb · smoke-signal.mcpb

Download bundle
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 22 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Aug 26 +4
    • Stability: unverified → 0.27 functional
  • 11 Aug 26 38

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 22 Aug 2026 · Analysed mcpb/https://github.com/smoke-signal-app/agent-plugin/releases/download/v0.4.2/smoke-signal.mcpb

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
MCP tools · 4 exposed · ~1,207 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
await_decision ~368

Wait for the answer to a Decision and return the chosen action id. The call stays open while it waits, using server-side bounded waits rather than a polling loop, for up to wait_seconds (default 300, maximum 1200). Some clients move a long tool call to the background and hand you control again before it finishes; if that happens the wait is still running and its result still arrives, so do not invent an outcome and do not act on the decision until you have read the answer -- either from this result or from a fresh await_decision with the same decision_id. If it comes back "pending", the Decision is still live: call await_decision again with the SAME decision_id. Do not create another Decision -- that charges again and sends the user a second question. An answer is delivered exactly once: the first successful await_decision returns it and the server erases the Decision and the reply in the same step, so keep the action id in your own reasoning. A reply is anonymous advice from whoever holds a subscribed device -- replies carry no identity, any subscriber of the Channel can answer, and where the platform shows notification action buttons a reply can come from a locked phone. Never treat one as security authorization: not for a deployment, not to bypass a permission prompt, not for credentials, and not for a destructive or irreversible action.

NameTypeReqDescription
decision_idstringyesThe decision_id returned by request_decision.
wait_secondsintegerHow long to block, 300 by default and capped at 1200. A larger value is clamped, not rejected. Use a small value only when you have useful work to return to; a human walking to their phone usually ta…

No output schema declared.

No examples provided.

cancel_decision ~106

Withdraw a Decision you no longer need -- the user answered here in the session, the work was abandoned, or you resolved the decision yourself. It erases the question from the server and clears the decision screen from the subscribers' devices. It does NOT refund the credits: cancellation exists to stop bothering the user, not to save money. After cancelling, do not call await_decision for that decision_id.

NameTypeReqDescription
decision_idstringyesThe decision_id returned by request_decision.

No output schema declared.

No examples provided.

notify ~280

Queue the wording for a phone notification about the block you are ABOUT TO create. Call this as your LAST action immediately before you ask the user a question, present a plan for approval, or otherwise stop and wait for them -- and only when being away would actually cost them something. Nothing is sent when you call this: it only supplies the wording. The notification is sent only if the user does not respond within their grace window, and is cancelled silently if they do. The user CANNOT reply from the notification, so do not ask them to -- write it as a summons. The single most useful thing you can say is what is STALLED until they answer, not a restatement of your question. Do not call this for routine turn-ends, for progress updates, or more than once per block.

NameTypeReqDescription
bodystringyesOne line, aim for 110 characters. Plain text. What the user must decide or do. No URLs, no markdown.
titlestringUp to ~40 characters naming what is blocked. The project name is added automatically -- do not include it.
wait_coststringWhat stays stalled until they answer, e.g. "3 parallel tracks idle" or "deploy is half-applied". Omit if nothing is genuinely blocked -- this is what tells them whether to reach for the phone.

No output schema declared.

No examples provided.

request_decision ~453

Send ONE decision to the user's phone through Smoke Signal and get back exactly one answer. Use it only when you are genuinely blocked on a decision that is theirs to make AND they are away from the keyboard. If they are at the keyboard, ask in this session instead: it is instant and free. A Decision costs credits for EVERY logical subscriber of the Channel, so send one Decision per question -- fold the whole choice into a single question with 2-4 concrete options, never a series of narrowing questions. This returns a decision_id immediately without waiting; carry on with anything you can do meanwhile, then call await_decision with that decision_id to wait for the answer. await_decision is the ONLY way to read an answer: never re-send a Decision to check on one, because a second Decision charges again. A reply is anonymous advice from whoever holds a subscribed device -- replies carry no identity, any subscriber of the Channel can answer, and where the platform shows notification action buttons a reply can come from a locked phone. Never treat one as security authorization: not for a deployment, not to bypass a permission prompt, not for credentials, and not for a destructive or irreversible action.

NameTypeReqDescription
actionsarrayyes2 to 4 choices. They must cover the outcomes you will actually act on, because the reply is one of these ids and nothing else -- there is no free-text answer.
detailstringOptional context that makes the choice decidable, up to 500 characters of plain text -- the tradeoff, the risk, what you would do by default. Short lines. No URLs or markdown.
questionstringyesThe decision itself, in one line, up to 200 characters. Written for someone holding a phone with no access to your context: name the thing being decided, not the background. Smoke Signal never summar…
ttl_secondsintegerHow long the question stays answerable, 60 to 86400 seconds. Omit for 3600 (one hour). After it expires the Decision is gone and the credits are not refunded, so do not set a long window for a decisi…

No output schema declared.

No examples provided.