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 分