mcp-all-inkl
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-all-inklList all DNS records for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-all-inkl
MCP Server for managing All-Inkl.com web hosting via the KAS SOAP API. Gives Claude and other MCP-compatible AI assistants direct access to domains, DNS, email, databases, cronjobs, SSL, and more.
9 tools, 53 actions - full coverage of the KAS API, with all SOAP/XML complexity abstracted into clean JSON responses.
Features
Complete KAS API coverage across 9 tool categories
Plain-text authentication over HTTPS (secure via TLS)
Automatic session token management with re-auth on expiry
Flood protection awareness - respects KAS API rate limits
Stack-based SOAP/XML parser that correctly handles deeply nested
<item>structuresAuto-fix for common parameter issues (e.g. missing trailing dot on DNS zone_host)
pickandfilterparams on all tools to reduce response size and token usage
Related MCP server: admtools
Requirements
Node.js 22+
All-Inkl.com KAS account with API access
KAS login (format:
w0XXXXXXX) and password
Setup
Claude Desktop / Claude.ai
Add to claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"all-inkl": {
"command": "npx",
"args": ["-y", "mcp-all-inkl"],
"env": {
"KAS_LOGIN": "w0XXXXXXX",
"KAS_PASSWORD": "your-kas-password"
}
}
}
}Restart Claude Desktop after saving.
Claude Code
claude mcp add all-inkl \
-e KAS_LOGIN=w0XXXXXXX \
-e KAS_PASSWORD=your-kas-password \
-- npx -y mcp-all-inklOr add to .mcp.json in your project root:
{
"mcpServers": {
"all-inkl": {
"command": "npx",
"args": ["-y", "mcp-all-inkl"],
"env": {
"KAS_LOGIN": "w0XXXXXXX",
"KAS_PASSWORD": "your-kas-password"
}
}
}
}Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"all-inkl": {
"command": "npx",
"args": ["-y", "mcp-all-inkl"],
"env": {
"KAS_LOGIN": "w0XXXXXXX",
"KAS_PASSWORD": "your-kas-password"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
Same JSON format as above.
VS Code + GitHub Copilot
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"all-inkl": {
"command": "npx",
"args": ["-y", "mcp-all-inkl"],
"env": {
"KAS_LOGIN": "w0XXXXXXX",
"KAS_PASSWORD": "your-kas-password"
}
}
}
}Cline
Open Cline -> MCP Servers icon -> Edit MCP Settings, then add the same JSON as Claude Desktop.
Continue.dev
Create .continue/mcpServers/all-inkl.json with the same JSON format.
OpenAI Codex CLI
codex mcp add all-inkl \
--env KAS_LOGIN=w0XXXXXXX \
--env KAS_PASSWORD=your-kas-password \
-- npx -y mcp-all-inklZed
Add to Zed settings.json (via Agent Panel -> Settings):
{
"context_servers": {
"all-inkl": {
"command": {
"path": "npx",
"args": ["-y", "mcp-all-inkl"],
"env": {
"KAS_LOGIN": "w0XXXXXXX",
"KAS_PASSWORD": "your-kas-password"
}
}
}
}
}Compatibility Matrix
Tool | Config Location |
Claude Desktop / Claude.ai |
|
Claude Code |
|
Cursor |
|
Windsurf |
|
VS Code + Copilot |
|
Cline | MCP Settings JSON |
Continue.dev |
|
Zed |
|
Codex CLI |
|
Roo Code | MCP Settings JSON |
Google Antigravity |
|
Environment Variables
Variable | Required | Default | Description |
| Yes | - | KAS account login (format: |
| Yes | - | KAS account password |
Get your KAS login from the KAS admin panel - it's shown in the top right after login.
pick & filter - Response Optimization
All tools support optional pick and filter parameters to reduce token usage on large responses.
pick - Return only specific fields
// Without pick: full DNS records with 8 fields each (~2,000 tokens for 18 records)
{ "action": "list", "params": { "zone_host": "example.com." } }
// With pick: only type and data (~400 tokens)
{ "action": "list", "params": { "zone_host": "example.com." }, "pick": ["record_type", "record_data"] }filter - Filter array results by field values
// Only MX records
{ "action": "list", "params": { "zone_host": "example.com." }, "filter": { "record_type": "MX" } }
// Only a specific database
{ "action": "list", "filter": { "database_name": "d03f4990" } }Combined - filter + pick
// MX records with only server and priority
{ "action": "list", "params": { "zone_host": "example.com." }, "filter": { "record_type": "MX" }, "pick": ["record_data", "record_aux"] }
// Returns: [{"record_data": "aspmx.l.google.com.", "record_aux": 1}, ...]When to use:
DNS zones with many records - filter by
record_typeto get only A, MX, TXT, etc.Mail accounts - pick only
mail_loginanddomain_partinstead of full quota detailsDatabases - filter by
database_commentor pick onlydatabase_nameandused_database_spaceAny list action returning more data than needed
Tools & Actions
kas_dns - DNS Records
Manage A, AAAA, CNAME, MX, TXT, SRV records.
Important:
zone_hostmust end with a trailing dot:"example.com."not"example.com". The server auto-appends it if missing, but best practice is to include it.
Action | Required Params | Description |
|
| List all DNS records of a zone |
|
| Create record. |
|
| Update record (get |
|
| Delete a record |
|
| Reset zone to defaults |
kas_domain - Domains
Action | Required Params | Description |
| - | List all domains |
| - | List available TLDs |
|
| Register a new domain |
|
| Update domain settings (path, redirect, PHP version, etc.) |
|
| Delete a domain |
|
| Move domain to another KAS account |
kas_subdomain - Subdomains
Action | Required Params | Description |
| - | List all subdomains |
|
| Create subdomain (e.g. |
|
| Update subdomain settings |
|
| Delete a subdomain |
|
| Move to another account |
kas_database - MySQL Databases
Action | Required Params | Description |
| - | List all databases with size and comments |
|
| Create database (name auto-generated by KAS) |
|
| Update password, comment, or allowed hosts |
|
| Delete a database |
kas_mail - Email
Manages mailboxes, forwards, mailing lists, and filters.
Action | Required Params | Description |
| - | List all mailboxes |
|
| Create mailbox |
|
| Update mailbox settings |
|
| Delete mailbox |
| - | List email forwards |
|
| Create forward |
|
| Update forward targets |
|
| Delete forward |
| - | List mailing lists |
|
| Create mailing list |
|
| Update mailing list |
|
| Delete mailing list |
| - | List mail filters |
|
| Add mail filter |
|
| Delete mail filter |
kas_cronjob - Cronjobs
Action | Required Params | Description |
| - | List all cronjobs |
|
| Create cronjob. Time values use crontab syntax ( |
|
| Update cronjob settings |
|
| Delete a cronjob |
kas_ssl - SSL Certificates
Action | Required Params | Description |
|
| Install/update SSL certificate |
kas_account - Account Management
Action | Required Params | Description |
| - | List all accounts |
| - | Resource limits and current usage |
| - | Account settings |
| - | Server info (PHP versions, MySQL, OS) |
|
| Create sub-account |
|
| Update account |
| - | Update account settings |
|
| Update superuser settings |
|
| Delete an account |
kas_system - System
Action | Required Params | Description |
| - | Create new auth session |
| - | Disk space overview |
|
| Detailed space usage for a directory |
| - | Traffic statistics |
Example Responses
DNS Records
[
{
"record_zone": "example.com",
"record_name": null,
"record_type": "A",
"record_data": "85.13.151.85",
"record_aux": 0,
"record_id": 56652527,
"record_changeable": "Y",
"record_deleteable": "Y"
}
]Databases
[
{
"database_name": "d03f4990",
"database_login": "d03f4990",
"database_password": null,
"database_comment": "My App Database",
"database_allowed_hosts": "localhost",
"used_database_space": 44075.3
}
]Server Info
[
{ "service": "mysql", "version": "10.11.14", "version_type": "server" },
{ "service": "php", "interface": "cgi-fcgi", "file_extension": "php84", "version": 8.4 },
{ "service": "os", "distribution": "ubuntu", "version": 24 }
]Architecture
Authentication Flow
SOAP POST to
https://kasapi.kasserver.com/soap/KasAuth.phpwithkas_auth_type: "plain"Receives session token (valid 60 minutes, auto-refreshes)
All subsequent API calls use
kas_auth_type: "session"with the tokenOn session expiry or invalidation, automatic re-authentication
SOAP XML Parser
The KAS API returns deeply nested SOAP/XML with <item> tags at multiple levels. Standard regex-based parsing fails because greedy matching can't distinguish between nested <item> open/close pairs.
This server uses a stack-based parser that:
Tracks
<item>tag depth with a counterOnly captures top-level items when depth returns to 0
Recursively parses
ns2:Mapobjects andSOAP-ENC:ArrayarraysHandles
xsi:nil,xsd:int,xsd:float, andxsd:stringtypesReturns clean JavaScript objects/arrays
API Parameter Format
The KAS API expects parameters as JSON inside a SOAP envelope. One critical detail: the parameter key for request params must be KasRequestParams (CamelCase), not kas_request_params (snake_case). Actions without parameters work with either format, which can mask this bug during development.
Flood Protection
KAS returns a KasFloodDelay value with each response. The server tracks this per action and automatically waits before sending the next request to the same endpoint.
pick & filter
All tools accept optional pick (array of field names) and filter (object with key-value pairs) parameters. These are applied client-side after the API response is parsed - filter removes non-matching entries from arrays, pick strips all fields except the specified ones. Both combine to dramatically reduce token usage: a full DNS zone with 18 records and 8 fields each (~2,000 tokens) can be reduced to just 5 MX records with 2 fields (~100 tokens).
Verify
Start a new conversation and ask:
List all my domainsThe AI should call kas_domain with action list and return your domain list as JSON.
Other test queries:
"Show me DNS records for example.com"- tests DNS with trailing dot auto-fix"How much disk space is left?"- tests system tools"What PHP versions are available?"- tests server info
Development
git clone https://github.com/hl9020/mcp-all-inkl.git
cd mcp-all-inkl
npm install
npm run buildTesting locally
Create a test file (excluded from git):
// test.mjs
process.env.KAS_LOGIN = "w0XXXXXXX";
process.env.KAS_PASSWORD = "your-password";
const { kasCall } = await import("./dist/kas-client.js");
const result = await kasCall("get_domains");
console.log(result.content[0].text);node test.mjsProject Structure
src/
index.ts # MCP server setup, tool definitions with descriptions
kas-client.ts # SOAP client, auth, XML parser, API caller
types.ts # TypeScript interfaces
tools/
dns.ts # DNS records (5 actions)
domain.ts # Domains (6 actions)
subdomain.ts # Subdomains (5 actions)
database.ts # MySQL databases (4 actions)
mail.ts # Email, forwards, lists, filters (15 actions)
cronjob.ts # Cronjobs (4 actions)
ssl.ts # SSL certificates (1 action)
account.ts # Account management (9 actions)
system.ts # System info (4 actions)Known Limitations
KAS flood protection can cause temporary delays when making rapid successive calls
SSL tool only supports
update(installing certificates), not listing or deletingThe KAS API itself has no pagination - large result sets are returned in full
Links
License
MIT
Available Tools
9 toolskas_accountA
Manage KAS accounts and settings. Actions:
list: list all accounts
get_resources: resource limits and usage
get_settings: account settings
get_server_info: server information (PHP versions, MySQL, OS)
create/update/delete: account management
update_settings/update_superuser: change settings Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does explain what each action does (e.g., get_resources returns limits and usage, get_server_info returns PHP/MySQL/OS). It also discloses the optional pick/filter behavior. However, it omits important behavioral details like whether delete is irreversible, what happens on conflict, or any permission prerequisites, which is a notable gap for a management tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a brief opening, a bullet-style list of actions, and a concise explanation of optional parameters. Every sentence adds value, with no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's multi-action complexity and the absence of an output schema or annotations, the description covers the action list and high-level purpose but omits critical information about the 'params' object (required fields for create/update/delete). It also does not describe return values or error behavior, leaving users to guess at crucial usage details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the action enum by explaining each value and provides examples/use for pick and filter. However, 'params' is left entirely unexplained both in the schema and the description, and schema coverage is only 50%. The description does not fully compensate for this missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Manage' combined with a clear resource 'KAS accounts and settings' and enumerates specific actions (list, get_resources, get_settings, create, update, delete). It clearly differentiates from sibling tools (kas_ssl, kas_dns, etc.) by focusing on account-level operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what the tool is for (account and settings management), and the action list implies when to use it for tasks like listing accounts or retrieving resource usage. However, it does not explicitly state exclusions or point to alternatives (e.g., 'use kas_dns for DNS tasks'), so it misses the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_cronjobA
Manage cronjobs. Actions:
list: no params - list all cronjobs
create: params {protocol, http_url, minute, hour, day_of_month, month, day_of_week} - protocol="https"|"http", http_url without protocol prefix, time values like crontab (* for every)
update: params {cronjob_id, ...fields}
delete: params {cronjob_id} Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It adds useful behavior details: protocol must be 'https' or 'http', http_url is without a protocol prefix, and time values follow crontab syntax. It also explains that 'pick' reduces tokens and 'filter' returns only matching entries. However, it does not mention side effects, auth requirements, rate limits, or what happens on update/delete (e.g., partial vs. full update, error cases). This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured as a bulleted list, front-loading the purpose ('Manage cronjobs') followed by concise action definitions. Every line adds value—parameter lists, format notes, and optional param behavior—without unnecessary fluff. The use of placeholders like '...fields' keeps it compact while conveying the pattern.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a CRUD tool with no output schema, the description covers the main usage and parameter rules but lacks information about return values or result structures (e.g., does list return an array? what does create return?). It also doesn't address edge cases like cronjob_id validation or error handling. Given the moderate complexity, the description is functional but incomplete for an agent needing to anticipate outputs and failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The definition significantly expands on the schema, which only describes 'pick' and 'filter' but leaves 'action' and 'params' as opaque. The description explains the action enum implicitly and details the create params (protocol, http_url, time fields) with constraints such as protocol values and crontab semantics. It doesn't enumerate all update fields, but it adds substantial meaning beyond the schema's minimal coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Manage cronjobs' and enumerates four actions (list, create, update, delete) with distinct params, making the tool's purpose clear. The resource (cronjobs) is distinct from sibling tools like kas_dns or kas_domain, though the verb 'manage' is generic, so it doesn't fully differentiate beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action breakdown implicitly tells when to use each operation (e.g., 'create' for new cronjobs, 'delete' for removing). It doesn't explicitly mention when not to use this tool or name alternatives, but the context of sibling tools and the focused resource make the usage context clear. There are no explicit exclusions, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_databaseA
Manage MySQL databases. Actions:
list: no params - list all databases
create: params {database_password} - name is auto-generated
update: params {database_name, database_login, ...fields} - database_login required (same value as database_name), e.g. database_comment, database_password
delete: params {database_name, database_login} - database_login required (same value as database_name) Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses important behaviors like auto-generated database names, required database_login equality, and pick/filter side effects. Yet it omits consequences of delete, update semantics, permissions, and return/error behavior, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a one-line summary, per-action bullet points, and optional parameter notes. It is front-loaded with the resource type and every line adds operational value without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity of four actions and no annotations or output schema, the description covers action-specific parameters and optional pick/filter well. However, it lacks return format details and permission requirements, making it not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides a generic 'params' object with additionalProperties: true. The description supplies all parameter names and constraints per action, including the auto-generated name for create and the required database_login equality for update/delete. This is essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Manage MySQL databases' and then lists four specific actions (list, create, update, delete) with distinct parameter requirements. This clearly identifies the tool's function and differentiates it from sibling tools like kas_dns or kas_mail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list and explicit parameter constraints (e.g., 'database_login required (same value as database_name)') make it clear when to use each action. However, it does not explicitly contrast this tool with alternatives or state when not to use it, stopping short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_dnsA
Manage DNS records (A, AAAA, CNAME, MX, TXT, SRV...). IMPORTANT: zone_host MUST end with a trailing dot (e.g. "example.com." NOT "example.com"). Actions:
list: params {zone_host} - list all DNS records of a zone
create: params {record_aux: "0"} - record_aux must be a STRING not a number (e.g. "0"), record_name="" for zone root
update: params {record_id, ...fields} - modify a record (get record_id from list)
delete: params {record_id} - delete a record
reset: params {zone_host} - reset zone to defaults Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Key behavioral constraints are disclosed: the trailing dot requirement for zone_host, the string requirement for record_aux, and the need to obtain record_id from list before update/delete. The note that reset restores defaults also implies destructive behavior. No annotations are present, so the text carries the full burden and does so effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise header, an IMPORTANT note, and a bulleted action list. It front-loads the core purpose and uses examples to illustrate constraints, ensuring every sentence contributes without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is not obligated to explain return values, but it covers all five actions and their required parameters. It is mostly complete, though the update action's '...fields' is vague and could specify which fields are editable. Overall, it provides sufficient context for correct tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only documents pick and filter (50% coverage), leaving action and params generic. The description adds meaning by specifying exact parameter names and formats for each action (e.g., zone_host, record_aux: "0", record_name="" for root) and clarifying the optional pick/filter behavior. This goes well beyond the schema's structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Manage DNS records (A, AAAA, CNAME, MX, TXT, SRV...)' which clearly states the verb and resource. The explicit list of record types and DNS-specific scope distinguish it from sibling tools like kas_domain or kas_ssl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description organizes usage by action (list, create, update, delete, reset) with required params for each, providing clear context on when to invoke each action. It does not explicitly state alternatives or when not to use the tool, but the DNS-specific scope makes that unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_domainB
Manage domains. Actions:
list: no params - list all domains
list_tlds: no params - available TLDs
create: params {domain_name, domain_tld, domain_path, ssl_proxy, redirect_status}
update: params {domain_name, ...fields}
delete: params {domain_name}
move: params {domain_name, target_kas_login} Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It lists action names and parameters but does not explain side effects (e.g., delete is destructive, move changes ownership), permissions, reversibility, or return values. The pick/filter option is helpful but not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with a bulleted action list, making it easy to scan. Every sentence/line adds relevant information, and the optional params are explained in one concise sentence without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 actions and no output schema or annotations, the description should provide more context about return values, errors, or prerequisites. The update action is vague, and there is no mention of what each action returns or potential side effects, leaving significant gaps for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description supplements the generic 'params' object in the schema by listing domain-specific parameters for create and move (e.g., domain_tld, domain_path, ssl_proxy, target_kas_login). However, update uses vague ellipsis ('...fields') and no types or constraints are given, leaving some parameters undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage domains' and enumerates specific actions (list, list_tlds, create, update, delete, move), identifying the resource and operations. This distinguishes it from sibling tools like kas_ssl, kas_dns, and kas_database that manage other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus sibling tools or how to choose among actions. The description only says 'Manage domains' without discussing prerequisites, alternatives, or exclusions, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_mailA
Manage email: mailboxes, forwards, mailing lists, filters. Actions:
list/create/update/delete: mailboxes (params: mail_login, mail_password, ...)
list_forwards: list all email forwards
create_forward: params {local_part, domain_part, target_0, target_1, ...} - target_N are the forward destinations (numbered from 0), e.g. target_0="user@example.com"; may fail with "fetch failed" on first attempt, retry once
update_forward: params {mail_forward, target_0, target_1, ...} - mail_forward is the full address e.g. "alias@example.com"; note: update may fail with "in_progress" right after creation, retry after a few seconds
delete_forward: params {mail_forward} - mail_forward is the full address e.g. "alias@example.com"
list_lists/create_list/update_list/delete_list: mailing lists
list_filters/add_filter/delete_filter: mail filters Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses important behavioral details: create_forward may fail with 'fetch failed' on first attempt, update_forward may fail with 'in_progress' after creation, and explains retry guidance. This goes beyond the basic action list, though it omits information about auth, rate limits, or destruction warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured with action bullets and concrete examples. Every sentence adds value, and the front-loaded purpose statement makes it easy to parse. The length is justified by the tool's many actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and the tool has many actions, the description provides a solid overview, including param formats and failure/retry notes. It does not cover params for lists/filters, but the overall picture is sufficiently complete for an agent to select and invoke the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description compensates by explaining key parameters: mail_login/mail_password for mailboxes, target_0/target_1 for create_forward, and mail_forward as the full address for update/delete. It also clarifies the optional pick and filter parameters, adding meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage email: mailboxes, forwards, mailing lists, filters' which is a specific verb+resource, and enumerates concrete actions. It distinguishes from sibling tools (ssl, cronjob, dns, etc.) by explicitly focusing on email management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context (email-related operations) but does not explicitly mention when not to use this tool or name alternative tools. The list of actions implies usage scenarios, but there are no exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_sslB
Manage SSL certificates. Action: update - params {domain_name, ssl_certificate_sni_crt, ssl_certificate_sni_key, ssl_certificate_sni_bundle} Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'update' without describing side effects, permissions, reversibility, or response behavior. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and starts with the core purpose. The bullet-like listing of action and params is efficient, though the generic pick/filter note could be considered repetitive with the schema. Overall, it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and only a bare list of parameters without descriptions, the description is incomplete. It fails to specify what the update does, required inputs beyond the parameter names, or any behavioral context. The tool needs more elaboration for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only shows a generic 'params' object with no inner fields. The description lists the actual parameter names (domain_name, ssl_certificate_sni_crt, etc.), which adds value beyond the schema. However, it does not explain the meaning or format of these parameters, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manage SSL certificates' which is a verb+resource, and further specifies 'Action: update', making it clear this tool handles SSL certificate updates. It distinguishes from sibling tools by its focus on SSL, though 'manage' is somewhat generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating SSL certificates via the 'action: update' directive, but it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria. The generic pick/filter note applies to all tools but doesn't help differentiate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_subdomainA
Manage subdomains. Actions:
list: no params - list all subdomains
create: params {subdomain_name, domain_name} - e.g. subdomain_name="www", domain_name="example.com"
update: params {subdomain_name, ...fields} - may fail with "in_progress" right after creation, retry after a few seconds
delete: params {subdomain_name}
move: params {subdomain_name, target_kas_login} Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the 'in_progress' failure mode for updates after creation and explains the optional pick/filter parameters. However, with no annotations, it does not address the safety/destructive nature of delete, permissions, or return value behavior beyond filtering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, using a bulleted action list with inline parameter examples. Every sentence adds operational value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (5 actions, nested params) and has no output schema or annotations. The description gives an operational overview but omits return values, required fields for update, and when-to-use guidance. It is sufficient for basic invocation but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (pick and filter have descriptions), but the description adds concrete examples for create (subdomain_name, domain_name) and move (target_kas_login), and explains pick/filter behavior. The 'params' catch-all remains under-specified, and the update fields token is vague.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage subdomains' and enumerates five concrete actions (list, create, update, delete, move), making the tool's purpose specific. This distinguishes it from sibling tools like kas_domain and kas_dns by focusing on the subdomain resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. It does not mention kas_domain or other siblings as alternatives for domain-level operations. The description implies subdomain management but lacks decision rules or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kas_systemC
Sessions, disk space, traffic. Actions:
create_session: create new auth session
get_space: disk space overview
get_space_usage: detailed space usage per directory
get_traffic: traffic statistics Optional params for all tools: "pick" (array of field names to return, reduces tokens) and "filter" (object to match, e.g. {"record_type":"MX"} returns only matching entries).
| Name | Required | Description | Default |
|---|---|---|---|
| pick | No | Return only these fields from each result (reduces token usage) | |
| action | Yes | ||
| filter | No | Filter array results by field values, e.g. {record_type: "MX"} | |
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions the shared 'pick' and 'filter' behavior, which is useful, but it does not indicate which actions have side effects (e.g., create_session vs get_space) or what security/permissions are needed. This is a notable gap for a tool that mixes a write action with read actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with a high-level summary before listing actions. The optional params explanation is concise and actionable. It could be better structured with separate sections for each action, but it is efficient and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description should explain what each action returns and how they differ. It fails to distinguish between 'get_space' and 'get_space_usage' or describe the output format of any action. For a multi-action tool with creating and reading capabilities, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value for 'pick' and 'filter' by explaining their purpose (token reduction, result filtering) and giving a filter example. However, it does not clarify the 'params' object, which is still opaque. Schema coverage is 50%, and the description partially compensates but not completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Sessions, disk space, traffic' and lists action names, making the domain clear. It distinguishes from sibling tools (ssl, dns, domain, etc.) by focusing on system-level operations. However, each action is not individually described, so the purpose of actions like 'get_space' vs 'get_space_usage' is only inferred from their names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. The description does not mention when to choose kas_system over kas_dns or kas_database, nor does it state any prerequisites or exclusions. The only context is the tool name and domain summary, which indirectly imply usage but do not provide clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct hosting resource (SSL, cronjob, DNS, domain, subdomain, database, mail, account, system), so there is no ambiguity about which tool to select for a given task. Even related tools like domain and subdomain are clearly separated by resource type.
All tools follow a consistent 'kas_<resource>' snake_case pattern, and actions within tools use predictable verb_noun conventions (list, create, update, delete). There are no mixed casing styles or vague tool names.
9 tools is well-scoped for a hosting management server, covering all major resource areas without fragmentation or bloat. Each tool earns its place, and the count falls comfortably within the ideal 3-15 range.
The server provides full CRUD coverage for most resources (cronjobs, DNS, domains, subdomains, databases, mail) plus account and system monitoring. The only notable gap is that SSL only supports update (no create/list/delete), which may be acceptable depending on the provider's workflow, but is a minor limitation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.
An MCP server that provides access to Testiny projects, test cases and test runs
Related MCP Servers
- FlicenseBqualityCmaintenanceA comprehensive MCP server for managing cPanel hosting accounts through AI assistants. It supports DNS, email (DKIM/SPF), databases, domains, SSL, PHP, cron jobs, security, Git deployment, and more.10018
- AlicenseAqualityDmaintenanceMCP server for managing domains, DNS records, email mailboxes, and billing on the adm.tools hosting platform via API.131MIT
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP server for managing cPanel web hosting accounts via UAPI, enabling file, database, email, domain, cron, backup, and system monitoring operations.263MIT
- AlicenseBqualityCmaintenanceMCP server for the adm.tools / ukraine.com.ua hosting API, providing tools to manage hosting services, accounts, sites, and web apps.51MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hl9020/mcp-all-inkl'
If you have feedback or need assistance with the MCP directory API, please join our Discord server