
DialMCP
com.dialmcpPublished by dialmcp.comOfficial publisherv0.1.0Updated Oct 25, 2026
Let AI agents place real phone calls from your verified number, with transcripts and recordings.
Overview
DialMCP lets an AI assistant place real outbound phone calls from your own SMS-verified number, then poll for status, transcripts and recordings.
- What you can do
- Place outbound calls to US or Canadian numbers with a stated objective, returning a call ID immediately and running asynchronously. Check a call's status and live progress, and once finished retrieve the transcript, recording link and structured outcome. Hang up an in-progress call immediately. List recent calls with their statuses and outcomes.
- When to use it
- Useful when an assistant should actually phone a business or person on your behalf — for example to check availability, confirm details or make a request — and you want a transcript and outcome afterwards. Intended for legitimate, disclosed, low-volume personal or business calls, not outreach campaigns.
- Requirements
- A remote MCP endpoint over Streamable HTTP with OAuth 2.1 sign-in; no API keys. A US or Canadian mobile number verified by SMS, which becomes the caller ID; users must be 18 or older. The optional stdio bridge package needs Node.js 18 or newer. Calls are limited to US and Canadian destinations.
Installation
In SourceWeft
- Open DialMCP in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/com.dialmcp%2Fdialmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"dialmcp": {
"type": "http",
"url": "https://mcp.dialmcp.com/mcp"
}
}
}README
DialMCP Connector
Give your AI agent a phone.
Open-source connector for DialMCP — the hosted MCP server that lets AI agents place real phone calls from your own verified number.
What this is
DialMCP is a remote MCP server at https://mcp.dialmcp.com/mcp. Any client that speaks
Streamable HTTP with OAuth can connect to
it directly — no install, no API keys. You do not need this package for those clients.
This repository exists for two reasons:
- A stdio bridge for clients that only support local servers. Some MCP clients still can't talk to
remote servers.
dialmcp-connectorlaunches a local stdio server that proxies to the hosted endpoint and handles the OAuth browser flow for you. - The open, canonical documentation of the DialMCP integration — tool schemas, client configs, the
server.jsonregistry manifest, and the safety model — in one auditable place.
The hosted calling service itself is closed-source. This connector is MIT-licensed and contains no proprietary logic: it is a thin transport shim over a public endpoint.
Quick start
Direct connection (preferred)
If your client supports remote MCP servers, skip this package entirely:
Claude Code
Codex — ~/.codex/config.toml
claude.ai / Claude Desktop
Settings → Connectors → Add custom connector → paste https://mcp.dialmcp.com/mcp.
Gamut
Settings → Connectors → Add MCP server → paste the URL (HTTP / OAuth) → complete SMS verification.
On first connect a browser window opens for sign-in. Verify your phone number with an SMS code — that number becomes your caller ID.
Via this connector (stdio-only clients)
Or in an MCP client config:
See examples/ for ready-to-paste configs.
Tools
The API is async by design: place_call returns instantly with a call ID and your agent polls
get_call, so a multi-minute call never trips a client's tool timeout.
When a call completes, get_call returns a structured resolution — achieved, partially_achieved, or
not_achieved — with a summary, any commitments the other party made, suggested follow-ups, a
turn-by-turn transcript, and a signed link to the audio recording.
During the call the service presses keys through automated phone trees, waits silently through hold music, and detects voicemail — hanging up rather than leaving a message.
Safety model
Every protection is enforced server-side, not as model instructions the agent could talk itself out of.
- Disclosure. Every call opens by stating it's an AI assistant, who it's calling for, and that the line is recorded — before the ask. Compliance is independently verified against each transcript and logged. The agent never denies being an AI, and ends the call if the callee objects.
- Your real number. Calls present your own SMS-verified caller ID. Nothing is spoofed, and recipients can call you back.
- Rate limits. 1 concurrent call · 3/hour · 10/day · max 2/day to the same destination · 6-minute default and 10-minute hard cap, watchdog-enforced. Bulk calling is impossible by construction.
- Time and place. 8:00–21:00 destination local time (TCPA-aligned), US and Canada only. Unknown time zones are treated conservatively.
- Non-bypassable blocklist. Emergency services (911), premium-rate lines (900/976), and high-fraud ranges can never be dialed.
- Permanent opt-outs. Do-not-call requests are confirmed on the call, caught by a second independent transcript review, stored permanently, and enforced platform-wide across every user. Public self-serve opt-out at https://mcp.dialmcp.com/opt-out — no account needed.
- Objective screening. An independent reviewer screens each call's stated objective for harassment, deception, or fraud before dialing. The agent states only facts supplied in the task.
- Prohibited uses. Telemarketing, cold outreach, robocalling, surveys, lead generation, debt collection, and political outreach are barred by the Terms.
Full detail: https://dialmcp.com/safety.html
Requirements
- Node.js 18 or newer (only if you use the stdio bridge)
- A US or Canadian mobile number for SMS verification
- Users must be 18 or older
Links
- Website — https://dialmcp.com
- Safety and anti-spam — https://dialmcp.com/safety.html
- Privacy — https://dialmcp.com/privacy
- Terms — https://dialmcp.com/terms
- Do-not-call opt-out — https://mcp.dialmcp.com/opt-out
- Support — [email protected]
Releasing
Every release publishes to two places: npm (dialmcp-connector) and the
official MCP Registry (com.dialmcp/dialmcp). Both are
automated by .github/workflows/release.yml.
Cutting a release
- Bump
versionin bothpackage.jsonandserver.json—npm run validate:manifestfails if they disagree, and CI runs it on every push. - Merge to
main. - Run the Release workflow manually (Actions → Release → Run workflow,
dry_runleft checked) and let it go green. This packs the tarball and validatesserver.jsonagainst the live registry schema without publishing anything. - Publish a GitHub Release tagged
vX.Y.Z. The tag must matchpackage.jsonor the workflow stops before publishing.
Step 3 is worth the two minutes: registry versions are immutable and cannot be unpublished. A bad version can only be superseded by a higher one or marked deprecated.
What the workflow does
--provenance attaches a signed attestation linking the tarball back to the commit and workflow run that
built it, which is why the job needs id-token: write.
The registry publish is a separate job for two reasons. It has to wait for npm: the registry proves
ownership by fetching the freshly published version and reading its mcpName field, which 404s until npm
propagates (the job retries for ~2.5 minutes). And it holds the signing key, which is scoped to the whole
com.dialmcp namespace rather than this one package — so it lives in a protected environment. Keeping that
environment off the publish job is deliberate: its branch policy only admits v* tags, and applying it
job-wide would block manual dry runs from main outright.
One-time setup
The TXT record goes on the bare domain, SPF-style — a _mcp. selector is not read and fails with an opaque
signature error. Signatures carry a ±15s timestamp window, so the runner's clock must be accurate.
Contributing
Issues and pull requests are welcome for the connector, docs, and client configs. Bugs in the hosted service itself are best sent to [email protected]. Please read SECURITY.md before reporting anything security-related.
License
MIT © Datawizz Inc. See LICENSE.
Source: README.md at commit a911795
Tools
0Version history
1- v0.1.0LatestSep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts