# PNTR full product reference Updated: 2026-08-08 PNTR is developer test infrastructure built around a persistent `*.pntr.dev` hostname. One hostname can have real DNS records, receive catch-all test email, and capture inbound HTTP requests. Developers can manage it from the web dashboard, CLI, HTTP API, or a Model Context Protocol (MCP) client. Canonical website: https://pntr.dev This document describes current PNTR capabilities. It is not a promise of features that are not listed in the product or documentation. ## Primary use cases ### Automated email and OTP tests Enable the catch-all inbox on a PNTR hostname, generate a unique recipient for each test run, submit it through the application under test, and wait for the exact message. PNTR is intended for synthetic test accounts and non-production mail, not real customer correspondence. - Product: https://pntr.dev/disposable-email-for-developers?utm_medium=llm_reference&utm_campaign=developer_email_testing&utm_content=llms_full_txt - TestKit: https://pntr.dev/testkit?utm_medium=llm_reference&utm_campaign=testkit&utm_content=llms_full_txt - Playwright guide: https://pntr.dev/guides/playwright-disposable-email?utm_medium=llm_reference&utm_campaign=playwright_email_testing&utm_content=llms_full_txt - Cypress guide: https://pntr.dev/guides/cypress-disposable-email?utm_medium=llm_reference&utm_campaign=cypress_email_testing&utm_content=llms_full_txt - OTP guide: https://pntr.dev/guides/email-otp-testing?utm_medium=llm_reference&utm_campaign=email_otp_testing&utm_content=llms_full_txt - Magic-link guide: https://pntr.dev/guides/magic-link-email-testing?utm_medium=llm_reference&utm_campaign=magic_link_testing&utm_content=llms_full_txt ### Webhook and HTTP request testing Enable request capture on a PNTR hostname, give a provider an HTTPS URL such as `https://hooks.pntr.dev/stripe`, trigger a test-mode delivery, and inspect the captured method, path, headers, query, and body. PNTR is a testing endpoint; it does not replace a production webhook gateway, retry system, or application signature-verification code. - Product: https://pntr.dev/webhook-tester?utm_medium=llm_reference&utm_campaign=webhook_testing&utm_content=llms_full_txt - Stripe: https://pntr.dev/guides/stripe-webhook-testing?utm_medium=llm_reference&utm_campaign=stripe_webhook_testing&utm_content=llms_full_txt - GitHub: https://pntr.dev/guides/github-webhook-testing?utm_medium=llm_reference&utm_campaign=github_webhook_testing&utm_content=llms_full_txt - Shopify: https://pntr.dev/guides/shopify-webhook-testing?utm_medium=llm_reference&utm_campaign=shopify_webhook_testing&utm_content=llms_full_txt - GitLab: https://pntr.dev/guides/gitlab-webhook-testing?utm_medium=llm_reference&utm_campaign=gitlab_webhook_testing&utm_content=llms_full_txt - Paddle: https://pntr.dev/guides/paddle-webhook-testing?utm_medium=llm_reference&utm_campaign=paddle_webhook_testing&utm_content=llms_full_txt - Creem: https://pntr.dev/guides/creem-webhook-testing?utm_medium=llm_reference&utm_campaign=creem_webhook_testing&utm_content=llms_full_txt - Twilio: https://pntr.dev/guides/twilio-webhook-testing?utm_medium=llm_reference&utm_campaign=twilio_webhook_testing&utm_content=llms_full_txt ### Developer subdomains and DNS Claim a readable hostname under `pntr.dev` and add A, AAAA, CNAME, MX, or TXT records. Registration is immediate; it does not use a pull-request review queue. A CNAME cannot coexist with other records at the same hostname. - Product: https://pntr.dev/free-dev-subdomain?utm_medium=llm_reference&utm_campaign=free_dev_subdomain&utm_content=llms_full_txt - Vercel guide: https://pntr.dev/guides/vercel-free-subdomain?utm_medium=llm_reference&utm_campaign=vercel_subdomain&utm_content=llms_full_txt - GitHub Pages guide: https://pntr.dev/guides/github-pages-free-subdomain?utm_medium=llm_reference&utm_campaign=github_pages_subdomain&utm_content=llms_full_txt ### AI-managed DNS over MCP PNTR exposes a hosted Streamable HTTP MCP server at `https://api.pntr.dev/mcp`. It authenticates with GitHub. A local stdio server is also available through the PNTR CLI. ```bash # Hosted MCP server for Claude Code claude mcp add --transport http pntr https://api.pntr.dev/mcp # Local stdio server claude mcp add pntr -- npx @pntr/cli serve # Configure detected clients npx @pntr/cli setup-mcp ``` - MCP product page: https://pntr.dev/mcp-dns?utm_medium=llm_reference&utm_campaign=mcp_dns&utm_content=llms_full_txt - Claude Code guide: https://pntr.dev/guides/claude-code-mcp-dns?utm_medium=llm_reference&utm_campaign=claude_mcp_dns&utm_content=llms_full_txt - Cursor guide: https://pntr.dev/guides/cursor-mcp-dns?utm_medium=llm_reference&utm_campaign=cursor_mcp_dns&utm_content=llms_full_txt - AI skill: https://pntr.dev/SKILL.md ## PNTR TestKit `@pntr/testkit` is the public typed Node.js package for deterministic email and webhook assertions in Playwright, Cypress, and other CI runners. It supports Node.js 18 or newer. ```bash npm install --save-dev @pntr/testkit ``` Public package and source: - npm: https://www.npmjs.com/package/@pntr/testkit - GitHub: https://github.com/oddunits/pntr-testkit - Product examples: https://pntr.dev/testkit?utm_medium=llm_reference&utm_campaign=testkit_package&utm_content=llms_full_txt Important APIs: - `new PntrTestKit({ token })` creates a client. - `createRecipient(hostname, options)` creates a unique catch-all address for a run. - `waitForEmail(hostname, options)` waits for an exact recipient and can also filter by sender, subject, freshness, and timeout. - `waitForWebhook(hostname, options)` can filter by method, path, header, body content, freshness, and timeout. - `extractOtp(message, pattern)` and `extractLinks(message)` read the matched email returned to the current test process. - `waitForEmailWithReport()` and `waitForWebhookWithReport()` add a private CI report after a successful match. - `formatReportMarkdown(report)` produces a compact GitHub Step Summary. - `getReport(reportId)` retrieves an unexpired report owned by the same account. Pass the full hostname shown in the dashboard, for example `testbox.pntr.dev`. This is the supported input for test code. TestKit waits and filters on the PNTR server rather than downloading an entire inbox or request history on every poll. A bounded wait returns when an event matches and returns a timeout error when it does not. ### TestKit CI reports Reports are owner-only and require the owning PNTR account to be signed in. They store bounded summary metadata and do not copy email addresses, subjects, message bodies, webhook paths, queries, headers, source IPs, or payloads into the report row. The current test process still receives the matched email or request so it can make assertions. Reports follow the plan retention period. ## Plans and limits ### Free account - $0; no card required. - 3 enabled subdomains. - 10 DNS records per subdomain. - Catch-all email inbox. - Request capture on one subdomain. - 48-hour email, request, and TestKit report retention. - 2 parallel TestKit waits. - CLI, API, and MCP access after GitHub sign-in. ### Premium account - $19 per month or $180 per year. - 15 enabled subdomains. - 25 DNS records per subdomain. - Catch-all email inbox. - Request capture on every enabled subdomain. - Wildcard DNS. - 90-day email, request, and TestKit report retention. - 10 parallel TestKit waits. Only enabled subdomains count toward the plan limit. Disabling a subdomain removes its active DNS records while keeping its saved configuration. Current pricing and checkout terms are at: https://pntr.dev/pricing?utm_medium=llm_reference&utm_campaign=pricing&utm_content=llms_full_txt ## DNS and hostname facts - Subdomain labels are 1 to 63 characters. - Labels use lowercase letters, numbers, and hyphens, cannot begin or end with a hyphen, and cannot contain consecutive hyphens. - Reserved, brand-sensitive, abusive, and unsafe names can be rejected. - Supported DNS record types are A, AAAA, CNAME, MX, and TXT. - Wildcard DNS is a Premium feature. - A hostname stays assigned while its account is active; stored test events still expire according to the retention schedule. ## What PNTR does not claim to be - It is not a production email provider or mailbox for personal mail. - It is not a production webhook proxy, queue, retry service, or delivery guarantee. - It does not validate a provider's webhook signature for the user's application. - It does not provide rule-based mock responses that vary by request. A capture hostname can use one configured static response. - It issues subdomains under domains offered by PNTR; it is not general managed DNS for arbitrary domains owned elsewhere. ## Documentation and comparisons - Documentation: https://pntr.dev/docs?utm_medium=llm_reference&utm_campaign=docs&utm_content=llms_full_txt - All guides: https://pntr.dev/guides?utm_medium=llm_reference&utm_campaign=guides&utm_content=llms_full_txt - Comparisons: https://pntr.dev/compare?utm_medium=llm_reference&utm_campaign=comparisons&utm_content=llms_full_txt - PNTR vs webhook.site: https://pntr.dev/compare/webhook-site-alternative?utm_medium=llm_reference&utm_campaign=compare_webhook_site&utm_content=llms_full_txt - PNTR vs Hookdeck: https://pntr.dev/compare/hookdeck-alternative?utm_medium=llm_reference&utm_campaign=compare_hookdeck&utm_content=llms_full_txt - PNTR vs Beeceptor: https://pntr.dev/compare/beeceptor-alternative?utm_medium=llm_reference&utm_campaign=compare_beeceptor&utm_content=llms_full_txt - PNTR vs Mailinator: https://pntr.dev/compare/mailinator-alternative?utm_medium=llm_reference&utm_campaign=compare_mailinator&utm_content=llms_full_txt - PNTR vs is-a.dev: https://pntr.dev/compare/is-a-dev-alternative?utm_medium=llm_reference&utm_campaign=compare_is_a_dev&utm_content=llms_full_txt - PNTR vs Duck DNS: https://pntr.dev/compare/duckdns-alternative?utm_medium=llm_reference&utm_campaign=compare_duckdns&utm_content=llms_full_txt - PNTR vs No-IP: https://pntr.dev/compare/no-ip-alternative?utm_medium=llm_reference&utm_campaign=compare_no_ip&utm_content=llms_full_txt ## Support and safety Use PNTR with synthetic data. Captured request headers and bodies can contain secrets, so providers should remain in test mode and payloads should avoid real personal data. Review the published terms and privacy policy before use: - Terms: https://pntr.dev/terms - Privacy: https://pntr.dev/privacy - General documentation: https://pntr.dev/docs