Domani

run.domani由 domani.run 发布官方发布者v0.4.15更新于 Oct 24, 2026

Internet identity for AI agents: register or broker domains, email, DNS - pay by card or USDC.

已验证Streamable HTTP可网页运行云端与基础设施沟通与协作商业与电商

概览

AI 生成的概览

Domani 为 AI 助手提供类型化工具,用于搜索、购买和管理域名、编辑 DNS,并在自有域名上创建、收发邮件。

可以做什么
  • 搜索、推荐、购买、续费、转移和列出域名,并查询价格与 WHOIS
  • 读取、添加、删除、快照与恢复 DNS 记录,设置域名服务器,并为托管或邮件服务商自动配置 DNS
  • 创建、删除和列出邮箱,查看收件箱与文件夹,发送、转发、归档、删除和标记邮件
  • 配置并测试入站邮件 webhook,检查域名的 DNS、SSL、邮件与到期状态
  • 管理自动续费、WHOIS 隐私、停放页面、令牌、发票和通知等账户设置
适用场景
适合需要让助手拥有并配置自身网络身份的场合:注册域名、把 DNS 接到主机、运行可收发邮件的邮箱。也适合需要一次性开通域名、邮箱和入站 webhook 的智能体流程。
运行要求
远程端点 domani.run,需 OAuth 登录。购买需要 Domani 账户及已保存的支付方式;CLI 方式使用 DOMANI_API_KEY 或钥匙串登录,DOMANI_ACCOUNT 用于在多个已保存账户间选择。
安装前请注意
购买、续费和转移域名会从已保存的银行卡扣款,操作前应确认账户与价格。DNS 修改、删除邮箱、发送邮件和配置 webhook 都会改动线上数据。API 密钥和 webhook 认证头属于机密,README 建议使用限定范围、会过期的令牌,并把机密放在环境变量而非提示词或 shell 历史中。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Domani,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/run.domani%2Fdomani/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "domani": {
      "type": "http",
      "url": "https://domani.run/mcp"
    }
  }
}

README

domani

Domains and email - for humans and AI agents.

Register domains, manage DNS, create mailboxes, send and receive email. From your terminal, your agent, or the web.

[npm version] [license]

How it works

domani gives you one account and multiple ways in:

  • Web - Dashboard with a full inbox (compose, reply, threads), DNS editor, domain management
  • CLI - This package. Everything the web app does, from your terminal
  • MCP Server - typed tools for Claude Code, Cursor, Codex, and any MCP-compatible agent
  • OpenClaw - openclaw skills install @gwendall/domani
  • Agent Skill - Step-by-step guide your agent can follow. Install with npx skills add domani.run
  • REST API - Direct HTTP access to everything

All interfaces share the same API key and the same data.

Install

bash
npm install -g domani-cli

Secure MCP bridge

Agent plugins can use Domani without placing an API key in a prompt, shell history, or editor configuration:

bash
domani login --surface mcpdomani mcp serve

domani login stores the credential in the operating-system keychain when one is available. The stdio bridge resolves it locally and forwards MCP requests to https://domani.run/mcp; stdout remains reserved for JSON-RPC messages. To pin the bridge to one of several saved accounts, start it with DOMANI_ACCOUNT=<name> domani mcp serve (or domani --account <name> mcp serve).

For an agent acting on someone else's behalf, request a scoped, expiring credential instead of their account key:

bash
domani login --scopes domains:read,search --label "Project agent" --expires-in 86400

The approval screen shows the requested access and the resulting credential is stored in the keychain without being printed.

After login, prove one complete inbound loop before browsing other tools or buying a domain:

bash
domani email create [email protected]domani email webhook [email protected] --url https://my-agent.example/webhookdomani email webhook-test [email protected]

Use --surface plugin, --surface skill, or --surface api when that is the entry point. This keeps activation attribution consistent without exposing a credential.

This installs the domani command. Or run directly with npx:

bash
npx domani-cli search myapp .com .dev .ai

Quick start

bash
# Domaindomani search myapp .com .io .dev     # Check availabilitydomani buy myapp.dev                  # Purchase a domaindomani connect myapp.dev vercel       # Auto-configure DNS for Vercel
# Emaildomani email create [email protected]               # Create [email protected]domani email send [email protected] \  --to [email protected] --subject "Hello" --body "Sent from my terminal"domani email forward [email protected] \  --forward-to [email protected]                        # Forward inbound to personal email
# Healthdomani status myapp.dev               # DNS, SSL, email, expiry check

Examples

