Internet identity for AI agents: register or broker domains, email, and DNS — pay by card or USDC.
Do not connect
A critical issue was found. Do not connect this server as-is.
Scanned 29 days ago Due for re-check
A server can change after it's graded. Re-run the automated scan to refresh this report.
This grade is deterministic and reproducible: the same server surface always yields the same grade under a given algorithm version. It is a real automated assessment computed by the MCPGrade engine from what the probe actually observed — not a fabricated or opinion score. It is not a manual human pentest, so it can miss context-specific risks.
Every signal below was measured directly by the automated probe. The grade is derived only from evidence like this — nothing is assumed.
The domani MCP server exposes 122 tools, focused primarily on communication, network, and filesystem capabilities. Its published description reads: "Internet identity for AI agents: register or broker domains, email, and DNS — pay by card or USDC". It communicates over Streamable HTTP using the 2025-06-18 protocol revision, and does not require authorization to connect. MCPGrade currently rates domani F — a critical issue was found and the server should not be connected as-is. Its most notable findings include "Hidden instructions in a tool description" and "Cross-tool shadowing". This report is a deterministic, reproducible automated assessment: the same observed surface always yields the same grade under a given algorithm version, and it is refreshed as new scans arrive and free to read — but it is not a substitute for a manual human security review. Always re-check domani's advertised tools, transport security, and authorization posture before connecting an autonomous agent or sharing sensitive context with it.
Add domani to an MCP client using the endpoint below. Review the grade and findings above before granting an autonomous agent access.
MCP endpoint
https://domani.run/mcpStreamable HTTP transport. This is the MCP endpoint, not a website — paste it into your MCP client server list rather than a browser.
Captured passively during the read-only scan. Click any value to find servers that match it.
The tools this server advertises via tools/list — names, purposes, and the parameters each accepts, exactly as enumerated read-only.
Get your account details, payment status, contact info status (has_contact), and referral code. Contact info must be set before purchasing domains.
Get truthful product milestones and the next useful actions for this account. Use this after authentication instead of treating token setup as success.
Check availability and price for one or more domains. Pass full domain names (e.g. mysite.com). For bulk TLD search, pass an array like ["myapp.com", "myapp.io", "myapp.dev"]. Uses RDAP + retail prici
AI-powered domain suggestions. Given a project description, generates full domain names with creative TLDs (e.g. codebuddy.dev, wavify.fm), checks availability, and returns only available domains with
Sorted worst-first. Each finding shows its severity, what it means, its OWASP MCP Top-10 mapping, and a recommended fix — the check id links to the exact methodology row that produced it.
tool: set_parking
A tool description contains imperative text aimed at the model (e.g. "ignore previous", "before answering read …").
chased domains. IMPORTANT: If the domain has existing DNS records, the resRecommendationRemove model-directed instructions from tool descriptions.
tool: get_activation
A tool description tries to alter the model’s use of another tool.
ating token setup as success.RecommendationDescriptions must describe only their own tool.
tool: dns_check
A tool description tries to alter the model’s use of another tool.
ce (faster than search, no pricing). Returns 'taken' (definitely regisRecommendationDescriptions must describe only their own tool.
tool: buy_aftermarket
A tool description tries to alter the model’s use of another tool.
site. Use when search shows a domain with for_sale.buyable = true. AlRecommendationDescriptions must describe only their own tool.
tool: provision_agent
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "webhook_url"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: get_dns
A tool description tries to alter the model’s use of another tool.
en - pass it to set_dns to detect concurrent zone changes.RecommendationDescriptions must describe only their own tool.
tool: set_dns
A tool description tries to alter the model’s use of another tool.
of being clobbered. Common patterns: Vercel (A @ 76.76.21.21), GitHub PageRecommendationDescriptions must describe only their own tool.
tool: restore_dns
A tool description tries to alter the model’s use of another tool.
kup (created by snapshot_dns or during transfers). Uses diff to avoid duplicRecommendationDescriptions must describe only their own tool.
tool: get_dnssec
A tool description tries to alter the model’s use of another tool.
SA records (via set_dns) for DANE.RecommendationDescriptions must describe only their own tool.
tool: setup_billing
A tool description tries to alter the model’s use of another tool.
the form, call get_account to verify has_payment_method is true. Only needRecommendationDescriptions must describe only their own tool.
tool: create_token
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
oken Create API Token Create a new API token with optional scoped perRecommendationRemove side-channel parameters; constrain tool inputs.
tool: create_token
A tool description tries to alter the model’s use of another tool.
ling/invoices), search (GET /api/domains/search, /suggest, /whois, /dnRecommendationDescriptions must describe only their own tool.
tool: create_token
One tool reads private data, ingests untrusted content, AND can send data outbound — the three preconditions for autonomous data theft in a single call. A prompt injection reaching this tool can exfiltrate secrets with no further step.
ks/{id}), email:read (GET /api/emails, /api/emails/{address}, /api/emails/{address}/messages, /apiRecommendationSplit the capabilities across separate least-privilege tools so no single tool can read secrets, read untrusted input, and reach the network at once.
tool: revoke_token
A tool description tries to alter the model’s use of another tool.
op working. Use list_tokens to find token IDs.RecommendationDescriptions must describe only their own tool.
tool: verify_connection
A tool description tries to alter the model’s use of another tool.
tion. Use after connect_domain to confirm records are live.RecommendationDescriptions must describe only their own tool.
tool: verify_service
A tool description tries to alter the model’s use of another tool.
(Stripe, Google Search Console, AWS SES, Postmark, Resend, Facebook, HRecommendationDescriptions must describe only their own tool.
tool: list_services
A tool description tries to alter the model’s use of another tool.
(Stripe, Google Search Console, etc.)RecommendationDescriptions must describe only their own tool.
tool: set_domain_redirect
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "url"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: check_transfer_eligibility
A tool description tries to alter the model’s use of another tool.
all this before transfer_domain to verify eligibility and show the user the priRecommendationDescriptions must describe only their own tool.
tool: check_transfer_eligibility
The text tells the model WHEN to call this tool relative to others ("always call first", "before any other tool", "chain to X tool") — a toxic-flow injection that hijacks the agent’s orchestration rather than describing the tool.
locked, etc.). Always call this before transfer_domain to verify eligibility and showRecommendationTool metadata must describe only the tool, never sequence the agent’s calls.
tool: transfer_domain
A tool description tries to alter the model’s use of another tool.
grate DNS. Call plan_domain_adoption first, show the exact price and continuity planRecommendationDescriptions must describe only their own tool.
tool: verify_import
A tool description tries to alter the model’s use of another tool.
TXT record from import_domain.RecommendationDescriptions must describe only their own tool.
tool: browse_marketplace
A tool description tries to alter the model’s use of another tool.
ith prices. Use buy_domain to purchase a listed domain.RecommendationDescriptions must describe only their own tool.
tool: create_webhook
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
d). The webhook secret is returned only once - save it to verify incomRecommendationRemove side-channel parameters; constrain tool inputs.
tool: update_webhook
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "webhook_id"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: update_webhook
A tool description tries to alter the model’s use of another tool.
ive status. Use list_webhooks to get the webhook ID first.RecommendationDescriptions must describe only their own tool.
tool: delete_webhook
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "webhook_id"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: list_webhook_deliveries
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "webhook_id"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: replay_webhook_delivery
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "webhook_id"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: setup_domain_email
A tool description tries to alter the model’s use of another tool.
l provider (Google Workspace, Fastmail, Proton).RecommendationDescriptions must describe only their own tool.
tool: create_mailbox
A tool description tries to alter the model’s use of another tool.
ing email provider (Google Workspace, etc.). API: POST /api/emails withRecommendationDescriptions must describe only their own tool.
tool: check_email_deliverability
A tool description tries to alter the model’s use of another tool.
checks used by send_email, without sending or consuming quota. Use this bRecommendationDescriptions must describe only their own tool.
tool: send_email
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
"Base64-encoded file content"},"filename":{"type":"string","description":"FiRecommendationRemove side-channel parameters; constrain tool inputs.
tool: list_email_messages
A tool description tries to alter the model’s use of another tool.
, direction and search filters. API: GET /api/emails/{address}/messageRecommendationDescriptions must describe only their own tool.
tool: set_email_webhook
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
parameter "webhook_url"RecommendationRemove side-channel parameters; constrain tool inputs.
tool: rotate_email_webhook_secret
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
e_email_webhook_secret Rotate Email Webhook Secret Regenerate the HMACRecommendationRemove side-channel parameters; constrain tool inputs.
tool: add_suppression
The text tells the model WHEN to call this tool relative to others ("always call first", "before any other tool", "chain to X tool") — a toxic-flow injection that hijacks the agent’s orchestration rather than describing the tool.
aints are added automatically - use this for addresses you want to stop emailing. API: PRecommendationTool metadata must describe only the tool, never sequence the agent’s calls.
tool: delete_message
A tool description tries to alter the model’s use of another tool.
reversible with update_email_messages action=restore. API: DELETE /api/emails/{addresRecommendationDescriptions must describe only their own tool.
tool: delete_messages
A tool description tries to alter the model’s use of another tool.
Reversible with update_email_messages action=restore. API: POST /api/emails/{address}RecommendationDescriptions must describe only their own tool.
tool: reply_to_message
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
ed by heartbeat_conversation_presence","type":"object","properties":{"threadRecommendationRemove side-channel parameters; constrain tool inputs.
tool: create_hosted_mailbox
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
a one-time app password. API: POST /api/emails with kind=hosted. {"$schRecommendationRemove side-channel parameters; constrain tool inputs.
tool: create_hosted_mailbox
A tool description tries to alter the model’s use of another tool.
ass workspace_id to create it in a workspace you own and atomically adoptRecommendationDescriptions must describe only their own tool.
tool: create_mailbox_credential
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
create_mailbox_credential Create App Password Create an app password forRecommendationRemove side-channel parameters; constrain tool inputs.
tool: revoke_mailbox_credential
The input schema declares a parameter that asks the caller to hand over a password, key, token, or other secret — a credential-harvest / token-passthrough risk. (Bare pagination `token` params are excluded.)
parameter "credential_id"RecommendationNever pass secrets as tool arguments; authenticate out-of-band and remove credential parameters from the schema.
The server accepts tool enumeration (and likely invocation) with no authentication.
RecommendationRequire OAuth 2.1 authorization for any server exposing non-public tools.
tool: get_account
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "get_account"RecommendationScope tools to the minimum needed.
tool: buy_domain
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "buy_domain"RecommendationScope tools to the minimum needed.
tool: provision_agent
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "provision_agent"RecommendationScope tools to the minimum needed.
tool: set_dns
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_dns"RecommendationScope tools to the minimum needed.
tool: restore_dns
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "restore_dns"RecommendationScope tools to the minimum needed.
tool: clone_dns
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "clone_dns"RecommendationScope tools to the minimum needed.
tool: update_identity
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "update_identity"RecommendationScope tools to the minimum needed.
tool: delete_dnssec
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "delete_dnssec"RecommendationScope tools to the minimum needed.
tool: upgrade_plan
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "upgrade_plan"RecommendationScope tools to the minimum needed.
tool: create_token
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "create_token"RecommendationScope tools to the minimum needed.
tool: connect_domain
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "connect_domain"RecommendationScope tools to the minimum needed.
tool: set_domain_redirect
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_domain_redirect"RecommendationScope tools to the minimum needed.
tool: set_contact
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_contact"RecommendationScope tools to the minimum needed.
tool: watch_transfer
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "watch_transfer"RecommendationScope tools to the minimum needed.
tool: set_parking
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_parking"RecommendationScope tools to the minimum needed.
tool: set_listing_price
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_listing_price"RecommendationScope tools to the minimum needed.
tool: sell_domain
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "sell_domain"RecommendationScope tools to the minimum needed.
tool: update_listing
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "update_listing"RecommendationScope tools to the minimum needed.
tool: unsell_domain
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "unsell_domain"RecommendationScope tools to the minimum needed.
tool: make_offer
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "make_offer"RecommendationScope tools to the minimum needed.
tool: respond_to_offer
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "respond_to_offer"RecommendationScope tools to the minimum needed.
tool: finalize_negotiation
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "finalize_negotiation"RecommendationScope tools to the minimum needed.
tool: acquire_domain
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "acquire_domain"RecommendationScope tools to the minimum needed.
tool: cancel_broker_request
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "cancel_broker_request"RecommendationScope tools to the minimum needed.
tool: get_broker_inquiry_state
One tool both accesses the filesystem and reaches the network. Combining two capability classes in a single tool widens its blast radius and is the substrate for confused-deputy and exfiltration abuse.
er) Owner-agent read path: poll the current, anonymized state of a brokerRecommendationSeparate filesystem and network capabilities into distinct, independently-scoped tools.
tool: create_backorder
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "create_backorder"RecommendationScope tools to the minimum needed.
tool: update_webhook
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "update_webhook"RecommendationScope tools to the minimum needed.
tool: delete_webhook
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "delete_webhook"RecommendationScope tools to the minimum needed.
tool: replay_webhook_delivery
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "replay_webhook_delivery"RecommendationScope tools to the minimum needed.
tool: create_mailbox
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "create_mailbox"RecommendationScope tools to the minimum needed.
tool: check_email_deliverability
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "check_email_deliverability"RecommendationScope tools to the minimum needed.
tool: send_email
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "send_email"RecommendationScope tools to the minimum needed.
tool: list_email_messages
One tool both accesses the filesystem and reaches the network. Combining two capability classes in a single tool widens its blast radius and is the substrate for confused-deputy and exfiltration abuse.
Email Messages List messages in a system folder or virtual view. Defaults to Inbox. Supports paRecommendationSeparate filesystem and network capabilities into distinct, independently-scoped tools.
tool: list_email_folders
One tool both accesses the filesystem and reaches the network. Combining two capability classes in a single tool widens its blast radius and is the substrate for confused-deputy and exfiltration abuse.
t_email_folders List Email Folders List canonical mailbox folders, virtual views,RecommendationSeparate filesystem and network capabilities into distinct, independently-scoped tools.
tool: update_email_messages
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "update_email_messages"RecommendationScope tools to the minimum needed.
tool: set_email_webhook
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_email_webhook"RecommendationScope tools to the minimum needed.
tool: rotate_email_webhook_secret
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "rotate_email_webhook_secret"RecommendationScope tools to the minimum needed.
tool: test_email_webhook
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "test_email_webhook"RecommendationScope tools to the minimum needed.
tool: set_email_forward
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_email_forward"RecommendationScope tools to the minimum needed.
tool: add_mailbox_alias
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "add_mailbox_alias"RecommendationScope tools to the minimum needed.
tool: remove_mailbox_alias
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "remove_mailbox_alias"RecommendationScope tools to the minimum needed.
tool: set_catch_all
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "set_catch_all"RecommendationScope tools to the minimum needed.
tool: clear_catch_all
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "clear_catch_all"RecommendationScope tools to the minimum needed.
tool: list_suppressions
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "list_suppressions"RecommendationScope tools to the minimum needed.
tool: add_suppression
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "add_suppression"RecommendationScope tools to the minimum needed.
tool: remove_suppression
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "remove_suppression"RecommendationScope tools to the minimum needed.
tool: add_mail_rule
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "add_mail_rule"RecommendationScope tools to the minimum needed.
tool: remove_mail_rule
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "remove_mail_rule"RecommendationScope tools to the minimum needed.
tool: delete_mailbox
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "delete_mailbox"RecommendationScope tools to the minimum needed.
tool: mark_messages_read
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "mark_messages_read"RecommendationScope tools to the minimum needed.
tool: delete_message
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "delete_message"RecommendationScope tools to the minimum needed.
tool: delete_messages
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "delete_messages"RecommendationScope tools to the minimum needed.
tool: forward_message
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "forward_message"RecommendationScope tools to the minimum needed.
tool: reply_to_message
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "reply_to_message"RecommendationScope tools to the minimum needed.
tool: create_hosted_mailbox
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "create_hosted_mailbox"RecommendationScope tools to the minimum needed.
tool: create_mailbox_credential
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "create_mailbox_credential"RecommendationScope tools to the minimum needed.
tool: revoke_mailbox_credential
The server advertises open-world / broadly-scoped capabilities.
no annotations on write-capable tool "revoke_mailbox_credential"RecommendationScope tools to the minimum needed.
tool: create_token
An unusually long description is a common injection-padding tactic.
description length 2738 charsRecommendationKeep descriptions concise.
Vantaj uptime monitoring via MCP — manage monitors, heartbeats, incidents, and status pages.
Unified gateway to Algeria's TKAWEN ecosystem: commerce, certification, and AI tools.
Provides access to the Cohereon Doctrine AI safety framework with governance components, tiered access, and agent onboarding.
Agentic rails for complex workflows with receipts, fees, and MCP tool access.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
List all available TLDs with registration and renewal pricing
Fast DNS-based domain existence check. Tests if a name is taken across many TLDs at once (faster than search, no pricing). Returns 'taken' (definitely registered) and 'candidates' (potentially availab
Purchase one or more domains. Always confirm with the user before calling. Accepts a single domain or an array of up to 10 (card only for bulk). If the user wants to pay with crypto/USDC: call with pa
Buy a taken domain that's listed for sale on an aftermarket (Afternic/Sedo) at its buy-now price, natively - no external site. Use when search shows a domain with for_sale.buyable = true. Always confi
Give an AI agent a complete internet identity in one call: buy a domain, set up email, create a mailbox, and (optionally) register a webhook for inbound email. Use this when someone wants to 'give my
List all domains you own
Get DNS records for a domain you own. Returns each record with a stable id, plus a zone_version token - pass it to set_dns to detect concurrent zone changes.
Upsert DNS records for a domain you own, at the rrset level: records at a (type, name) you send replace that rrset; rrsets you don't mention are preserved (NS never touched). An automatic zone backup
Capture all DNS records for a domain via public DNS lookups. Discovers subdomains from CT logs, SPF, and common names. Stores a server-side backup. Use before migrations or transfers.
Restore DNS records from the server-side backup (created by snapshot_dns or during transfers). Uses diff to avoid duplicates. Call snapshot_dns first to create a backup. Pass dry_run to preview what w
Copy the DNS setup of one domain you own onto another (e.g. brand.com → brand.dev with the same A/CNAME/MX). Merges by default (source wins on collisions, keeps the target's other records); set replac
Give your agent a free identity at <handle>.domani.run - a live profile page, no domain purchase, instantly. The frictionless way to start; upgrade to your own real domain later. Optional name/bio/emo
List the free agent identities (<handle>.domani.run) you've claimed.
Update a free identity's name/bio/emoji/email/links.
Release a free identity handle so it's available again.
List the DNSSEC delegation-signer (DS) records for a domain you own, and whether DNSSEC is enabled. Pair with TLSA records (via set_dns) for DANE.
Publish a DNSSEC delegation-signer (DS) record at the registry to enable DNSSEC. Get the DS values from your zone provider after signing the zone.
Remove a DNSSEC delegation-signer (DS) record at the registry by its key tag. Removing all DS records disables DNSSEC.
Get the authoritative nameservers configured for a domain you own. If empty, DNS operations (parking, email, connect) will fail.
Replace the nameservers for a domain you own. Requires 2–13 valid hostnames. Common values: OpenSRS DNS (ns1.systemdns.com, ns2.systemdns.com, ns3.systemdns.com), Cloudflare (assigned per account), cu
Get a checkout URL for the user to add a payment card. Returns a URL - tell the user to open it in their browser. After they complete the form, call get_account to verify has_payment_method is true. O
Get a Stripe checkout URL for the Agent plan ($19/month). Returns a URL. Tell the user to open it in their browser to complete the upgrade. Use this when the user hits the free plan monthly send limit
Cancel the user's current paid subscription. The subscription remains active until the end of the current billing period, then reverts to the free plan. Returns the cancellation date.
List the user's payment invoices. Returns invoice number, amount, date, and links to view/download the PDF. Each invoice is generated by Stripe when a domain is purchased, renewed, or transferred.
List all API tokens for your account. Shows token name, masked key, creation date, last used, and expiration status. Expired tokens are marked.
Create a new API token with optional scoped permissions and spend caps. The full key is returned only once - save it immediately. A token can only grant scopes it already has (scope attenuation) and s
The account's security audit trail, newest first: token lifecycle (created/revoked/escalation attempts), spend-cap and max_price denials, charges, payout requests. Use it to review what the account's
Revoke an API token immediately. The token will stop working. Use list_tokens to find token IDs.
Connect a domain to a hosting or email provider. Auto-detects provider from target, or accepts explicit provider name. For domains bought through the platform, DNS records are set automatically (statu
Check domain health: DNS propagation, SSL status, email (MX) configuration, and expiry date
Verify that a provider connection is working by checking DNS propagation. Use after connect_domain to confirm records are live.
Add DNS records to verify domain ownership for a third-party service (Stripe, Google Search Console, AWS SES, Postmark, Resend, Facebook, HubSpot, Microsoft 365). Unknown services fall back to a gener
List all supported services for domain verification (Stripe, Google Search Console, etc.)
Look up domain registration data via RDAP (modern WHOIS). Returns registrar, dates, status, nameservers, DNSSEC, and contact information (registrant, admin, tech, billing - often redacted for privacy)
Get website preview metadata (title, description, image, favicon) for any domain. Useful for understanding what a taken domain is currently used for. Data is cached for 7 days.
Enable or disable auto-renew for a domain you own. When enabled, the domain will be renewed automatically before expiry.
Enable or disable WHOIS privacy for a domain you own. When enabled, your personal contact information is hidden from public WHOIS lookups.
Lock or unlock a domain's transfer lock (clientTransferProhibited). When locked, transfer requests are rejected. Unlock before transferring to another registrar.
Forward a domain you own to another URL (e.g. brand.com -> brand.dev). The domain must point at domani's nameservers/parking IP. Permanent (308) by default, or temporary (307). Send an empty url to st
Get the EPP/auth code needed to transfer a domain to another registrar. Automatically unlocks the domain if it's locked. Give this code to the new registrar to initiate the transfer.
Check the status of an outbound domain transfer. Use after getting an auth code and initiating the transfer at the new registrar.
Check the status of an inbound domain transfer. Returns detailed status (pending_owner, pending_admin, pending_registry, completed, cancelled) with actionable hints.
Set your WHOIS contact information (recommended for ICANN compliance, required before transfers). You can purchase domains without setting contact info first - a default contact is used until you set
Resend a verification email for your WHOIS contact email. If the contact email matches your login email, it's already verified. Rate limited to once per 15 minutes.
Get detailed information about a domain you own, including auto-renew status, security lock, WHOIS privacy, and provider data.
Read-only planner for an existing domain. Inspects registrar, nameservers, DNS provider, DNSSEC, account state, transfer eligibility, and price. Returns safe next actions. Call this before asking for
Pre-check whether a domain can be transferred. Returns transfer price, eligibility status, and any blockers (unsupported TLD, ICANN waiting period, domain locked, etc.). Always call this before transf
Initiate a domain transfer from another provider. PAID. The transfer includes 1 year of renewal, preserves current nameservers, and does not migrate DNS. Call plan_domain_adoption first, show the exac
Watch a domain and get notified (email + webhook) when it becomes eligible for transfer. Uses RDAP to check ICANN lock periods and EPP status codes. If the domain is already eligible, returns immediat
Renew a domain you own for additional years. Always confirm with the user before calling this.
List all supported hosting and email providers with their connection methods, target requirements, and setup notes
Import an external domain you already own (registered at GoDaddy, Namecheap, Cloudflare, etc.) to manage through domani.run. Free, no transfer needed. Returns a TXT record to add at your DNS provider
Verify DNS TXT record and complete domain import. Call after adding the TXT record from import_domain.
Enable or disable the parking page for a domain you own. When enabled, visitors to the domain see a default parking page (or a 'For Sale' page if a listing price is set). Parking is enabled by default
Get visitor analytics for a parked domain - page views, inquiries, conversion rate, 30-day daily breakdown, and the 5 most recent inquiries. Use this to check how much traffic a parked domain gets and
Set a 'For Sale' price on a parked domain, or remove the listing. When a price is set and parking is enabled, visitors see a 'For Sale' page with the price and a contact form to reach the domain owner
List a domain you own for sale on the Domani marketplace. Buyers can purchase it directly via the API. The domain must be active and not already listed. Requires domains:write scope.
Update the price and/or description of an active marketplace listing. Requires domains:write scope.
Remove an active for-sale listing for a domain you own. The domain stays in your account but is no longer purchasable on the marketplace. Requires domains:write scope.
Open an anonymous price negotiation on a listed domain with an initial offer (below or at the asking price). The seller can counter, accept, or decline. Neither side sees the other's identity. Require
Counter, accept, or decline the current offer in a negotiation when it's your turn. 'accept' locks the price at the amount on the table; the buyer then finalizes payment. Requires deals:write scope.
As the buyer, pay the agreed price to create the escrow deal and start the transfer. Same payment methods as a purchase (card, USDC, x402). Requires domains:transfer scope. For a broker-sourced acquis
List your active and past price negotiations (as buyer or seller). Counterparties are anonymized. Requires deals:read scope.
Get a role-aware receipt/statement for a marketplace deal. Buyers see what they paid; sellers see the sale, the platform commission line, and the net payout. Works for every payment method. Requires d
Ask domani to acquire a specific taken, unlisted domain on your behalf. Agents source the owner via RDAP, reach out anonymously, and negotiate - commission-only, no upfront fee. Owner interest opens a
List your domain acquisition requests and their status (sourcing/contacted/negotiating/agreed/no_contact/declined). Requires deals:read scope.
Cancel an active domain acquisition request. Requires deals:write scope.
Owner-agent path: respond to a broker's acquisition inquiry using the token from the outreach email in your inbox - fully autonomous, no email round-trip, no magic-link. offer/counter names a price an
Owner-agent read path: poll the current, anonymized state of a broker inquiry with your token before acting. Returns the domain, the buyer's offer on the table, whose move it is, and the actions avail
Browse domains for sale on the Domani marketplace. Returns all active listings with prices. Use buy_domain to purchase a listed domain.
Place a backorder on a domain that is currently registered to someone else. We watch it and automatically register it for the user when it becomes available (drops) - availability is polled every few
List the user's backorders (watching, caught, failed, cancelled, expired). Optionally filter by status.
Stop watching a domain by cancelling a backorder. Only backorders in the 'watching' state can be cancelled.
List all webhook endpoints configured for the user's account. Returns URL, subscribed events, and active status for each webhook.
Register a new webhook endpoint to receive event notifications. The URL must use HTTPS. Choose which events to subscribe to (e.g. domain.purchased, transfer.completed). The webhook secret is returned
Update an existing webhook's URL, subscribed events, or active status. Use list_webhooks to get the webhook ID first.
Delete a webhook endpoint. All pending deliveries will be cancelled. This action cannot be undone.
Get recent delivery attempts for a webhook - shows event type, HTTP status, number of attempts, and any errors. Useful for debugging webhook issues.
Redeliver one immutable webhook event. Requires a caller-stable idempotency key; retries with the same key return the same receipt and never send twice.
Pre-configure email DNS on a domain (optional). This is called automatically by create_mailbox when needed. Use this only to pre-configure DNS before creating mailboxes. Pass force=true to override ex
Check if email is enabled on a domain and whether DNS records are verified. Returns record status and mailbox count.
Create an email address. Specify slug (required) and optionally domain. Pass workspace_id to create it inside a workspace you own; custom-domain creation atomically adopts the domain and all unscoped
List all your email addresses. Optionally filter by domain. API: GET /api/emails (or GET /api/email).
Run the same deliverability and abuse-safety checks used by send_email, without sending or consuming quota. Use this before authentication, payment, onboarding, or high-volume messages. API: POST /api
Send an email from one of your mailboxes. Specify domain and slug to identify the sender mailbox. Supports text and/or HTML body, CC/BCC, attachments (base64), and threading via In-Reply-To/References
List messages in a system folder or virtual view. Defaults to Inbox. Supports pagination, direction and search filters. API: GET /api/emails/{address}/messages.
Incrementally synchronize a mailbox with an opaque cursor. Call without a cursor before a bounded full snapshot, then replay changes from next_cursor. API: GET /api/email/changes.
List canonical mailbox folders, virtual views, server-derived total/unread counts, and backend capabilities. API: GET /api/emails/{address}/folders.
Apply a retry-safe lifecycle action to up to 100 messages. Returns a durable per-item operation receipt. Reuse the exact idempotency key after timeouts; never invent a new key for the same logical act
Get a single message by ID with full content, headers, delivery events, and attachment download URLs. API: GET /api/emails/{address}/messages/{id}.
Set or remove the inbound webhook URL for a mailbox. When set, incoming emails are POSTed to this URL in real-time with HMAC-SHA256 signing. Must be HTTPS. Set to null to remove. API: PUT /api/emails/
Regenerate the HMAC signing secret for a mailbox webhook. The old secret is immediately invalidated. API: POST /api/emails/{address}/webhook/rotate.
Send a signed test payload to the mailbox webhook URL. Returns HTTP status and success/failure. API: POST /api/emails/{address}/webhook/test.
Configure inbound handling for a mailbox: forward incoming emails to another address (in addition to storing) and/or drop spam-flagged messages. Set forward_to to null to remove forwarding. API: PATCH
Add an alias address that delivers into an existing mailbox, without using a mailbox slot. Useful for multiple public addresses (sales@, hello@, contact@) landing in one inbox. The alias must be on th
List all alias addresses that deliver into a mailbox. API: GET /api/emails/{address}/aliases.
Remove an alias address from a mailbox. Email to that address stops being delivered. API: DELETE /api/emails/{address}/aliases/{alias}.
Route any email sent to an unmatched address on a domain into a designated mailbox. Anything that does not match a mailbox, subaddress, or alias lands in the catch-all. The mailbox must already exist
Remove the catch-all on a domain. Email to unmatched addresses will be dropped again. API: DELETE /api/domains/{domain}/email/catch-all.
List addresses on your suppression list - hard bounces and complaints (added automatically) plus manual entries. Sends to these addresses are skipped. API: GET /api/suppressions.
Manually add an address to your suppression list so future sends skip it. Hard bounces and complaints are added automatically - use this for addresses you want to stop emailing. API: POST /api/suppres
Remove an address from your suppression list so you can email it again (e.g. after the recipient fixed their mailbox). API: DELETE /api/suppressions/{address}.
Add an inbound filtering rule to a mailbox. If a message matches (by from/to/subject/body), the action runs: drop, mark_read, forward (to action_arg), webhook_only (skip forward-to), or label (with ac
List a mailbox's inbound filtering rules, in the priority order they are applied. API: GET /api/emails/{address}/rules.
Remove an inbound filtering rule from a mailbox. API: DELETE /api/emails/{address}/rules/{ruleId}.
Delete a mailbox and all its messages (including attachments). Requires confirm=true. Call without confirm first to see what will be deleted. API: DELETE /api/emails/{address}.
Retry-safely mark messages read or unread and return a durable per-item receipt. Reuse the exact idempotency key after timeouts. API: PATCH /api/emails/{address}/messages/read.
Move an email message to Trash. This is reversible with update_email_messages action=restore. API: DELETE /api/emails/{address}/messages/{id}.
Retry-safely move messages to Trash and return a durable per-item receipt. Reuse the exact idempotency key after timeouts. Reversible with update_email_messages action=restore. API: POST /api/emails/{
Forward an email message to another address. Includes the original message context (sender, date, subject, body). Optionally prepend a note. Subject is auto-prefixed with 'Fwd:'. API: POST /api/emails
Reply to an email message. For shared human-agent mailboxes, first heartbeat composing presence and pass coordination plus a stable idempotency_key; the server atomically rejects stale/double replies.
Check email DNS health for a domain: MX records, SPF, DMARC, DKIM. Auto-detects the email provider from MX records.
Get an owner-scoped email health report for a domain. Separates deterministic DNS readiness, 30-day bounce and complaint outcomes, account safety state, and measured inbox placement. A readiness score
Create a real IMAP/SMTP mailbox on a domain you own (connect Apple Mail, Thunderbird, or any mail client), instead of an API mailbox. Pass workspace_id to create it in a workspace you own and atomical
Get IMAP/SMTP settings for a hosted mailbox to configure a mail client (Apple Mail, Thunderbird). Username is the full address; password is an app password. API: GET /api/emails/{address}/client-setti
Create an app password for a hosted mailbox, used as the password in a mail client. The secret is returned once - store it. API: POST /api/emails/{address}/credentials.
List the app passwords for a hosted mailbox (labels + metadata; secrets are shown only once at creation). API: GET /api/emails/{address}/credentials.
Revoke an app password on a hosted mailbox. Any mail client using it stops connecting. API: DELETE /api/emails/{address}/credentials/{id}.