{"serverId":"mcp-registry/run.domani/domani","tools":[{"name":"add_dnssec","fixed":{"name":"add_dnssec","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","keyTag","algorithm","digestType","digest"],"properties":{"flags":{"type":"string","description":"Optional DNSKEY flags, e.g. 257 (KSK)"},"digest":{"type":"string","description":"Hex digest of the DNSKEY"},"domain":{"type":"string","description":"Domain name to enable DNSSEC for"},"keyTag":{"type":"string","description":"Key tag, e.g. 12345"},"algorithm":{"type":"string","description":"DNSSEC algorithm number, e.g. 13 (ECDSAP256SHA256)"},"digestType":{"type":"string","description":"Digest type number, e.g. 2 (SHA-256)"},"maxSigLife":{"type":"string","description":"Optional max signature life in seconds"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add DNSSEC DS Record"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":251,"tokensAfter":251},{"name":"add_mail_rule","fixed":{"name":"add_mail_rule","description":"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 action_arg). Rules run in priority order (lower first); first match wins. API: POST /api/emails/{address}/rules.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","match_field","match_op","match_value","action"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"action":{"enum":["drop","mark_read","forward","webhook_only","label"],"type":"string","description":"What to do on match"},"domain":{"type":"string","description":"Mailbox domain"},"enabled":{"type":"boolean","description":"Default true"},"match_op":{"enum":["contains","equals","regex"],"type":"string","description":"How to match"},"priority":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Lower runs first (default 0)"},"action_arg":{"type":"string","description":"For 'forward': the destination email. For 'label': the label value."},"match_field":{"enum":["from","to","subject","body"],"type":"string","description":"Which field to match on"},"match_value":{"type":"string","description":"The value/pattern to match"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add Mail Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":374,"tokensAfter":374},{"name":"add_mailbox_alias","fixed":{"name":"add_mailbox_alias","description":"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 the same domain as the mailbox. API: POST /api/emails/{address}/aliases.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","alias"],"properties":{"slug":{"type":"string","description":"Mailbox slug the alias delivers to, e.g. inbox"},"alias":{"type":"string","description":"Alias address - a bare slug ('sales') or a full address on the same domain ('sales@mysite.com')"},"domain":{"type":"string","description":"Mailbox domain, e.g. mysite.com"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add Mailbox Alias"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":209,"tokensAfter":209},{"name":"add_suppression","fixed":{"name":"add_suppression","description":"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/suppressions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"reason":{"enum":["manual","hard_bounce","complaint"],"type":"string","description":"Reason (default: manual)"},"address":{"type":"string","description":"Email address to suppress"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Add Suppression"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"browse_marketplace","fixed":{"name":"browse_marketplace","description":"Browse domains for sale on the Domani marketplace. Returns all active listings with prices. Use buy_domain to purchase a listed domain.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"sort":{"enum":["price","tld"],"type":"string","description":"Sort by price or TLD (default: price)"},"order":{"enum":["asc","desc"],"type":"string","description":"Sort order (default: asc)"},"max_price":{"type":"number","description":"Maximum price in USD"}}},"annotations":{"readOnlyHint":true},"title":"Browse Marketplace"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"buy_aftermarket","fixed":{"name":"buy_aftermarket","description":"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 confirm the price with the user first. Pass max_price to cap it. If the listing is make-offer only (not buyable), use acquire_domain (broker) to negotiate instead. Crypto/USDC works like buy_domain (402 -> pay -> retry with payment_tx).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"The taken, for-sale domain to buy, e.g. kami.world"},"max_price":{"type":"number","description":"Hard ceiling in USD. Defaults to the listing's buy-now price. The purchase is rejected if the live price is above this.","exclusiveMinimum":0},"payment_tx":{"type":"string","description":"Tx hash of a USDC payment already sent on-chain (step 2 of the USDC flow)."},"payment_chain":{"enum":["base","ethereum"],"type":"string","description":"Chain the USDC payment was sent on. Required with payment_tx."},"payment_method":{"enum":["card","usdc"],"type":"string","description":"'card' to charge the card on file, 'usdc' to pay with crypto."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Buy Aftermarket Domain"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":354,"tokensAfter":354},{"name":"buy_domain","fixed":{"name":"buy_domain","description":"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 payment_method: 'usdc' - you'll get a 402 with a wallet address and amount. Tell the user to send that amount in USDC, then once they give you the tx hash, retry with payment_tx and payment_chain. Don't explain protocol details to the user - just tell them the address, amount, and chain.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"years":{"type":"integer","maximum":10,"minimum":1,"description":"Number of years to register (1-10, default 1). Price is multiplied by years."},"domain":{"type":"string","description":"Single domain to purchase, e.g. mysite.com"},"domains":{"type":"array","items":{"type":"string"},"description":"Array of domains to purchase, e.g. [\"a.com\", \"b.dev\"]. Max 10."},"max_price":{"type":"number","description":"Ceiling in USD for the total charge. If the real price is above it, the purchase fails with PRICE_ABOVE_MAX and nothing is charged. Set it from the price the user approved.","exclusiveMinimum":0},"payment_tx":{"type":"string","description":"Transaction hash of a USDC payment already sent on-chain. Required for step 2 of USDC flow."},"payment_chain":{"enum":["base","ethereum"],"type":"string","description":"Chain the USDC payment was sent on. Required with payment_tx."},"payment_method":{"enum":["card","usdc"],"type":"string","description":"Payment method: 'card' to charge card on file, 'usdc' to pay with USDC. Overrides the user's default preference for this request."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Buy Domain"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":476,"tokensAfter":476},{"name":"cancel_backorder","fixed":{"name":"cancel_backorder","description":"Stop watching a domain by cancelling a backorder. Only backorders in the 'watching' state can be cancelled.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","description":"The backorder ID to cancel"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Cancel Backorder"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"cancel_broker_request","fixed":{"name":"cancel_broker_request","description":"Cancel an active domain acquisition request. Requires deals:write scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["request_id"],"properties":{"request_id":{"type":"string","description":"The broker request ID"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Cancel Broker Request"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":88,"tokensAfter":88},{"name":"cancel_plan","fixed":{"name":"cancel_plan","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Cancel Paid Plan"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"check_email","fixed":{"name":"check_email","description":"Check email DNS health for a domain: MX records, SPF, DMARC, DKIM. Auto-detects the email provider from MX records.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to check email health for"}}},"annotations":{"readOnlyHint":true},"title":"Check Email"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"check_email_deliverability","fixed":{"name":"check_email_deliverability","description":"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/emails/{address}/deliverability-check.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"html":{"type":"string","description":"HTML body"},"slug":{"type":"string","description":"Sender mailbox slug, e.g. hello"},"text":{"type":"string","description":"Plain-text body"},"domain":{"type":"string","description":"Sender mailbox domain, e.g. mysite.com or domani.run"},"subject":{"type":"string","description":"Email subject line"},"attachments":{"type":"array","items":{"type":"object","required":["filename"],"properties":{"filename":{"type":"string","description":"Filename with extension"},"content_type":{"type":"string","description":"MIME type"}}},"maxItems":10,"description":"Attachment metadata only; content is not required for preflight"},"idempotency_key":{"type":"string","description":"Stable idempotency key for this logical message"},"allow_risky_content":{"type":"boolean","description":"Deprecated compatibility field. Public HTTPS third-party auth links are allowed with a warning; objective safety blocks cannot be overridden"}}},"annotations":{"readOnlyHint":true},"title":"Check Email Deliverability"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":383,"tokensAfter":383},{"name":"check_transfer_eligibility","fixed":{"name":"check_transfer_eligibility","description":"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 transfer_domain to verify eligibility and show the user the price.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to check, e.g. mysite.com"}}},"annotations":{"readOnlyHint":true},"title":"Check Transfer Eligibility"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":142,"tokensAfter":142},{"name":"check_transfer_status","fixed":{"name":"check_transfer_status","description":"Check the status of an inbound domain transfer. Returns detailed status (pending_owner, pending_admin, pending_registry, completed, cancelled) with actionable hints.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to check transfer status for"}}},"annotations":{"readOnlyHint":true},"title":"Check Transfer Status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":115,"tokensAfter":115},{"name":"create_backorder","fixed":{"name":"create_backorder","description":"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 minutes. The user is charged only if the catch succeeds - no upfront fee. Requires a card on file or payment_method 'balance'. Confirm the domain with the user first. Best-effort: a contested drop may be taken by a specialized drop-catcher first.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"The currently-taken domain to watch and catch on drop, e.g. taken.com"},"max_price":{"type":"number","description":"Max USD to pay when caught. Defaults to the current registration price.","exclusiveMinimum":0},"payment_method":{"enum":["card","balance"],"type":"string","description":"How to pay when caught: 'card' or 'balance' (marketplace credit)."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Backorder"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":280,"tokensAfter":280},{"name":"create_hosted_mailbox","fixed":{"name":"create_hosted_mailbox","description":"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 atomically adopt the domain boundary. Provisions the mailbox on our mail server, publishes DNS when we manage it, and returns the DNS records, mail client settings, and a one-time app password. API: POST /api/emails with kind=hosted.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"name":{"type":"string","description":"Display name for the mailbox"},"slug":{"type":"string","description":"Local part, e.g. 'me' for me@mysite.com"},"domain":{"type":"string","description":"A domain you own, e.g. mysite.com"},"workspace_id":{"type":"string","description":"Workspace ID from list_workspaces; owner-only"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Hosted Mailbox"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":257,"tokensAfter":257},{"name":"create_mailbox","fixed":{"name":"create_mailbox","description":"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 sibling mailboxes so a domain is never split. Custom-domain capacity follows the active account or workspace plan. For imported domains (external registrar): returns DNS records to add manually at your registrar. For domani.run: omit domain; each account has one free mailbox. Pass force=true to over","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"name":{"type":"string","description":"Display name for outbound emails, e.g. 'John Doe'. Shows as 'John Doe <slug@domain>' in recipients' inboxes"},"slug":{"type":"string","description":"Local part of the email address, e.g. 'hello' for hello@mysite.com"},"force":{"type":"boolean","description":"Override existing MX records (e.g. Google Workspace). Default: false"},"domain":{"type":"string","description":"Domain for the mailbox. Omit for domani.run"},"workspace_id":{"type":"string","description":"Workspace ID from list_workspaces; owner-only"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Mailbox"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":337,"tokensAfter":337},{"name":"create_mailbox_credential","fixed":{"name":"create_mailbox_credential","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Hosted mailbox slug"},"label":{"type":"string","description":"Label to identify this app password, e.g. 'Laptop Mail'"},"domain":{"type":"string","description":"Hosted mailbox domain"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create App Password"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"create_token","fixed":{"name":"create_token","description":"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 spend caps at or below its own. Scopes: domains:read (GET /api/domains, GET /api/domains/{domain}, GET /api/domains/{domain}/dns, /dnssec, /status, /email/check, /auth-code, /transfer-away, /transfer-status, /analytics), domains:write (PUT /api/domains/{domain}/dns, POST/DELETE /api/domains/{domain}/","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"name":{"type":"string","description":"Human-readable label, e.g. 'CI/CD', 'Sub-Agent'. Defaults to 'CLI'"},"scopes":{"type":"array","items":{"type":"string"},"description":"Permission scopes for this token. Defaults to parent token's scopes. Use ['*'] for full access"},"expires_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"Absolute expiration date (ISO 8601). Alternative to expires_in"},"expires_in":{"type":"integer","maximum":31536000,"minimum":3600,"description":"Token lifetime in seconds (min 3600 = 1h, max 31536000 = 1y). Omit for no expiration"},"max_per_tx":{"type":"number","description":"Per-transaction spend cap in USD - any single charge above it is rejected server-side (SPEND_CAP_EXCEEDED)","exclusiveMinimum":0},"max_per_month":{"type":"number","description":"Rolling calendar-month spend cap in USD for all paid operations with this token","exclusiveMinimum":0},"agent_identity_id":{"type":"string","description":"Optional owned AgentIdentity id. Mail actions made with this token are attributed to that agent"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create API Token"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":549,"tokensAfter":549},{"name":"create_webhook","fixed":{"name":"create_webhook","description":"Register a new webhook endpoint to receive event notifications. The URL must use HTTPS. Optional Authorization or X-API-Key headers are encrypted and sent with every delivery. The webhook secret is returned only once - save it to verify incoming payloads with HMAC-SHA256.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url","events"],"properties":{"url":{"type":"string","description":"HTTPS URL that will receive webhook POST requests"},"events":{"type":"array","items":{"type":"string"},"description":"Event types to subscribe to, e.g. [\"domain.purchased\", \"dns.updated\"]. Use list_webhook_events to see all available types."},"headers":{"type":"object","description":"Optional auth headers. Only Authorization and X-API-Key are accepted; values are encrypted and never returned.","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Webhook"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":266,"tokensAfter":266},{"name":"delete_dnssec","fixed":{"name":"delete_dnssec","description":"Remove a DNSSEC delegation-signer (DS) record at the registry by its key tag. Removing all DS records disables DNSSEC.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","keyTag"],"properties":{"domain":{"type":"string","description":"Domain name"},"keyTag":{"type":"string","description":"Key tag of the DS record to remove"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete DNSSEC DS Record"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":118,"tokensAfter":118},{"name":"delete_mailbox","fixed":{"name":"delete_mailbox","description":"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}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"confirm":{"type":"boolean","description":"Must be true to actually delete. Omit to preview."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Mailbox"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":154,"tokensAfter":154},{"name":"delete_message","fixed":{"name":"delete_message","description":"Move an email message to Trash. This is reversible with update_email_messages action=restore. API: DELETE /api/emails/{address}/messages/{id}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","message_id"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"message_id":{"type":"string","description":"ID of the message to delete"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Message"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":143,"tokensAfter":143},{"name":"delete_messages","fixed":{"name":"delete_messages","description":"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/{address}/messages/delete.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","message_ids","idempotency_key"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"message_ids":{"type":"array","items":{"type":"string"},"maxItems":100,"minItems":1,"description":"IDs of messages to delete"},"idempotency_key":{"type":"string","maxLength":200,"minLength":8,"description":"Caller-stable key for this exact logical batch"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Messages (Bulk)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"delete_webhook","fixed":{"name":"delete_webhook","description":"Delete a webhook endpoint. All pending deliveries will be cancelled. This action cannot be undone.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["webhook_id"],"properties":{"webhook_id":{"type":"string","description":"ID of the webhook to delete"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Delete Webhook"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":95,"tokensAfter":95},{"name":"dns_check","fixed":{"name":"dns_check","description":"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 available). Use this to narrow down before calling search for pricing. Use preset: 'extended' to check 30+ creative/exotic TLDs when basic ones are all taken.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Domain name without TLD, e.g. 'myapp'"},"tlds":{"type":"array","items":{"type":"string"},"description":"TLDs to check, e.g. ['com', 'dev', 'ai', 'io']. Optional if preset is provided."},"preset":{"enum":["basic","extended"],"type":"string","description":"Use a curated TLD preset: 'basic' (10 common TLDs) or 'extended' (30+ including creative/exotic TLDs). Merged with explicit tlds if both provided. Defaults to 'basic' when tlds is omitted."}}},"annotations":{"readOnlyHint":true},"title":"DNS Check"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":280,"tokensAfter":280},{"name":"domain_status","fixed":{"name":"domain_status","description":"Check domain health: DNS propagation, SSL status, email (MX) configuration, and expiry date","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to check status for"}}},"annotations":{"readOnlyHint":true},"title":"Domain Status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":90,"tokensAfter":90},{"name":"get_account","fixed":{"name":"get_account","description":"Get your account details, payment status, contact info status (has_contact), and referral code. Contact info must be set before purchasing domains.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Account"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":65,"tokensAfter":65},{"name":"get_activation","fixed":{"name":"get_activation","description":"Call this immediately after authentication. Follow its first recommended action until the account has a real product milestone. For agent email, create a free inbox, configure its authenticated webhook, then test delivery. Tool discovery and authentication alone never count as activation.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"Get Activation"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":106},{"name":"get_auth_code","fixed":{"name":"get_auth_code","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to get auth code for"}}},"annotations":{"readOnlyHint":true},"title":"Get Auth Code"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116},{"name":"get_broker_inquiry_state","fixed":{"name":"get_broker_inquiry_state","description":"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 available now. Never exposes the buyer's identity or budget.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["token"],"properties":{"token":{"type":"string","description":"The outreach token from your inquiry email"}}},"annotations":{"readOnlyHint":true},"title":"Read Broker Inquiry State (Owner)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":143,"tokensAfter":143},{"name":"get_deal_invoice","fixed":{"name":"get_deal_invoice","description":"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 deals:read scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deal_id"],"properties":{"deal_id":{"type":"string","description":"The deal ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Deal Invoice"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":122,"tokensAfter":122},{"name":"get_dns","fixed":{"name":"get_dns","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name to get DNS records for"}}},"annotations":{"readOnlyHint":true},"title":"Get DNS Records"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"get_dnssec","fixed":{"name":"get_dnssec","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name to inspect"}}},"annotations":{"readOnlyHint":true},"title":"Get DNSSEC"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"get_domain_email_status","fixed":{"name":"get_domain_email_status","description":"Check if email is enabled on a domain and whether DNS records are verified. Returns record status and mailbox count.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to check email status for"}}},"annotations":{"readOnlyHint":true},"title":"Get Domain Email Status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"get_domain_info","fixed":{"name":"get_domain_info","description":"Get detailed information about a domain you own, including auto-renew status, security lock, WHOIS privacy, and provider data.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name to get info for"}}},"annotations":{"readOnlyHint":true},"title":"Get Domain Info"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"get_domain_preview","fixed":{"name":"get_domain_preview","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to preview, e.g. google.com"}}},"annotations":{"readOnlyHint":true},"title":"Get Domain Preview"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"get_email_deliverability","fixed":{"name":"get_email_deliverability","description":"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 is not an Inbox probability. API: GET /api/domains/{domain}/email/deliverability.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to inspect"}}},"annotations":{"readOnlyHint":true},"title":"Get Email Deliverability"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"get_mailbox_client_settings","fixed":{"name":"get_mailbox_client_settings","description":"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-settings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Hosted mailbox slug"},"domain":{"type":"string","description":"Hosted mailbox domain"}}},"annotations":{"readOnlyHint":true},"title":"Get Mail Client Settings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":143,"tokensAfter":143},{"name":"get_message","fixed":{"name":"get_message","description":"Get a single message by ID with full content, headers, delivery events, and attachment download URLs. API: GET /api/emails/{address}/messages/{id}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","message_id"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"message_id":{"type":"string","description":"Message ID"}}},"annotations":{"readOnlyHint":true},"title":"Get Message"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":139,"tokensAfter":139},{"name":"get_nameservers","fixed":{"name":"get_nameservers","description":"Get the authoritative nameservers configured for a domain you own. If empty, DNS operations (parking, email, connect) will fail.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain name to get nameservers for"}}},"annotations":{"readOnlyHint":true},"title":"Get Nameservers"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":103,"tokensAfter":103},{"name":"get_parking_analytics","fixed":{"name":"get_parking_analytics","description":"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 whether it's converting into buyer inquiries.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to get analytics for, e.g. example.com"}}},"annotations":{"readOnlyHint":true},"title":"Get Parking Analytics"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":141,"tokensAfter":141},{"name":"get_transfer_away","fixed":{"name":"get_transfer_away","description":"Check the status of an outbound domain transfer. Use after getting an auth code and initiating the transfer at the new registrar.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to check transfer status for"}}},"annotations":{"readOnlyHint":true},"title":"Get Transfer Away Status"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"import_domain","fixed":{"name":"import_domain","description":"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 for ownership verification.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to import, e.g. mysite.com"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Import Domain"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"list_audit_events","fixed":{"name":"list_audit_events","description":"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 tokens have been doing.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"type":{"type":"string","description":"Filter by event type, e.g. purchase.denied_cap, token.created"},"limit":{"type":"integer","maximum":200,"minimum":1,"description":"Events to return (default 50)"}}},"annotations":{"readOnlyHint":true},"title":"List Audit Events"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"list_backorders","fixed":{"name":"list_backorders","description":"List the user's backorders (watching, caught, failed, cancelled, expired). Optionally filter by status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"status":{"enum":["watching","caught","failed","cancelled","expired"],"type":"string","description":"Filter by status"}}},"annotations":{"readOnlyHint":true},"title":"List Backorders"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"list_broker_requests","fixed":{"name":"list_broker_requests","description":"List your domain acquisition requests and their status (sourcing/contacted/negotiating/agreed/no_contact/declined). Requires deals:read scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"status":{"type":"string","description":"Filter by status, or 'all'"}}},"annotations":{"readOnlyHint":true},"title":"List Broker Requests"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"list_domains","fixed":{"name":"list_domains","description":"List all domains you own","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Domains"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":32,"tokensAfter":32},{"name":"list_email_folders","fixed":{"name":"list_email_folders","description":"List canonical mailbox folders, virtual views, server-derived total/unread counts, and backend capabilities. API: GET /api/emails/{address}/folders.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"}}},"annotations":{"readOnlyHint":true},"title":"List Email Folders"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":121,"tokensAfter":121},{"name":"list_email_messages","fixed":{"name":"list_email_messages","description":"List messages in a system folder or virtual view. Defaults to Inbox. Supports pagination, direction and search filters. API: GET /api/emails/{address}/messages.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"to":{"type":"string","description":"Filter by recipient address (case-insensitive, partial match)"},"from":{"type":"string","description":"Filter by sender address (case-insensitive, partial match)"},"slug":{"type":"string","description":"Mailbox slug"},"spam":{"type":"boolean","description":"Filter by spam flag. Pass false to hide spam-flagged inbound; omit to include all."},"view":{"enum":["starred","all"],"type":"string","description":"Virtual view. Mutually exclusive with folder"},"limit":{"type":"number","description":"Max messages to return (default 20, max 100)"},"cursor":{"type":"string","description":"Pagination cursor from previous response"},"domain":{"type":"string","description":"Mailbox domain"},"folder":{"enum":["inbox","archive","sent","spam","trash"],"type":"string","description":"System folder. Mutually exclusive with view. Defaults to inbox"},"subject":{"type":"string","description":"Filter by subject (case-insensitive, partial match)"},"direction":{"enum":["in","out"],"type":"string","description":"Filter by direction: 'in' for received, 'out' for sent"}}},"annotations":{"readOnlyHint":true},"title":"List Email Messages"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":397,"tokensAfter":397},{"name":"list_identities","fixed":{"name":"list_identities","description":"List the free agent identities (<handle>.domani.run) you've claimed.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List identities"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":59,"tokensAfter":59},{"name":"list_invoices","fixed":{"name":"list_invoices","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Max invoices to return (default 20, max 100)"}}},"annotations":{"readOnlyHint":true},"title":"List Invoices"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"list_mail_rules","fixed":{"name":"list_mail_rules","description":"List a mailbox's inbound filtering rules, in the priority order they are applied. API: GET /api/emails/{address}/rules.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"}}},"annotations":{"readOnlyHint":true},"title":"List Mail Rules"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"list_mailbox_aliases","fixed":{"name":"list_mailbox_aliases","description":"List all alias addresses that deliver into a mailbox. API: GET /api/emails/{address}/aliases.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"}}},"annotations":{"readOnlyHint":true},"title":"List Mailbox Aliases"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":106,"tokensAfter":106},{"name":"list_mailbox_changes","fixed":{"name":"list_mailbox_changes","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["mailbox_id"],"properties":{"limit":{"type":"integer","maximum":500,"minimum":1},"cursor":{"type":"string","description":"Opaque next_cursor from the previous response"},"mailbox_id":{"type":"string","description":"Accessible mailbox ID"}}},"annotations":{"readOnlyHint":true},"title":"List Mailbox Changes"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":157,"tokensAfter":157},{"name":"list_mailbox_credentials","fixed":{"name":"list_mailbox_credentials","description":"List the app passwords for a hosted mailbox (labels + metadata; secrets are shown only once at creation). API: GET /api/emails/{address}/credentials.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Hosted mailbox slug"},"domain":{"type":"string","description":"Hosted mailbox domain"}}},"annotations":{"readOnlyHint":true},"title":"List App Passwords"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"list_mailboxes","fixed":{"name":"list_mailboxes","description":"List all your email addresses. Optionally filter by domain. API: GET /api/emails (or GET /api/email).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"domain":{"type":"string","description":"Filter by domain, e.g. mysite.com. Omit to list all"}}},"annotations":{"readOnlyHint":true},"title":"List Mailboxes"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"list_negotiations","fixed":{"name":"list_negotiations","description":"List your active and past price negotiations (as buyer or seller). Counterparties are anonymized. Requires deals:read scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"role":{"enum":["buyer","seller"],"type":"string","description":"Filter by your role"},"status":{"type":"string","description":"Filter by status (open|agreed|completed|all)"}}},"annotations":{"readOnlyHint":true},"title":"List Negotiations"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"list_providers","fixed":{"name":"list_providers","description":"List all supported hosting and email providers with their connection methods, target requirements, and setup notes","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"category":{"enum":["hosting","email"],"type":"string","description":"Filter by category"}}},"annotations":{"readOnlyHint":true},"title":"List Providers"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"list_services","fixed":{"name":"list_services","description":"List all supported services for domain verification (Stripe, Google Search Console, etc.)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Services"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":64,"tokensAfter":64},{"name":"list_suppressions","fixed":{"name":"list_suppressions","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"number","description":"Max entries to return (default 50, max 100)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response"}}},"annotations":{"readOnlyHint":true},"title":"List Suppressions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"list_tlds","fixed":{"name":"list_tlds","description":"List all available TLDs with registration and renewal pricing","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"sort":{"enum":["tld","price","renewal"],"type":"string","description":"Sort field. Defaults to tld"},"limit":{"type":"number","description":"Max results to return"},"order":{"enum":["asc","desc"],"type":"string","description":"Sort order (default: asc)"},"offset":{"type":"number","description":"Pagination offset"},"search":{"type":"string","description":"Filter TLDs containing this string"},"max_price":{"type":"number","description":"Maximum registration price in USD"},"min_price":{"type":"number","description":"Minimum registration price in USD"}}},"annotations":{"readOnlyHint":true},"title":"List TLDs"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":209,"tokensAfter":209},{"name":"list_tokens","fixed":{"name":"list_tokens","description":"List all API tokens for your account. Shows token name, masked key, creation date, last used, and expiration status. Expired tokens are marked.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true},"title":"List API Tokens"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":64,"tokensAfter":64},{"name":"list_webhook_deliveries","fixed":{"name":"list_webhook_deliveries","description":"Get recent delivery attempts for a webhook - shows event type, HTTP status, number of attempts, and any errors. Useful for debugging webhook issues.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["webhook_id"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of deliveries to return (default 20)"},"webhook_id":{"type":"string","description":"ID of the webhook to get deliveries for"}}},"annotations":{"readOnlyHint":true},"title":"List Webhook Deliveries"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":148,"tokensAfter":148},{"name":"list_webhooks","fixed":{"name":"list_webhooks","description":"List all webhook endpoints configured for the user's account. Returns URL, subscribed events, and active status for each webhook.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"List Webhooks"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"mark_messages_read","fixed":{"name":"mark_messages_read","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","message_ids","read","idempotency_key"],"properties":{"read":{"type":"boolean","description":"true = mark as read, false = mark as unread"},"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"message_ids":{"type":"array","items":{"type":"string"},"maxItems":100,"minItems":1,"description":"IDs of messages to mark"},"idempotency_key":{"type":"string","maxLength":200,"minLength":8,"description":"Caller-stable key for this exact logical batch"}}},"annotations":{"readOnlyHint":true},"title":"Mark Messages Read/Unread"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":234,"tokensAfter":234},{"name":"remove_mail_rule","fixed":{"name":"remove_mail_rule","description":"Remove an inbound filtering rule from a mailbox. API: DELETE /api/emails/{address}/rules/{ruleId}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","rule_id"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"rule_id":{"type":"string","description":"The rule ID to remove"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Remove Mail Rule"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":128,"tokensAfter":128},{"name":"remove_mailbox_alias","fixed":{"name":"remove_mailbox_alias","description":"Remove an alias address from a mailbox. Email to that address stops being delivered. API: DELETE /api/emails/{address}/aliases/{alias}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","alias"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"alias":{"type":"string","description":"Alias address to remove - a bare slug or full address"},"domain":{"type":"string","description":"Mailbox domain"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Remove Mailbox Alias"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"remove_suppression","fixed":{"name":"remove_suppression","description":"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}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","description":"Email address to remove from the suppression list"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true},"title":"Remove Suppression"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"revoke_mailbox_credential","fixed":{"name":"revoke_mailbox_credential","description":"Revoke an app password on a hosted mailbox. Any mail client using it stops connecting. API: DELETE /api/emails/{address}/credentials/{id}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","credential_id"],"properties":{"slug":{"type":"string","description":"Hosted mailbox slug"},"domain":{"type":"string","description":"Hosted mailbox domain"},"credential_id":{"type":"string","description":"App password id from list_mailbox_credentials"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false},"title":"Revoke App Password"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"revoke_token","fixed":{"name":"revoke_token","description":"Revoke an API token immediately. The token will stop working. Use list_tokens to find token IDs.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["token_id"],"properties":{"token_id":{"type":"string","description":"ID of the token to revoke (from list_tokens)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false},"title":"Revoke API Token"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":97},{"name":"search","fixed":{"name":"search","description":"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 pricing.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domains"],"properties":{"sort":{"enum":["price","tld"],"type":"string","description":"Sort results by price or TLD name (default: price)"},"order":{"enum":["asc","desc"],"type":"string","description":"Sort order (default: asc)"},"source":{"enum":["all","primary","secondary"],"type":"string","description":"Filter results: 'all' (default), 'primary' (new registrations only), 'secondary' (marketplace listings only). Use source='secondary' with domains=['*'] to browse all marketplace listings."},"domains":{"type":"array","items":{"type":"string"},"description":"Full domain names to check, e.g. [\"myapp.com\", \"myapp.io\"]"},"max_price":{"type":"number","description":"Maximum price in USD to filter results"}}},"annotations":{"readOnlyHint":true},"title":"Search Domains"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":294,"tokensAfter":294},{"name":"sell_domain","fixed":{"name":"sell_domain","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","price"],"properties":{"price":{"type":"number","description":"Sale price in USD (e.g. 5000)","exclusiveMinimum":0},"domain":{"type":"string","description":"Domain to list for sale, e.g. premium.com"},"description":{"type":"string","maxLength":500,"description":"Optional listing description"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Sell Domain"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":173,"tokensAfter":173},{"name":"send_email","fixed":{"name":"send_email","description":"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. Rate limited to 100 sends per hour per mailbox. API: POST /api/emails/{address}/send.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","to"],"properties":{"cc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"CC recipient(s)"},"to":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Recipient email address(es)"},"bcc":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"BCC recipient(s)"},"html":{"type":"string","description":"HTML body"},"slug":{"type":"string","description":"Sender mailbox slug, e.g. hello or k7x9m2"},"text":{"type":"string","description":"Plain text body"},"domain":{"type":"string","description":"Sender mailbox domain, e.g. mysite.com or domani.run"},"subject":{"type":"string","description":"Email subject line"},"reply_to":{"type":"string","description":"Reply-to email address"},"references":{"type":"string","description":"Space-separated Message-ID chain (for threading)"},"attachments":{"type":"array","items":{"type":"object","required":["content","filename"],"properties":{"content":{"type":"string","description":"Base64-encoded file content"},"filename":{"type":"string","description":"Filename with extension, e.g. report.pdf"},"content_type":{"type":"string","description":"MIME type (optional, derived from filename)"}}},"maxItems":10,"description":"File attachments (max 10, max 40MB total)"},"in_reply_to":{"type":"string","description":"Message-ID of the email being replied to (for threading)"},"idempotency_key":{"type":"string","description":"Unique key to prevent duplicate sends. If a message with this key was already sent from this mailbox, the original result is returned."},"allow_risky_content":{"type":"boolean","description":"Deprecated compatibility field. Public HTTPS third-party auth links are allowed with a warning; objective safety blocks cannot be overridden"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Send Email"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":621,"tokensAfter":621},{"name":"set_auto_renew","fixed":{"name":"set_auto_renew","description":"Enable or disable auto-renew for a domain you own. When enabled, the domain will be renewed automatically before expiry.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","enabled"],"properties":{"domain":{"type":"string","description":"Domain name to configure"},"enabled":{"type":"boolean","description":"true to enable auto-renew, false to disable"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Auto-Renew"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"set_catch_all","fixed":{"name":"set_catch_all","description":"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 on the domain. API: PUT /api/domains/{domain}/email/catch-all.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","mailbox"],"properties":{"domain":{"type":"string","description":"Domain to set the catch-all on, e.g. mysite.com"},"mailbox":{"type":"string","description":"Catch-all mailbox - a bare slug ('inbox') or full address ('inbox@mysite.com') on this domain"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Catch-All"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"set_contact","fixed":{"name":"set_contact","description":"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 your own.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["first_name","last_name","address1","city","state","postal_code","country","phone","email"],"properties":{"city":{"type":"string","description":"City"},"email":{"type":"string","description":"Contact email address"},"phone":{"type":"string","description":"Phone in +CC.NUMBER format, e.g. +1.5551234567"},"state":{"type":"string","description":"State or province"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code, e.g. US, GB, FR"},"address1":{"type":"string","description":"Street address line 1"},"address2":{"type":"string","description":"Street address line 2 (optional)"},"org_name":{"type":"string","description":"Organization name (optional)"},"last_name":{"type":"string","description":"Last name"},"first_name":{"type":"string","description":"First name"},"postal_code":{"type":"string","description":"Postal/ZIP code"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Contact"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":334,"tokensAfter":334},{"name":"set_dns","fixed":{"name":"set_dns","description":"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 is taken before every write. Best practice: call get_dns first and pass its zone_version so a concurrent change fails with DNS_VERSION_CONFLICT instead of being clobbered. Common patterns: Vercel (A @ 76.76.21.21), GitHub Pages (CNAME @ user.github.io), Cloudflare Pages (CNAME @ project.pages.dev)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","records"],"properties":{"domain":{"type":"string","description":"Domain name to set DNS records for"},"records":{"type":"array","items":{"type":"object","required":["type","name","value","ttl"],"properties":{"ttl":{"type":"number","description":"Time to live in seconds, e.g. 3600"},"name":{"type":"string","description":"Record name, e.g. @ or subdomain (e.g. _443._tcp for TLSA)"},"type":{"enum":["A","AAAA","CNAME","MX","TXT","NS","TLSA"],"type":"string","description":"DNS record type (TLSA for DANE)"},"value":{"type":"string","description":"Record value: IP/hostname, or TLSA rdata like '3 1 1 abc123...'"},"priority":{"type":"number","description":"Priority for MX records"}}},"description":"Array of DNS records to set"},"zone_version":{"type":"string","description":"The zone_version from get_dns - rejects the write with DNS_VERSION_CONFLICT if the zone changed since"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set DNS Records"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":423,"tokensAfter":423},{"name":"set_domain_redirect","fixed":{"name":"set_domain_redirect","description":"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 stop forwarding.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","url"],"properties":{"url":{"type":"string","description":"Target URL to forward to, e.g. https://brand.dev. Empty string clears the redirect."},"domain":{"type":"string","description":"The domain to forward (must be one you own)"},"permanent":{"type":"boolean","description":"true = permanent redirect (default), false = temporary"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Domain Redirect"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"set_email_forward","fixed":{"name":"set_email_forward","description":"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 /api/emails/{address}.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"drop_spam":{"type":"boolean","description":"If true, spam-flagged inbound is dropped (not stored or webhooked)"},"forward_to":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Email address to forward to, or null to remove"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Email Forward"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"set_email_webhook","fixed":{"name":"set_email_webhook","description":"Set or remove the inbound webhook URL for a mailbox. Incoming emails are signed, durable, and retried up to three times. A non-secret HTTPS URL may be configured here; never request or pass Authorization or X-API-Key values through chat/MCP—operators use the CLI environment-variable options. Set the URL to null to remove. API: PUT /api/emails/{address}/webhook or DELETE /api/emails/{address}/webhook.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","webhook_url"],"properties":{"slug":{"type":"string","description":"Mailbox slug"},"domain":{"type":"string","description":"Mailbox domain"},"headers":{"type":"object","description":"Optional auth headers for trusted non-model clients. Never request or pass values through model context. Only Authorization and X-API-Key are accepted; send {} to clear them.","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"HTTPS webhook URL, or null to remove"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Email Webhook"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":309,"tokensAfter":309},{"name":"set_listing_price","fixed":{"name":"set_listing_price","description":"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. Set price to null to remove the listing.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","price"],"properties":{"price":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Sale price in USD (e.g. 499.99), or null to remove the listing"},"domain":{"type":"string","description":"Domain to configure, e.g. example.com"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Listing Price"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":181,"tokensAfter":181},{"name":"set_nameservers","fixed":{"name":"set_nameservers","description":"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), custom NS.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","nameservers"],"properties":{"domain":{"type":"string","description":"Domain name to set nameservers for"},"nameservers":{"type":"array","items":{"type":"string"},"maxItems":13,"minItems":2,"description":"Array of nameserver hostnames, e.g. ['ns1.systemdns.com', 'ns2.systemdns.com']"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Nameservers"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":179,"tokensAfter":179},{"name":"set_parking","fixed":{"name":"set_parking","description":"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 for newly purchased domains. IMPORTANT: If the domain has existing DNS records, the response will include requires_confirmation=true and show the records that will be overwritten. You MUST inform the user and get their approval before calling again with confirm=true.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","enabled"],"properties":{"domain":{"type":"string","description":"Domain to configure, e.g. example.com"},"confirm":{"type":"boolean","description":"Set to true to confirm overwriting existing DNS records. Only needed when the first call returns requires_confirmation=true."},"enabled":{"type":"boolean","description":"true to enable the parking page, false to disable it"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Parking"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":275,"tokensAfter":275},{"name":"set_security_lock","fixed":{"name":"set_security_lock","description":"Lock or unlock a domain's transfer lock (clientTransferProhibited). When locked, transfer requests are rejected. Unlock before transferring to another registrar.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","locked"],"properties":{"domain":{"type":"string","description":"Domain name to configure"},"locked":{"type":"boolean","description":"true to lock (prevent transfers), false to unlock"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set Security Lock"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":139,"tokensAfter":139},{"name":"set_whois_privacy","fixed":{"name":"set_whois_privacy","description":"Enable or disable WHOIS privacy for a domain you own. When enabled, your personal contact information is hidden from public WHOIS lookups.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","enabled"],"properties":{"domain":{"type":"string","description":"Domain name to configure"},"enabled":{"type":"boolean","description":"true to enable WHOIS privacy, false to disable"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Set WHOIS Privacy"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"setup_billing","fixed":{"name":"setup_billing","description":"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. Only needed for card payments - agents with crypto wallets can skip this and pay with USDC on Base via x402 protocol.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"mode":{"enum":["checkout","setup_intent"],"type":"string","description":"'checkout' (default) returns a URL for the user to open in browser. 'setup_intent' returns a client_secret for Stripe.js integration."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Setup Billing"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":185,"tokensAfter":185},{"name":"setup_domain_email","fixed":{"name":"setup_domain_email","description":"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 existing email provider (Google Workspace, Fastmail, Proton).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"force":{"type":"boolean","description":"Override existing MX records (e.g. Google Workspace). Default: false"},"domain":{"type":"string","description":"Domain to enable email on, e.g. mysite.com"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Setup Domain Email"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"transfer_domain","fixed":{"name":"transfer_domain","description":"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 exact price and continuity plan, then get explicit confirmation before calling this. Requires the authorization/EPP code from the current provider.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","auth_code"],"properties":{"domain":{"type":"string","description":"Domain to transfer, e.g. mysite.com"},"auth_code":{"type":"string","description":"Authorization/EPP code from the current provider"},"payment_tx":{"type":"string","description":"Transaction hash of a USDC payment already sent on-chain."},"payment_chain":{"enum":["base","ethereum"],"type":"string","description":"Chain the USDC payment was sent on."},"payment_method":{"enum":["card","usdc"],"type":"string","description":"Payment method: 'card' to charge card on file, 'usdc' to pay with USDC. Overrides the user's default preference for this request."},"extra_subdomains":{"type":"array","items":{"type":"string"},"maxItems":50,"description":"Additional subdomains to include in the pre-transfer DNS snapshot. We auto-discover subdomains via CT logs, SPF, MX/DKIM inference, and a common wordlist - use this for any custom subdomains we might miss."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Transfer Domain"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":393,"tokensAfter":393},{"name":"update_email_messages","fixed":{"name":"update_email_messages","description":"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 action. Permanent deletion requires email:delete. API: POST /api/emails/{address}/messages/actions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain","slug","message_ids","action","idempotency_key"],"properties":{"read":{"type":"boolean","description":"Required for mark_read"},"slug":{"type":"string","description":"Mailbox slug"},"action":{"enum":["move","mark_read","star","restore","delete_permanently"],"type":"string"},"domain":{"type":"string","description":"Mailbox domain"},"starred":{"type":"boolean","description":"Required for star"},"destination":{"enum":["inbox","archive","sent","spam","trash"],"type":"string","description":"Required for move"},"message_ids":{"type":"array","items":{"type":"string"},"maxItems":100,"minItems":1,"description":"Explicit message IDs"},"idempotency_key":{"type":"string","maxLength":200,"minLength":8,"description":"Caller-stable key for this exact logical batch"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Email Messages"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":337,"tokensAfter":337},{"name":"update_identity","fixed":{"name":"update_identity","description":"Update a free identity's name/bio/emoji/email/links.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"bio":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string","description":"The handle to update"},"email":{"type":"string"},"emoji":{"type":"string"},"links":{"type":"array","items":{"type":"object","required":["label","url"],"properties":{"url":{"type":"string"},"label":{"type":"string"}}}}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update identity"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":145,"tokensAfter":145},{"name":"update_listing","fixed":{"name":"update_listing","description":"Update the price and/or description of an active marketplace listing. Requires domains:write scope.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"price":{"type":"number","maximum":20000000,"description":"New price in USD","exclusiveMinimum":0},"domain":{"type":"string","description":"Domain with active listing, e.g. premium.com"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"New description (null to clear)"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Listing"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"update_webhook","fixed":{"name":"update_webhook","description":"Update an existing webhook's URL, subscribed events, active status, or encrypted auth headers. Use list_webhooks to get the webhook ID first.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["webhook_id"],"properties":{"url":{"type":"string","description":"New HTTPS URL for the webhook"},"active":{"type":"boolean","description":"Set to false to pause the webhook, true to resume"},"events":{"type":"array","items":{"type":"string"},"description":"New list of event types to subscribe to"},"headers":{"type":"object","description":"Replace auth headers. Only Authorization and X-API-Key are accepted. Send {} to clear them.","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"webhook_id":{"type":"string","description":"ID of the webhook to update"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Webhook"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":241,"tokensAfter":241},{"name":"verify_import","fixed":{"name":"verify_import","description":"Verify DNS TXT record and complete domain import. Call after adding the TXT record from import_domain.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to verify, e.g. mysite.com"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Verify Import"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":95,"tokensAfter":95},{"name":"watch_transfer","fixed":{"name":"watch_transfer","description":"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 immediately without creating a watch. If not eligible but has a known date, creates a watch and notifies you when it's ready.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to watch, e.g. example.com"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Watch Transfer"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"whois_lookup","fixed":{"name":"whois_lookup","description":"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). Works for any domain - no ownership required.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["domain"],"properties":{"domain":{"type":"string","description":"Domain to look up, e.g. example.com"}}},"annotations":{"readOnlyHint":true},"title":"WHOIS Lookup"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136}],"toolsChanged":96,"tokensSaved":0,"todo":[{"tool":"finalize_negotiation","params":["payment_method"]},{"tool":"list_mailbox_changes","params":["limit"]},{"tool":"respond_to_offer","params":["message"]},{"tool":"update_email_messages","params":["action"]},{"tool":"update_identity","params":["bio","name","email","emoji","links"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}