Skip to main content
Glama

lauther-js

JavaScript packages for Lauther — push notifications to your phone from any web app or script, and questions that wait for a yes before something irreversible happens.

Package

What it is

lauther-client

The Node client. Zero dependencies, two methods, TypeScript types bundled.

lauther-mcp

An MCP server, so a coding agent can ask its owner for approval on their phone.

npm install lauther-client
import { Lauther } from "lauther-client";

const lauther = new Lauther(process.env.LAUTHER_TOKEN);

await lauther.push({ title: "Backup finished" });

if (await lauther.ask("Deploy v2.4 to production?")) {
  await deploy();
}

Only an explicit Approve returns true. A denial and a timeout are both false — an unanswered question must never read as a yes.

Why this exists

A browser tab can't reach someone who closed it, and building a native app per project to fix that was never going to happen. Lauther is one app your projects share over an HTTP call.

Related MCP server: Better Call Claude

Development

Node 18+. npm workspaces, no build step, no bundler.

npm install
npm test          # both packages

lauther-client has no runtime dependencies and is tested with a stubbed fetch. lauther-mcp is tested by spawning the real server over stdio and driving it with a real MCP client against a fake Lauther API — so a broken tool schema or broken stdio wiring fails the suite rather than a user's agent.

MIT

Available Tools

4 tools
ask_approvalAsk a human for approvalA

Ask the human who owns this machine to approve or deny something, on their phone, and wait for the answer. Use this BEFORE anything irreversible or expensive: deploying, deleting data, spending money, sending mail to real people, force-pushing, touching production. Returns APPROVED, DENIED, or NO ANSWER. Proceed only on APPROVED — a denial and a timeout both mean stop.

Inputs: question (required), details, timeout_seconds, require_biometric.

get_locationAsk a human to share their locationA

Ask the human who owns this phone to share where they are right now. They get a prompt and choose Share or Decline; if they share, one position is sent, once, as it was at that moment. Use it when you need their location to do the task (find the nearest branch, set a timezone, log a site visit), not to track them. Returns SHARED with latitude, longitude and accuracy, or DECLINED, NO ANSWER or EXPIRED. On anything but SHARED you have no location: do not guess one.

Inputs: details, question, timeout_seconds, require_biometric.

request_photoAsk a human for a photoA

Ask the human who owns this phone for one picture. They get a prompt and choose to take a photo (or pick one) or Decline. Use it when you need to see something only they can show you: a label, a screen, a whiteboard, a damaged part. Returns SHARED with a link plus the image itself so you can look at it directly, or DECLINED, NO ANSWER or EXPIRED. The link works for 7 days and the photo is then deleted.

Inputs: details, question, timeout_seconds, require_biometric.

send_notificationSend a notification to the human's phoneA

Tell the human something, on their phone. Use for finishing a long job, a build breaking, or anything worth interrupting them for. This does NOT wait for a reply — use ask_approval when you need permission.

Inputs: title (required), url, message, priority.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.7/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: ask_approval blocks for a yes/no decision, send_notification is fire-and-forget, get_location requests a one-shot position, and request_photo requests a one-shot image. The descriptions explicitly draw the approval-vs-notification boundary, so an agent cannot easily confuse them.

    Naming Consistency5/5

    All four names follow a consistent verb_noun snake_case pattern (ask_approval, send_notification, get_location, request_photo). The verb variety is semantically motivated rather than arbitrary, and the pattern is perfectly predictable.

    Tool Count5/5

    Four tools is a tight, well-scoped surface for a phone-based human-in-the-loop bridge. Every tool covers a genuinely distinct interaction type and none feels redundant or filler.

    Completeness4/5

    The surface covers the main human-interaction needs: permission, notification, location, and visual input. A minor gap is the absence of a way to ask a free-form question and get a text answer back, since ask_approval only returns APPROVED/DENIED/NO ANSWER.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to send push notifications and interactive alerts to iPhone and Mac devices via the BotBell app. It allows AI to receive user replies and manage notification bots for tasks like alerts, reminders, and remote approvals.
      2
      18 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables an AI agent to place outbound phone calls through the user's own Twilio account, delivering a spoken message or asking a single question and returning the recipient's transcribed reply to the agent. It exposes just two tools—one-way notifications and one-question calls to a fixed, preconfigured number with built-in rate limits and guardrails.
      112 PyPI
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to request human approval before consequential actions, with policy-based routing, phone-based approver decisions, and signed audit evidence.
      42 npm
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI agents to reach users on their phone through push notifications, and to raise urgent, escalating alarms that fall back to a voice call until someone acknowledges. It also ships hooks that notify users automatically when Claude Code or Codex needs input or finishes a turn.
      3
      6 npm
      MIT