# ELITEDOMAINS MCP Server — 17 tools via DADL

The ELITEDOMAINS DADL turns ELITEDOMAINS's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 17 tools — domain, catcher, handle, offer, address, authinfo, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by ELITEDOMAINS feature area.

**Source:** [ELITEDOMAINS API](https://app.elitedomains.de/docs)

**Updated:** 2026-06-02

**Tags:** dns, crud, e-commerce, automation, user-management, security, auth:bearer

## Which ELITEDOMAINS endpoints are covered?

**100%** (17 of ~17 endpoints).

**Focus:** Beta — REST API not yet stable. ELITEDOMAINS .de domain reseller: domains (register, transfer, AuthInfo, redirector, DNS records, tags), handles (PERSON, ORG, address validation), catcher (RGP backorders, dropdate, max bid), offers (Sedo marketplace, sale pages, visitor stats).

**Missing:** no standalone DNS-record CRUD (records are managed inline via redirector_settings), no transfer-status polling endpoint, no billing/invoice or price-list endpoints

*Last reviewed: 2026-06-02*

## How do you configure the ELITEDOMAINS DADL?

1. Ask ELITEDOMAINS support to enable API access for your account (the API is opt-in and off by default).
2. Log in to the dashboard at https://app.elitedomains.de
3. Open account settings and go to the API / Personal Access Tokens section.
4. Create a new personal access token and copy it immediately (it is shown only once).
5. Store it in the ToolMesh credential store under the name 'elitedomains_token'.

**Environment variable:** `CREDENTIAL_ELITEDOMAINS_TOKEN`

[Authentication docs](https://app.elitedomains.de/docs)

*Personal access tokens are account-scoped (no granular scopes). Append ?sandbox=1 to any request to test without registry writes. Standard rate limit is 100 req/min and 1000 req/day; during droptime (02:00-04:00 UTC) it drops to 10 req/min and catcher add/remove is rejected with HTTP 405. Ordering an AuthInfo2 letter requires an account on monthly invoicing (Sammelrechnung).*

## How do you install the ELITEDOMAINS MCP server with ToolMesh?

Add to your `backends.yaml`:

```yaml
- name: elitedomains
  transport: rest
  dadl: elitedomains.dadl
  url: "https://api.elitedomains.de"

```

Set the credential:

```
CREDENTIAL_ELITEDOMAINS_TOKEN=your-token-here
```

## What 17 tools does the ELITEDOMAINS DADL expose?

- **GET** `list_domains` — List all domains in the account (paginated). Each row includes `name`, `redirector_settings`, `authinfo`, `auto_expire`, `paid_until`, `expires_at`, `tags` and `created_at`. Domains are keyed by `name` -- use it for every other domain operation.
- **GET** `check_domain` — Check whether a single domain is available for registration. Returns { name, message } where `message` is "free" (available) or "connect" (already registered -- only obtainable via transfer/connect, not new registration).
- **POST** `register_domain` — Register a new domain OR transfer an existing one into the account. For a TRANSFER, supply `authinfo` (the transfer code from the losing registrar); for a fresh REGISTRATION omit it. `period` is the term in MONTHS (default 12). Optionally set the owner contact via `handle_id` and initial hosting via `redirector_settings`. Errors: 400 invalid input, 403 registry rejection, 409 already registered/owned.
- **PATCH** `update_domain` — Update an existing domain's settings: change its hosting/redirect via `redirector_settings` and/or reassign the owner contact via `handle_id`. Identify the domain by `name`. Errors: 400 validation, 404 not found.
- **DELETE** `delete_domain` — Delete (give up) a domain, or put it into TRANSIT for an outbound transfer. With `transit`=1 the domain is moved to the transit/KK-out state instead of being deleted. A plain delete returns the domain to the registry and is irreversible. Errors: 400 missing name, 403 registry error, 404 not found.
- **POST** `add_domain_tags` — Set/replace the internal organizational tags on a domain. Returns the updated `tags` array and a confirmation `message`. Errors: 400 invalid domain, 404 not found.
- **GET** `get_domain_authinfo` — Get or generate the outbound AuthInfo (KK / transfer) code for a domain you own -- needed to transfer it to another registrar. Returns { message, name, authinfo, expires_at }. The code is time-limited; note `expires_at` here is German format "DD.MM.YYYY HH:mm:ss" (unlike the ISO 8601 timestamps elsewhere). Errors: 400 missing name, 403 registry error, 404 not found.
- **GET** `check_domain_authinfo2` — Check whether a DENIC AuthInfo2 letter can be ordered for a .de domain. Returns { name, available, message }. AuthInfo2 is the paper-letter fallback used when an AuthInfo1 code is not obtainable. Only relevant for monthly-invoice (Sammelrechnung) accounts. Call this before order_domain_authinfo2.
- **POST** `order_domain_authinfo2` — Order a DENIC AuthInfo2 letter for a .de domain (added to the next collective invoice; confirmation arrives by email). Requires an account on monthly invoicing. Errors: 400 not orderable, 403 account restriction.
- **POST** `add_domain_to_sedo` — List a domain for sale on the external Sedo marketplace at a fixed price. `price` is a EUR amount greater than 0. Errors: 400 invalid input, 404 domain not found, 500 processing error.
- **GET** `list_catcher_orders` — List all RGP catcher (backorder) orders (paginated). Each row includes `name`, `status`, `users` (number of competing backorderers), `price` (your max bid), `dropdate_at` (expected drop) and `created_at`.
- **POST** `add_catcher_order` — Place an RGP catcher (backorder) on a dropping domain. `price` is your MAXIMUM bid in EUR (minimum 2). Requires a valid contact handle on the account. Errors: 400 missing/ invalid domain or missing handle, 405 droptime restriction (02:00-04:00 UTC), 409 already added.
- **DELETE** `delete_catcher_order` — Cancel a catcher (backorder) order for a domain. This only removes your backorder; it is reversible by re-adding. Errors: 400 missing name, 404 not found, 405 droptime restriction (02:00-04:00 UTC).
- **GET** `list_offers` — List the account's domain offers / sale pages (paginated, richly filterable). Each row includes `name`, `type` (paynow|4sale), `status`, `price`, `template`, `is_internal`, `redirect_status`, `hide_on_marketplace`, `visitors` (last_30_days/last_7_days/referrer_30_days), `template_data` and `tags`. Use the filters to narrow by type, status, price band, traffic and template, and sort with order_by/order_direction. This endpoint returns `total` and `last_page` for paging.
- **GET** `list_handles` — List all contact handles in the account (paginated). Each row includes `id`, `alias`, `type` (PERSON|ORG), `handle_name`, address fields (`street_name`, `street_number`, `postalcode`, `city`, `country_id`), `email`, `phone` and `created_at`. Use a handle's `id` as `handle_id` when registering/updating a domain. Note: the country is read back as `country_id` but written as `country_iso`.
- **POST** `create_handle` — Create a new contact handle (domain owner/admin contact). `type` is PERSON or ORG. Set `address_suggest` to "keep" to bypass address auto-correction. Returns the full handle object including the assigned `id`. Errors: 400 validation, 500 unknown error.
- **PATCH** `update_handle` — Update an existing contact handle by numeric id. Any subset of the writable fields may be supplied. (`type` cannot be changed after creation.) Returns the updated handle object. Errors: 400 validation, 404 handle not found.

## Which DADLs are related to ELITEDOMAINS?

- [Zammad](https://www.dadl.ai/d/zammad/) — Zammad helpdesk REST API -- tickets, articles, users, organizations, groups, roles, knowledge base, SLAs, calendars, object manager (custom fields), macros, triggers, overviews, reports, time accounting, and full admin surface. Supports X-On-Behalf-Of impersonation on every endpoint.
- [Cloudflare](https://www.dadl.ai/d/cloudflare/) — Cloudflare API -- DNS, Pages, Workers, KV, R2, D1, Zones, SSL/TLS, Cache, Load Balancers, Firewall/WAF, Page Rules, Access (Zero Trust), and account management
- [Graylog](https://www.dadl.ai/d/graylog/) — Graylog REST API -- log search (Views/Search + legacy universal), streams, pipelines, inputs, alerts, events, dashboards, users, roles, sidecars, index management, and cluster administration. Targets Graylog 6.x.
- [Stripe](https://www.dadl.ai/d/stripe/) — Stripe REST API — payment processing, billing, subscriptions, invoices, products, and financial infrastructure
- [Tailscale](https://www.dadl.ai/d/tailscale/) — Tailscale API -- devices, users, auth keys, DNS, ACL/policy, webhooks, contacts, posture integrations, log streaming, and tailnet settings
- [Xen Orchestra](https://www.dadl.ai/d/xen-orchestra/) — Xen Orchestra REST API (XO 6.4+, current through 6.5) -- complete coverage: VMs (incl. PATCH update + snapshot revert), VM controllers, hosts, pools, storage (SR/VDI/VBD), networks (VIF/PIF/PBD), VM/VDI snapshots, VM templates, hardware (PCI/PGPU/SM), tasks, backups (jobs/logs/repositories/restore), schedules, messages, alarms, events (SSE), RBAC v2 (users/groups/acl-roles/acl-privileges), proxies, servers, dashboards, auth tokens, SDN traffic rules, health check

---

**Canonical URL:** https://www.dadl.ai/d/elitedomains/
**Raw DADL:** https://github.com/DunkelCloud/dadl-registry/blob/main/elitedomains.dadl