bash
# Find available domains with a budgetdomani search startup --expand --max-price 20
# AI-powered name suggestionsdomani suggest "minimalist productivity app" --style brandable --tlds com,dev,ai
# Buy multiple domains at oncedomani buy startup.dev startup.ai --yes
# Set up Vercel + Google Workspace in two commandsdomani connect startup.dev verceldomani connect startup.dev google-workspace
# Full email workflow: create, send, check inbox, forwarddomani email create [email protected]domani email send [email protected] \  --to [email protected] --subject "Deck" --body "Here's our deck."domani email inbox [email protected] --direction indomani email forward [email protected] --forward-to [email protected]
# Webhook for inbound emails (for bots, support systems, etc.)# CURSOR_AUTH contains the complete value, e.g. "Bearer sender-key"domani email webhook [email protected] --url https://myapp.dev/hooks/email \  --authorization-env CURSOR_AUTHdomani email webhook-test [email protected]
# Provision domain + mailbox + authenticated event webhook in one call.# The secret stays in the environment; only its variable name is in argv.AGENT_AUTH="Bearer sender-key" domani provision agent.dev \  --webhook https://agent.example/inbox --authorization-env AGENT_AUTH
# Export DNS records before making changesdomani dns startup.dev snapshotdomani dns startup.dev set TXT @ "v=spf1 include:_spf.google.com ~all"
# Pipe to jq (auto-JSON when piped, no --json needed)domani list | jq '.domains[] | {domain, expires_at}'
# Introspect command schemas for agent integrationdomani schema buy --json

Commands

Domains

domani search <name> [tlds...]    Check availability across TLDs (--expand for 30+)domani suggest <prompt>           AI-powered domain suggestions (--style, --lang, --tlds)domani buy <domains...>           Purchase one or more domainsdomani adopt <domain>             Inspect and plan a safe connection or transferdomani transfer <domain>          Transfer registration, preserving current nameserversdomani renew <domain>             Renew a domain (--years 1-10)domani import <domain>            Import a domain you own elsewhere (DNS monitoring only)domani list                       List your domainsdomani status <domain>            Health check (DNS, SSL, email, expiry)domani tlds                       List all TLDs with pricing (--sort, --max-price)domani whois <domain>             WHOIS/RDAP lookupdomani deals [id]                 Marketplace deals (--role, --status, --limit, --cursor) or one deal

Email

domani email list                    List all mailboxesdomani email create user@domain      Create a mailboxdomani email delete user@domain      Delete a mailboxdomani email inbox user@domain       List messages (--folder, --view, --direction, --since, --until, --cursor)domani email folders user@domain     List folder and view countsdomani email contacts                Address book (--q, --cursor; --order created for a full sync)domani email archive user@domain --message-ids m1,m2domani email trash user@domain --message-ids m1domani email restore user@domain --message-ids m1domani email read|unread|star|unstar user@domain --message-ids m1,m2domani email send user@domain        Send an email (--to, --subject, --body, --cc, --bcc)domani email forward user@domain     Forward inbound to a personal address (--forward-to)domani email webhook user@domain     Forward inbound as JSON (--url, --authorization-env, --api-key-env, --clear-headers)domani email webhook-test user@domain Deliver one signed test event to the configured webhookdomani email setup --domain <domain>       Auto-configure MX, SPF, DKIM, DMARCdomani email status --domain <domain>      Check email DNS healthdomani email connect --domain <domain> <provider>   Connect external provider (Gmail, Fastmail, Proton)

Mailzero assistant (private preview)

domani assistant today               Now, Needs you, Waiting, Upcoming, Handleddomani assistant settings            Opt-in state, consent, and mailbox scopedomani assistant set                 Change settings (--enable, --shadow, --pause, --mailboxes, --none, --days)domani assistant preview             Record consent and start a background history import (--mailboxes, --consent)domani assistant backfill|retry      Follow the import or requeue its terminal failuresdomani assistant item <id>           One work item with its Decision and optionsdomani assistant choose <id>         Record a decision (--item-version, --decision, --decision-version, --option)domani assistant instruct|snooze|ignore|take-over|correct <id>domani assistant plan <id>           Exact preview of a prepared reply; nothing is sent by the CLIdomani assistant activity            Content-free interaction and receipt logdomani assistant rules               The standing delegations (match, assignee, level, grants)domani assistant approvals           The plans waiting for you and the questions your agents askeddomani assistant suggestions         The rules the assistant proposes from what recurreddomani assistant metrics             The seven numbers per account and per rule (--days)domani assistant task <id>           The task envelope an assignee works fromdomani assistant lease|release|effects|escalate|report <id>domani assistant export|delete       Export or delete derived data (source mail is never touched)

Tokens need assistant:read for reads and assistant:write for changes.

DNS

