Skip to main content
Glama
hl9020

mcp-all-inkl

by hl9020

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> structures

  • Auto-fix for common parameter issues (e.g. missing trailing dot on DNS zone_host)

  • pick and filter params 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-inkl

Or 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-inkl

Zed

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_desktop_config.json

Claude Code

.mcp.json

Cursor

.cursor/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

VS Code + Copilot

.vscode/mcp.json

Cline

MCP Settings JSON

Continue.dev

.continue/mcpServers/*.json

Zed

settings.json

Codex CLI

.codex/config.toml

Roo Code

MCP Settings JSON

Google Antigravity

~/.gemini/settings.json

Environment Variables

Variable

Required

Default

Description

KAS_LOGIN

Yes

-

KAS account login (format: w0XXXXXXX)

KAS_PASSWORD

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_type to get only A, MX, TXT, etc.

  • Mail accounts - pick only mail_login and domain_part instead of full quota details

  • Databases - filter by database_comment or pick only database_name and used_database_space

  • Any list action returning more data than needed

Tools & Actions

kas_dns - DNS Records

Manage A, AAAA, CNAME, MX, TXT, SRV records.

Important: zone_host must 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

zone_host

List all DNS records of a zone

create

zone_host, record_type, record_name, record_data, record_aux

Create record. record_name="" for zone root. record_aux=0 for most types, MX priority for MX

update

record_id

Update record (get record_id from list)

delete

record_id

Delete a record

reset

zone_host

Reset zone to defaults

kas_domain - Domains

Action

Required Params

Description

list

-

List all domains

list_tlds

-

List available TLDs

create

domain_name, domain_tld

Register a new domain

update

domain_name

Update domain settings (path, redirect, PHP version, etc.)

delete

domain_name

Delete a domain

move

domain_name, source_account, target_account

Move domain to another KAS account

kas_subdomain - Subdomains

Action

Required Params

Description

list

-

List all subdomains

create

subdomain_name, domain_name

Create subdomain (e.g. "www" + "example.com")

update

subdomain_name

Update subdomain settings

delete

subdomain_name

Delete a subdomain

move

subdomain_name, source_account, target_account

Move to another account

kas_database - MySQL Databases

Action

Required Params

Description

list

-

List all databases with size and comments

create

database_password

Create database (name auto-generated by KAS)

update

database_login

Update password, comment, or allowed hosts

delete

database_login

Delete a database

kas_mail - Email

Manages mailboxes, forwards, mailing lists, and filters.

Action

Required Params

Description

list

-

List all mailboxes

create

mail_password, local_part, domain_part

Create mailbox

update

mail_login

Update mailbox settings

delete

mail_login

Delete mailbox

list_forwards

-

List email forwards

create_forward

local_part, domain_part

Create forward

update_forward

mail_forward

Update forward targets

delete_forward

mail_forward

Delete forward

list_lists

-

List mailing lists

create_list

mailinglist_name, mailinglist_domain, mailinglist_password

Create mailing list

update_list

mailinglist_name

Update mailing list

delete_list

mailinglist_name

Delete mailing list

list_filters

-

List mail filters

add_filter

mail_login, filter

Add mail filter

delete_filter

mail_login

Delete mail filter

kas_cronjob - Cronjobs

Action

Required Params

Description

list

-

List all cronjobs

create

protocol, http_url, cronjob_comment, minute, hour, day_of_month, month, day_of_week

Create cronjob. Time values use crontab syntax (* for every)

update

cronjob_id

Update cronjob settings

delete

cronjob_id

Delete a cronjob

kas_ssl - SSL Certificates

Action

Required Params

Description

update

hostname, ssl_certificate_sni_key, ssl_certificate_sni_crt

Install/update SSL certificate

kas_account - Account Management

Action

Required Params

Description

list

-

List all accounts

get_resources

-

Resource limits and current usage

get_settings

-

Account settings

get_server_info

-

Server info (PHP versions, MySQL, OS)

create

account_kas_password, account_ftp_password

Create sub-account

update

account_login, account_kas_password

Update account

update_settings

-

Update account settings

update_superuser

account_login

Update superuser settings

delete

account_login

Delete an account

kas_system - System

Action

Required Params

Description

create_session

-

Create new auth session

get_space

-

Disk space overview

get_space_usage

directory

Detailed space usage for a directory

get_traffic

-

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

  1. SOAP POST to https://kasapi.kasserver.com/soap/KasAuth.php with kas_auth_type: "plain"

  2. Receives session token (valid 60 minutes, auto-refreshes)

  3. All subsequent API calls use kas_auth_type: "session" with the token

  4. On 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 counter

  • Only captures top-level items when depth returns to 0

  • Recursively parses ns2:Map objects and SOAP-ENC:Array arrays

  • Handles xsi:nil, xsd:int, xsd:float, and xsd:string types

  • Returns 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 domains

The 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 build

Testing 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.mjs

Project 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 deleting

  • The KAS API itself has no pagination - large result sets are returned in full

License

MIT

Available Tools

9 tools
kas_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pickNoReturn only these fields from each result (reduces token usage)
actionYes
filterNoFilter array results by field values, e.g. {record_type: "MX"}
paramsNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

A3.8/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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