npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@spekoai/mcp-calls

v0.6.4

Published

Place real, disclosed phone calls to businesses straight from your coding agent — the Speko "AI calls for devs" MCP. Single self-contained package: `npx @spekoai/mcp-calls init` to set up.

Readme

@spekoai/mcp-calls

Place real, disclosed phone calls to businesses — straight from your coding agent.

"call Sakura Sushi and ask if they have a table for 4 at 8pm — my name is John" → the agent dials, opens with "Hi, this is an AI assistant calling on behalf of John…", and the OUTCOME: (booked / not available) lands back in your terminal.

A Model Context Protocol server for Claude Code, Claude Desktop, and any MCP client. Powered by Speko.

Setup — one command

npx @spekoai/mcp-calls@latest init

The wizard finds every coding agent on your machine, signs you in with your browser, and configures each one — Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Gemini CLI, Codex CLI, Cline (Zed gets a paste-ready snippet). Each agent also gets the calling guide in its own rules convention (Claude skill, Codex/Gemini/ Windsurf rules files, Cline rules, VS Code instructions). Then just ask your agent to call a business. Same tools, same server-enforced safety rails, whichever agent you use.

Already have a key, or on a headless box? --token sk_... or --paste skips the browser. --client cursor,codex (or all, the default) picks which agents to configure. Re-authenticate anytime with npx @spekoai/mcp-calls login.

It runs single-process: give it your SPEKO_API_KEY and it calls api.speko.dev directly — no separate server to run.

# Claude Code
claude mcp add speko-calls --scope user --env SPEKO_API_KEY=sk_... -- npx -y @spekoai/mcp-calls
// Claude Desktop / Cursor / Windsurf / Gemini CLI / Cline — the standard mcpServers shape
{ "mcpServers": { "speko-calls": {
  "command": "npx", "args": ["-y", "@spekoai/mcp-calls"], "env": { "SPEKO_API_KEY": "sk_..." }
} } }
// VS Code — .vscode/mcp.json or user mcp.json (note the `servers` root key)
{ "servers": { "speko-calls": {
  "type": "stdio", "command": "npx", "args": ["-y", "@spekoai/mcp-calls"], "env": { "SPEKO_API_KEY": "sk_..." }
} } }
# Codex CLI — ~/.codex/config.toml (or: codex mcp add speko-calls --env SPEKO_API_KEY=sk_... -- npx -y @spekoai/mcp-calls)
[mcp_servers.speko-calls]
command = "npx"
args = ["-y", "@spekoai/mcp-calls"]
[mcp_servers.speko-calls.env]
SPEKO_API_KEY = "sk_..."

npx @spekoai/mcp-calls init --print-config prints all of these with your key filled in. Get a key at platform.speko.dev. To route through a hosted backing server instead of running in-process, set SPEKO_MCP_SERVER_URL.

Tools

| Tool | What it does | | --- | --- | | lookup_business(name, location?, phone_number?) | Resolve a business → dialable candidates + a signed dial_token per callable one (the only path that can authorize a call). Pass phone_number (E.164 — e.g. found via the agent's web search) to skip the directory lookup; still carrier-verified as a business line. | | make_call(dial_token, objective, caller_name, context?) | Place the disclosed, objective-scoped call; wait for it to finish; return the OUTCOME + transcript. Honest connected/answered/not_connected. | | call_number(phone_number, objective, caller_name) | Disclosed call to a number you have or found via web search (business or personal) — the default path once you have the number. Mobiles allowed. On by default (SPEKO_ALLOW_DIRECT_DIAL=0 restricts to business lines). | | get_call(call_id) | Read-only: re-check a call's status, OUTCOME, and transcript. Never dials. | | check_call_readiness() | Read-only preflight: auth, credit balance, outbound caller-ID. Never dials. |

Safety

Every call opens with a non-removable AI disclosure. lookup_business carrier-verifies business lines before minting a dial_token; call_number is for numbers the human has consent to call. Server guardrails include no-sell/no-spam + harassment + impersonation screens, per-number rate caps, a local do-not-call list (speko dnc), and an after-hours confirmation gate for late or unknown-timezone calls. make_call is authorized only by a fresh, short-lived, signed dial_token from lookup_business — a raw phone number can never dial.

CLI

Beyond the MCP server, speko is also a terminal CLI — run it with a subcommand:

speko audio speak "<text>"        # text-to-speech (stdin/pipe ok; -o file, --format wav|mp3)
speko audio transcribe <file|->   # speech-to-text
speko voices [--provider <p>]     # list the voices the router can pick
speko usage                       # account usage this period: sessions, minutes, spend, balance
speko credits [--ledger]          # prepaid balance (+ recent credit movements)
speko call report <id>            # a finished call's outcome, cost + cost breakdown
speko call events <id>            # timeline / "speech diagram" of the call
speko call transcript <id>        # the transcript, one line per turn
speko dnc list | add <e164> | remove <e164>   # local do-not-call ledger

All commands accept --json. speko in a terminal prints this list; piped (no subcommand) it runs as the MCP server. See AGENTS.md for the full agent-oriented guide.

Links

MIT © SpekoAI