MCP.Market

Handset MCP server

by handset-hq·io.github.handset-hq/handset·v0.1.1·1 stars

A business phone system for AI agents: send texts, place calls, read transcripts, buy numbers.

B75/100grade B
What users say
No reviews yet
Be the first
Safety scan
B75/100

full report

Adoption
Growing

1 stars42 downloads/wk

Reviews

Write one

Nobody has reviewed Handset yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Handset tools (15, 3 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • buy_numberwrite action

    BILLABLE in live mode (monthly rental): purchase a phone number for a tenant. In test mode numbers are free and simulated. Confirm with the user before buying on a live key.

  • create_tenantwrite action

    Create a tenant (one customer business). Returns the tenant with its tnt_\u2026 id.

  • get_call

    Retrieve a call: status, duration, AI summary (arrives ~15s after a transcribed call ends), and the event timeline (gathers, keypresses, streams).

  • get_thread

    Read one conversation's messages, oldest first.

  • get_transcript

    Read a call's transcript so far \u2014 callable mid-call for live transcription.

  • get_usage

    This month's usage by kind (segments, minutes, transcription, streams\u2026). Test-mode usage is metered but never billed.

  • list_calls

    List calls with status and duration, newest first.

  • list_conversations

    List message threads, newest activity first.

  • list_numbers

    List the account's phone numbers, optionally for one tenant.

  • list_tenants

    List tenants on this Handset account. A tenant is one of your customers' businesses \u2014 it owns numbers, conversations, and opt-out lists.

  • list_voicemails

    List voicemails with transcripts and time-limited audio URLs.

  • make_call

    OUTWARD-FACING: place a click-to-call \u2014 dials connect_to (the agent's phone) first, then to (the customer), and bridges them; both see the tenant number. Live mode rings real phones and bills per minute \u2014 confirm with the user first. Test mode simulates the whole lifecycle. Set transcribe for live transcript + AI summary.

  • search_numbers

    Search purchasable phone numbers by area code. Free and instant in test mode.

  • send_messagewrite action

    OUTWARD-FACING: send an SMS (or MMS with media_urls) from a tenant number. In live mode this texts a real person and bills per segment \u2014 confirm with the user first. Test mode is simulated and free. Replies thread by conversation_id.

  • start_transcription

    Turn on live transcription for an in-progress call (either direction). Idempotent. Billed per transcribed minute; an AI summary generates after hangup.

Public scan report

scanner v0.1.10 · 2026-11-03 · same rubric, same numbers if you re-run it

no findings
  • Code scan2 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 68 days ago12/15
  • Maintainer identityregistry namespace matches repository owner6/10
Overall 75/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Handset compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
75/100
higher than 45% of 48,255 servers
Tools
15
the typical server has 7
Tools that change things
20%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
1
more than 65% of 28,688 servers
Downloads a week
42
more than 34% of 12,191 servers with a package

What its tools let an agent do: 10 read · 2 create · 1 change · 1 send or post · 1 run or deploy

Install Handset in Claude Code, Cursor or VS Code

Runs npx -y @handset/mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add handset -- npx -y @handset/mcp
Add to Cursor

What the publisher says

From the Handset repository's README, as published. We do not edit it. Read it on GitHub

Handset UI

Texting inside your product, in an afternoon.

Open-source React components for embedded messaging, built on the Handset API. Distributed the shadcn way: the CLI copies the source into your repo, styled with your Tailwind tokens, yours to change.

# 1. Point the shadcn CLI at the Handset registry
npx shadcn@latest registry add @handset=https://ui.handset.dev/r/{name}.json

# 2. Install a complete texting surface + the server proxy route
npx shadcn@latest add @handset/messaging @handset/next-routes

Set HANDSETAPIKEY in your env, wire resolveTenantId() in the generated route to your session, and render it:

import { HandsetProvider } from "@handset/react";
import { Messaging } from "@/components/handset/messaging";

export default function MessagesPage() {
  return (
    <HandsetProvider>
      <div className="h-[600px]">
        <Messaging />
      </div>
    </HandsetProvider>
  );
}

What's in the registry

Architecture

Two layers, like shadcn-on-Radix:

useConversations, useThread, useComposer, plus segment math and a tiny client. Logic we maintain; bring your own UI if you prefer.

  • @handset/react (npm, versioned) — headless hooks:

components, copied into your project as source.

  • The registry (apps/www/registry) — the visual

Components never hold API keys. They call proxy routes in your backend (added by @handset/next-routes); your server holds the Handset key and your existing session auth decides which tenant each signed-in user sees. The Handset API handles the rest — numbers, delivery, threading, 10DLC compliance, STOP/HELP.

Development

pnpm install
pnpm --filter @handset/react build   # hooks package
pnpm dev                             # docs site + live demo at localhost:3000
pnpm registry:build                  # compile registry.json → public/r/*.json

The docs site serves a mock Handset API (apps/www/app/api/handset) so the demo works with zero setup.

Requirements

mock data without one

  • React 18+ (components target React 19 / Tailwind v4 / shadcn CLI ≥ 3)
  • A Handset account for real traffic — the demo runs on

Roadmap

See ROADMAP.md — shipped components, what's next (call summaries, MMS attachments, more framework proxies), and non-goals. Issues with real use cases move items up the list.

License

MIT © Handset HQ, Inc.

Nothing above is checked by us. What we check is on the safety report.

Handset: common questions

Is Handset MCP server safe?
Mostly: it is graded B (75/100). Read the Handset safety report
How do I install Handset?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Handset need an API key?
Yes. The registry entry asks for HANDSET_API_KEY.
Is Handset maintained?
The last commit was 70 days ago (2026-08-26). The latest release is v0.1.1.
How does Handset compare with other MCP servers?
safety score 75/100 (higher than 45% of 48,255 servers); tools 15 (the typical server has 7); tools that change things 20% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.