@pntr/cli
CLI and MCP server for PNTR — free *.pntr.dev subdomains
for developers, with DNS records, a disposable email inbox, and native
MCP integration.
Use one memorable hostname to point at a deployment, receive signup and OTP
emails, or capture Stripe and GitHub webhook requests. Manage the same workflow
from a terminal, Claude Code, Claude Desktop, Cursor, or another MCP client.
Quick start
This signs you in (device flow) and configures PNTR as an MCP server for the
AI clients detected on your machine (Claude Desktop, Claude Code, Cursor).
After that, you can ask your assistant to register subdomains, add DNS
records, check an inbox, or inspect a captured webhook.
Common workflows
Commands
pntr login Authenticate with PNTR using the device flow
pntr logout Clear stored credentials
pntr status Show authentication status
pntr serve Start the stdio MCP server (used by AI clients)
pntr setup-mcp Configure MCP for detected AI clients
MCP setup variants
Automatic (recommended)
Remote server — no local process
PNTR also runs a remote MCP server with GitHub OAuth. Point any
streamable-HTTP client at:
For Claude Code:
claude mcp add --transport http pntr https://api.pntr.dev/mcp
For Claude Desktop / Cursor (mcpServers config):
{
"mcpServers": {
"pntr": { "url": "https://api.pntr.dev/mcp" }
}
}
Your client opens a browser window to sign in with GitHub on first
connection. An SSE endpoint (https://api.pntr.dev/mcp/sse) exists for
older clients.
Local stdio server
npx @pntr/cli login
npx @pntr/cli serve
Or as an mcpServers config block:
{
"mcpServers": {
"pntr": {
"command": "npx",
"args": ["-y", "@pntr/cli", "serve"]
}
}
}
The server starts and lists tools without credentials; run npx @pntr/cli login (or set PNTR_TOKEN) before calling tools that touch your account.
list_domains - List available parent domains
check_subdomain - Check whether a name is available
list_subdomains - List your subdomains with DNS records
register_subdomain - Register a subdomain, optionally with an initial DNS record
update_subdomain - Set or replace DNS records, update description
delete_dns_record - Delete a single DNS record
toggle_subdomain - Enable or disable a subdomain
delete_subdomain - Delete a subdomain
toggle_email - Enable or disable the disposable inbox
list_emails - List received emails (kept 48 hours, 90 days on premium)
read_email - Read a received email's full content
toggle_capture - Turn a subdomain into an HTTP request bin
set_capture_response - Set the status, content type, and body a capture endpoint returns
list_requests - List captured HTTP requests
read_request - Read a captured request's headers and body
toggle_wildcard - Enable wildcard DNS (*.name.pntr.dev, premium)
Ask your assistant things like "register storm.pntr.dev pointing at
203.0.113.10", "enable email on storm and watch for the verification
code", or "read the latest email on storm.pntr.dev".
Notes