domani dns <domain> get            List all DNS recordsdomani dns <domain> set <type> <name> <value>   Add/update a recorddomani dns <domain> delete <type> <name>        Remove a recorddomani dns <domain> snapshot       Export DNS to filedomani dns <domain> restore        Restore DNS from snapshotdomani nameservers <domain>        Get or set nameservers (--reset for defaults)domani connect <domain> <target>   Auto-configure DNS for a providerdomani route [action] [id]         Short-lived HTTP routes (list: --domain, --status, --limit, --cursor)

Supported providers: Vercel, Netlify, Cloudflare Pages, GitHub Pages, Fly.io, Railway, Render, Google Workspace, Fastmail, Proton Mail.

Settings

domani settings <domain>           View/update auto-renew, WHOIS privacy, security lockdomani contact [view|set]          Manage WHOIS contact infodomani parking <domain>            Manage parking page (enable/disable/price)domani analytics <domain>          View parking analyticsdomani auth-code <domain>          Get EPP auth code for outbound transferdomani transfer-away <domain>      Check outbound transfer status

Account

domani login                       Log in to domani.run (opens browser)domani logout                      Forget the current account's login (--account <name> for another)domani accounts                    List saved accounts, * marks the one in usedomani use <name>                  Switch the active accountdomani me                          Show account info and the CLI account in usedomani billing                     Add or update payment method (opens browser)domani invoices                    List payment invoicesdomani notifications               List notifications (--unread, --limit, --cursor; --read marks all read)domani token                       Print your API keydomani tokens [list|create|revoke] Manage API tokens (scoped, expiring)domani webhooks [action]           Manage webhook endpoints (auth headers via --authorization-env/--api-key-env)

Introspection

domani schema [command]            Show command schemas for AI agent integrationdomani update                      Update to the latest versiondomani uninstall                   Remove domani CLI and config

Agent integration

Built for AI agents and scripts, not just humans.

TTY auto-detect: When stdout is not a terminal, the CLI automatically switches to JSON output and skips confirmation prompts. No --json flag needed.

bash
domani list | jq '.domains[].domain'

Paging: list commands print More: --cursor <next_cursor> when another page exists (in JSON mode, read next_cursor); pass it back with --cursor to get the next page.

Structured errors: In JSON mode, errors include code, hint, and fix_command for auto-recovery:

json
{ "error": "Not logged in", "code": "auth_required", "fix_command": "domani login" }
CodeFixDescription
auth_requireddomani loginNot logged in
payment_requireddomani billingNo payment method on file
contact_requireddomani contact setWHOIS contact info missing
validation_errorRead hintInvalid input
not_found-Domain doesn't exist or not owned
rate_limitedWait Retry-AfterToo many requests

Flags:

FlagDescription
--jsonForce JSON output
--fields <f>Filter JSON fields (comma-separated)
--dry-runPreview mutations without executing
--yesSkip confirmation prompts

Input hardening: All inputs are validated against path traversal, control characters, query strings, and double encoding - common agent hallucinations.

Schema introspection: Run domani schema <command> --json to get parameter types, constraints, and enums before constructing a command.

Payments

Domains are charged to your saved card. Add one at domani.run/dashboard or with domani card add.

bash
domani buy myapp.dev                     # Charged to saved card

Authentication

MethodDescription
domani loginInteractive login (opens browser)
$DOMANI_API_KEYAPI key as environment variable
OS keychainCredential saved by domani login when available
~/.domani/config.jsonNon-secret CLI settings, plus legacy fallback on systems without a keychain

The CLI checks $DOMANI_API_KEY first, then falls back to the saved login.

bash
domani login                             # Interactive (opens browser)export DOMANI_API_KEY=domani_sk_...      # Or set env var

Several accounts

The CLI can keep more than one Domani account, each under a name, with its own keychain entry:

bash
domani login --account work              # save a second account as "work"domani accounts                          # list them; * marks the one in usedomani use work                          # make "work" the active accountdomani --account personal list           # use another account for one commandDOMANI_ACCOUNT=work domani mcp serve     # pin an agent's MCP bridge to "work"domani logout --account work             # forget that login only

The credential a command uses is, in order: DOMANI_API_KEY, --account, DOMANI_ACCOUNT, then the active account. domani me shows the account in use, and the buy, renew and transfer confirmations name it before anything is charged. A login saved by an earlier CLI version becomes the account default, with nothing to redo.

Scoped API tokens can be created with domani tokens create --scopes read,dns --expires-in 86400.

Environment variables

VariableDescription
DOMANI_API_KEYAPI key (takes precedence over saved config)
DOMANI_ACCOUNTSaved CLI account to use (below --account, above domani use)
DOMANI_CONFIG_DIRConfig directory (default ~/.domani)

License

MIT

来源:README.md,提交 98c95fa

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v0.4.15最新Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分