MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check whether a domain is available to register. Returns { domain, available, premium }. API: GET /{account}/registrar/domains/{domain}/check.
The domain name to check, e.g. example.com.
Check whether a domain is available to register. Returns { domain, available, premium }. API: GET /{account}/registrar/domains/{domain}/check.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The domain name to check, e.g. example.com. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "The domain name to check, e.g. example.com."
}
}
}Create a new DNS record in a zone. Additive — it adds a record without touching existing ones. API: POST /{account}/zones/{zone}/records.
| Argument | Type | Description |
|---|---|---|
| ttl | integer | Time-to-live in seconds. |
| name* | string | Record name = the subdomain part WITHOUT the domain. Use "" (empty string) for the apex/root. |
| type* | string | Record type, e.g. A, AAAA, CNAME, MX, TXT, NS. |
| zone* | string | Zone name, e.g. example.com. |
| content* | string | Record content, e.g. an IP for A, a hostname for CNAME. |
| regions | array | Regions to publish the record in (e.g. ["global"]). |
| priority | integer | Priority, for MX/SRV records. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"zone",
"name",
"type",
"content"
],
"properties": {
"ttl": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Time-to-live in seconds.",
"exclusiveMinimum": 0
},
"name": {
"type": "string",
"description": "Record name = the subdomain part WITHOUT the domain. Use \"\" (empty string) for the apex/root."
},
"type": {
"type": "string",
"description": "Record type, e.g. A, AAAA, CNAME, MX, TXT, NS."
},
"zone": {
"type": "string",
"description": "Zone name, e.g. example.com."
},
"content": {
"type": "string",
"description": "Record content, e.g. an IP for A, a hostname for CNAME."
},
"regions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Regions to publish the record in (e.g. [\"global\"])."
},
"priority": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Priority, for MX/SRV records."
}
}
}Delete a DNS record from a zone. WARNING: permanently removes a live DNS record. API: DELETE /{account}/zones/{zone}/records/{record}. Returns 204 (no body).
| Argument | Type | Description |
|---|---|---|
| zone* | string | Zone name, e.g. example.com. |
| record* | integer | Numeric record id to delete. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"zone",
"record"
],
"properties": {
"zone": {
"type": "string",
"description": "Zone name, e.g. example.com."
},
"record": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric record id to delete."
}
}
}Retrieve a single domain by name or id. API: GET /{account}/domains/{domain}.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain name (e.g. example.com) or numeric domain id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain name (e.g. example.com) or numeric domain id."
}
}
}Retrieve the registration, renewal, and transfer prices for a domain. API: GET /{account}/registrar/domains/{domain}/prices.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The domain name to price, e.g. example.com. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "The domain name to price, e.g. example.com."
}
}
}Retrieve a single DNS record in a zone by its numeric id. API: GET /{account}/zones/{zone}/records/{record}.
| Argument | Type | Description |
|---|---|---|
| zone* | string | Zone name, e.g. example.com. |
| record* | integer | Numeric record id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"zone",
"record"
],
"properties": {
"zone": {
"type": "string",
"description": "Zone name, e.g. example.com."
},
"record": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric record id."
}
}
}List the contacts in the account (used as domain registrants). API: GET /{account}/contacts.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). |
| sort | string | Sort order, e.g. "label:asc", "email:asc", "id:desc". |
| per_page | integer | Results per page (max 100). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based).",
"exclusiveMinimum": 0
},
"sort": {
"type": "string",
"description": "Sort order, e.g. \"label:asc\", \"email:asc\", \"id:desc\"."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100).",
"exclusiveMinimum": 0
}
}
}List the domains in the account, with pagination and optional filters. API: GET /{account}/domains.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). |
| sort | string | Sort order, e.g. "name:asc", "expiration:desc", "id:desc". |
| per_page | integer | Results per page (max 100). |
| name_like | string | Filter to domains whose name contains this substring. |
| registrant_id | integer | Filter to domains with this registrant (contact) id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based).",
"exclusiveMinimum": 0
},
"sort": {
"type": "string",
"description": "Sort order, e.g. \"name:asc\", \"expiration:desc\", \"id:desc\"."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100).",
"exclusiveMinimum": 0
},
"name_like": {
"type": "string",
"description": "Filter to domains whose name contains this substring."
},
"registrant_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Filter to domains with this registrant (contact) id."
}
}
}List the DNS records in a zone, with pagination and optional filters. API: GET /{account}/zones/{zone}/records.
| Argument | Type | Description |
|---|---|---|
| name | string | Filter by exact record name (subdomain part). |
| page | integer | Page number (1-based). |
| sort | string | Sort order, e.g. "name:asc", "type:asc", "content:desc". |
| type | string | Filter by record type, e.g. A, AAAA, CNAME, MX, TXT. |
| zone* | string | Zone name, e.g. example.com. |
| per_page | integer | Results per page (max 100). |
| name_like | string | Filter by record name substring. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"zone"
],
"properties": {
"name": {
"type": "string",
"description": "Filter by exact record name (subdomain part)."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based).",
"exclusiveMinimum": 0
},
"sort": {
"type": "string",
"description": "Sort order, e.g. \"name:asc\", \"type:asc\", \"content:desc\"."
},
"type": {
"type": "string",
"description": "Filter by record type, e.g. A, AAAA, CNAME, MX, TXT."
},
"zone": {
"type": "string",
"description": "Zone name, e.g. example.com."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100).",
"exclusiveMinimum": 0
},
"name_like": {
"type": "string",
"description": "Filter by record name substring."
}
}
}List the DNS zones in the account, with pagination and optional filters. API: GET /{account}/zones.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). |
| sort | string | Sort order, e.g. "name:asc", "id:desc". |
| per_page | integer | Results per page (max 100). |
| name_like | string | Filter to zones whose name contains this substring. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Page number (1-based).",
"exclusiveMinimum": 0
},
"sort": {
"type": "string",
"description": "Sort order, e.g. \"name:asc\", \"id:desc\"."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page (max 100).",
"exclusiveMinimum": 0
},
"name_like": {
"type": "string",
"description": "Filter to zones whose name contains this substring."
}
}
}Update an existing DNS record. WARNING: mutates LIVE DNS — changing content/ttl takes effect for real resolution. Only the fields you provide are sent. API: PATCH /{account}/zones/{zone}/records/{record}.
| Argument | Type | Description |
|---|---|---|
| ttl | integer | New TTL in seconds. |
| name | string | New record name (subdomain part; "" for apex). |
| zone* | string | Zone name, e.g. example.com. |
| record* | integer | Numeric record id to update. |
| content | string | New record content. |
| regions | array | New regions list. |
| priority | integer | New priority, for MX/SRV records. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"zone",
"record"
],
"properties": {
"ttl": {
"type": "integer",
"maximum": 9007199254740991,
"description": "New TTL in seconds.",
"exclusiveMinimum": 0
},
"name": {
"type": "string",
"description": "New record name (subdomain part; \"\" for apex)."
},
"zone": {
"type": "string",
"description": "Zone name, e.g. example.com."
},
"record": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Numeric record id to update."
},
"content": {
"type": "string",
"description": "New record content."
},
"regions": {
"type": "array",
"items": {
"type": "string"
},
"description": "New regions list."
},
"priority": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "New priority, for MX/SRV records."
}
}
}Identify the authenticated account/user for the current API token. Use this to discover your account id (data.account.id). API: GET /whoami.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}