Skip to main content
Glama
BearstOzawa

@bearst/lucky-mcp-server

by BearstOzawa

@bearst/lucky-mcp-server

CI npm

中文 | English

Lucky 的 MCP Server。通过 OpenToken 调用 Lucky 3.0 HTTP API,以 stdio 提供反向代理、证书、端口转发、DDNS 及相关模块的工具。

要求

  • Node.js 20 或更高

  • 已启用 OpenToken 的 Lucky 实例(管理端口默认 16601

认证请求头为 openToken。不使用账号密码,也不维持登录会话。

Related MCP server: AccelMCP

安装

npx -y @bearst/lucky-mcp-server

MCP 客户端配置:

{
  "mcpServers": {
    "lucky": {
      "command": "npx",
      "args": ["-y", "@bearst/lucky-mcp-server"],
      "env": {
        "LUCKY_BASE_URL": "http://127.0.0.1:16601",
        "LUCKY_OPEN_TOKEN": "<open-token>"
      }
    }
  }
}

从本地构建运行时,将 command 设为 nodeargs 设为 ["/path/to/lucky-mcp-server/dist/cli.js"]

环境变量

变量

必填

默认值

说明

LUCKY_BASE_URL

Lucky 管理端根 URL

LUCKY_OPEN_TOKEN

OpenToken

LUCKY_TLS_VERIFY

true

校验 Lucky HTTPS 证书。自签证书设为 false

LUCKY_TIMEOUT_MS

15000

请求超时(毫秒)

LUCKY_DEFAULT_RULE_KEY

lucky_expose_service 默认使用的 Web 监听 key

LUCKY_DEFAULT_LISTEN_PORT

lucky_expose_service 默认使用的监听端口

LUCKY_ALLOWED_DOMAIN_SUFFIX

允许写入的域名后缀,逗号分隔

LUCKY_DEBUG

向 stderr 输出请求路径,不输出 token

OpenToken 在 Lucky 设置中签发。请遵守 Lucky 对 OpenToken 的使用条款。

工具

列表类工具返回压缩后的字段,不返回 Lucky 原生完整对象。密钥类字段在响应中脱敏。

反向代理

工具

说明

lucky_status

连通性、版本、模块与当前 MCP 配置

lucky_list_web_rules

Web 监听及其子规则(端口、TLS、域名、后端)

lucky_get_web_rule

按 key 读取一条监听

lucky_expose_service

按域名将后端挂到已有监听;已存在则更新后端

lucky_unexpose_service

按域名删除子规则,不删除监听

lucky_set_route_enabled

启用或停用指定域名的子规则

lucky_web_logs

反代访问日志

lucky_expose_service 选择监听的顺序:rule_keylisten_portLUCKY_DEFAULT_RULE_KEYLUCKY_DEFAULT_LISTEN_PORT → 已启用的 TLS 监听(优先端口 443)。不会创建新的监听端口。

新增子规则时复制同一监听上已有的反向代理规则,并改写域名与后端。目标监听没有任何反向代理子规则时,提交 PascalCase 最小对象。

证书

工具

说明

lucky_list_certs

证书元数据(不含私钥与 PEM)

lucky_get_cert

按 key 读取证书元数据

lucky_bind_cert

将已有证书绑定到 Web 监听并启用 TLS

lucky_add_custom_cert

上传自定义 PEM

lucky_sync_cert

触发指定证书的 ACME / 手动同步

端口转发

工具

说明

lucky_list_port_forwards

端口转发列表

lucky_upsert_port_forward

按监听端口与协议创建或更新

lucky_delete_port_forward

按 key 删除

lucky_set_port_forward_enabled

启用或停用

lucky_port_forward_logs

日志

DDNS

工具

说明

lucky_list_ddns

任务列表(提供商、域名、最近 IP)

lucky_get_ddns

按 key 读取任务

lucky_set_ddns_enabled

启用或停用

lucky_sync_ddns

立即同步

lucky_ddns_logs

日志

创建新任务需要提供商专用字段,请使用 lucky_api_call

STUN / WOL / 设置

工具

说明

lucky_list_stun_rules

STUN 规则

lucky_set_stun_enabled

启用或停用 STUN 规则

lucky_stun_logs

STUN 日志

lucky_list_wol_devices

WOL 设备

lucky_wake

按 key、名称或 MAC 发送魔术包

lucky_add_wol_device

添加设备

lucky_get_settings

读取基础设置(密钥脱敏)

计划任务

工具

说明

lucky_list_cron_jobs

任务列表

lucky_upsert_cron_job

按名称(或 key)创建或更新

lucky_delete_cron_job

按 key 删除

lucky_set_cron_enabled

启用或停用

lucky_run_cron_job

立即执行

lucky_cron_logs

日志

FTP / WebDAV

工具

说明

lucky_get_ftp / lucky_get_webdav

配置与运行状态

lucky_update_ftp / lucky_update_webdav

合并写入配置

lucky_ftp_logs / lucky_webdav_logs

日志

Docker

工具

说明

lucky_list_docker

容器、镜像、卷、Compose 项目(只读)

IP 过滤

工具

说明

lucky_list_ip_filters

过滤规则

lucky_get_ip_filter

按 key 读取规则

lucky_list_blocked_ips

端口诱捕已封禁 IP

lucky_unblock_ip

解除封禁

lucky_ip_filter_logs

日志

安全组

工具

说明

lucky_list_security_groups

安全组、授权与用户(只读)

lucky_list_auth_providers

第三方认证配置(只读)

日志、存储、主机

工具

说明

lucky_logs_stats

日志中心统计、位置与数据流

lucky_query_logs

查询日志中心

lucky_list_storage

存储挂载

lucky_set_storage_enabled

启用或停用挂载

lucky_list_local_paths

浏览 Lucky 可见的本地路径

lucky_host_status

主机与模块状态

lucky_list_tunnels

Cloudflared 与 Coraza 实例

lucky_query_ip

IP 库查询

Web 终端

工具

说明

lucky_list_terminal_connections

SSH 连接与会话(不含 SFTP)

lucky_upsert_terminal_connection

按名称创建或更新连接

通用 API

工具

说明

lucky_api_catalog

允许调用的 API 前缀

lucky_api_call

调用前缀白名单内的 Lucky API

lucky_api_call 拒绝以下路径:登录、登出、管理员密码、OpenToken、2FA、配置恢复、进程重启、OAuth 登录、终止主机进程。基础设置仅允许读取。

开发

npm install
npm run typecheck
npm test
npm run lint
npm run build
LUCKY_BASE_URL="http://127.0.0.1:16601" \
LUCKY_OPEN_TOKEN="<open-token>" \
npm run dev

发布

版本记录见 CHANGELOG.md

创建 GitHub Release 会触发 Publish workflow。仓库 Secrets 需配置 NPM_TOKEN(npm granular token,具备 @bearst/lucky-mcp-server 发布权限)。Release tag 须与 package.jsonversion 一致,例如 v0.1.2

Publish 只在 Release 或手动 workflow_dispatch 时运行,不会在 push 时发版。

License

MIT

English

MCP server for Lucky. It authenticates with OpenToken and exposes stdio tools for reverse proxy, certificates, port forwarding, DDNS, and related Lucky 3.0 modules.

Requirements

  • Node.js 20+

  • A Lucky instance with OpenToken enabled (admin port defaults to 16601)

The client sends the token in the openToken header. It does not log in with a password or keep a session cookie.

Install

npx -y @bearst/lucky-mcp-server
{
  "mcpServers": {
    "lucky": {
      "command": "npx",
      "args": ["-y", "@bearst/lucky-mcp-server"],
      "env": {
        "LUCKY_BASE_URL": "http://127.0.0.1:16601",
        "LUCKY_OPEN_TOKEN": "<open-token>"
      }
    }
  }
}

To run a local build, set command to node and args to ["/path/to/lucky-mcp-server/dist/cli.js"].

Environment

Variable

Required

Default

Description

LUCKY_BASE_URL

yes

Lucky admin base URL

LUCKY_OPEN_TOKEN

yes

OpenToken

LUCKY_TLS_VERIFY

no

true

Verify Lucky's TLS certificate. Set false for self-signed certs

LUCKY_TIMEOUT_MS

no

15000

Request timeout in milliseconds

LUCKY_DEFAULT_RULE_KEY

no

Default web listener key for lucky_expose_service

LUCKY_DEFAULT_LISTEN_PORT

no

Default web listener port for lucky_expose_service

LUCKY_ALLOWED_DOMAIN_SUFFIX

no

Comma-separated suffixes allowed for writes

LUCKY_DEBUG

no

Log request paths to stderr; tokens are not logged

Issue the token in Lucky settings. Follow Lucky's terms for OpenToken.

Tools

List tools return compact records, not Lucky's full native objects. Secret fields are redacted.

lucky_expose_service selects a listener in this order: rule_keylisten_portLUCKY_DEFAULT_RULE_KEYLUCKY_DEFAULT_LISTEN_PORT → an enabled TLS listener (port 443 preferred). It does not create a new listen port. New reverse-proxy routes are cloned from an existing route on the same listener.

lucky_api_call is restricted to allowlisted path prefixes. It rejects login, logout, admin password, OpenToken, 2FA, config restore, process reboot, OAuth login, and host process kill. Base settings are read-only.

See the Chinese section above for the full tool table.

Development

npm install
npm run typecheck
npm test
npm run lint
npm run build

Publish

See CHANGELOG.md. A GitHub Release runs the Publish workflow. Add an NPM_TOKEN repository secret with publish access to @bearst/lucky-mcp-server. The release tag must match package.json version (for example v0.1.2). Publish does not run on push.

License

MIT

Available Tools

61 tools
lucky_add_custom_certAdd a custom PEM certificateA

Upload a custom certificate and private key to Lucky. Prefer lucky_bind_cert for Let's Encrypt certs that already exist in Lucky.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
domainsYes
enabledNo
key_pemYes
cert_pemYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, covering the basic safety profile. The description adds no extra behavioral context such as whether the certificate is validated, whether it overwrites existing certs, or any permission requirements. With annotations present, the bar is lower, but credit for additional context is minimal.

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 two sentences with zero waste. The core action is front-loaded, and the alternative guidance follows immediately. Every word contributes to agent decision-making.

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 has 5 params, no output schema, and no param documentation. The description covers the core purpose and sibling distinction, but omits practical details such as response behavior, whether the upload replaces an existing cert with the same name, or any validation caveats. For a write operation, this information would be valuable, but the tool is simple enough that a basic upload intent is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden for parameter meaning. However, the description does not mention any parameter details. While parameter names like name, domains, cert_pem, key_pem, and enabled are self-explanatory, the description fails to compensate for the lack of schema descriptions, especially for optional parameters like enabled.

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 the action ('Upload a custom certificate and private key to Lucky') with a specific verb and resource. It also distinguishes itself from lucky_bind_cert by explicitly naming the alternative, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit routing: 'Prefer lucky_bind_cert for Let's Encrypt certs that already exist in Lucky.' This tells the agent when not to use this tool and which alternative to choose, satisfying the when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_add_wol_deviceAdd a Lucky WOL deviceD
Idempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
macYes
nameYes
broadcastNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_api_callCall an allowlisted Lucky APIA
Destructive

Escape hatch for allowlisted Lucky APIs. Login, admin password, OpenToken, 2FA, restore, reboot, OAuth login, and process kill are blocked. Prefer dedicated tools when one exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
pathYes
queryNo
methodYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=true. The description adds value by enumerating specific blocked dangerous operations (login, restore, reboot, process kill, etc.), which helps the agent understand safety boundaries beyond the bare annotation flags. It doesn't contradict the annotations and provides useful behavioral context.

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 only two sentences, with no wasted words. It front-loads the tool's purpose, follows with safety constraints, and ends with a routing directive. Every sentence 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?

For a generic escape-hatch tool, the description is incomplete. It never points the agent to lucky_api_catalog or any other way to discover which APIs are allowlisted, nor does it explain request construction or response behavior. With no output schema, 0% schema description coverage, and only blocked categories listed, an agent lacks critical operational detail needed to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden of explaining method, path, query, and body. It does not explain any of these parameters, how to construct a path, what values are valid, or how body/query should be structured. The schema only provides enum and pattern, leaving the semantics almost entirely unexplained.

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 clearly identifies the tool as an 'escape hatch for allowlisted Lucky APIs,' naming the verb (call) and resource (API). It differentiates from the many dedicated lucky_* siblings by stating that dedicated tools should be preferred. However, the exact scope of 'allowlisted' is not defined in the description, so a bit of ambiguity remains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit routing guidance: 'Prefer dedicated tools when one exists.' It also lists forbidden operation categories (login, admin password, OpenToken, 2FA, restore, reboot, OAuth login, process kill), which tells the agent when this tool should not be used. This is strong, actionable usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_api_catalogList allowlisted Lucky API prefixesA
Read-onlyIdempotent

List Lucky API prefixes this MCP is willing to call via lucky_api_call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is read-only, idempotent, and non-destructive, so the description's lack of additional behavioral detail is acceptable. It adds the useful relationship to lucky_api_call but does not disclose return format, ordering, or any other runtime behavior.

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 a single, efficient sentence that immediately states the resource and its relationship to lucky_api_call. There is no fluff or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with read-only annotations, the description is complete. It clearly says what will be listed and how it relates to the broader toolset. No output schema exists, but the expected content is unambiguous.

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 tool has zero parameters, earning the baseline of 4. The description does not need to explain parameter semantics, and the empty schema is fully consistent with the description.

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 ('List') and resource ('Lucky API prefixes this MCP is willing to call'), clearly identifying the tool's purpose. It also implicitly differentiates itself from the sibling tool lucky_api_call by framing the catalog as the set of callable prefixes.

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: this tool lists what lucky_api_call is allowed to invoke. It does not explicitly state an exclusion or say 'use this before lucky_api_call', but the relationship is obvious enough that an agent can infer when it is relevant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_bind_certBind a certificate to a Lucky listenerA
Idempotent

Attach an existing Lucky certificate to a web listener and enable TLS. Select the listener with rule_key, listen_port, or a hostname already on that listener.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
cert_keyYes
rule_keyNo
listen_portNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that the operation is mutating, idempotent, and non-destructive. The description adds that it attaches a certificate and enables TLS, which is useful behavioral context, but it does not disclose side effects such as replacing an existing certificate or impacts on active traffic.

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?

Two tightly written sentences deliver the core action first and the selection mechanism second, with no filler. Every clause contributes actionable information.

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 description covers the main action and listener selection, but with no output schema it omits expected return values, error behavior when the listener or certificate is not found, and whether multiple selector parameters can be combined. This leaves moderate gaps for an agent trying to predict the tool's response.

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?

With 0% schema description coverage, the description compensates by explaining the listener-selection parameters: rule_key, listen_port, and domain as a hostname already on the listener. The required cert_key is only implied as the certificate identifier, so its meaning is not fully explicit.

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 states a specific action, 'Attach an existing Lucky certificate to a web listener and enable TLS,' with a clear verb, resource, and outcome. It distinguishes itself from certificate-management siblings like add/sync/list certs by emphasizing 'existing' certificate and binding to a listener.

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?

It provides clear invocation context by explaining that an existing certificate is used and that the listener can be selected via rule_key, listen_port, or a hostname already on that listener. It does not explicitly name alternatives or exclusion conditions, so it stops short of a perfect usage-guideline score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_cron_logsRead Lucky cron logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_ddns_logsRead Lucky DDNS logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_delete_cron_jobDelete a Lucky cron jobD
DestructiveIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_delete_port_forwardDelete a Lucky port forwardB
DestructiveIdempotent

Delete a port-forward rule by key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true, but the description adds no behavioral context beyond those. It does not mention that deletion is permanent, whether existing connections are affected, or how idempotency behaves when the key does not exist.

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 a single sentence that is front-loaded with the action and resource. There is no redundant wording or filler, and every word contributes to the core meaning.

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?

For a destructive tool, the description is too thin. It omits how to source the key, what happens after deletion, and how this relates to other port-forward tools like lucky_set_port_forward_enabled. The annotations cover the destructive nature, but the description still leaves important practical details unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, but it merely repeats the parameter name by saying 'by key.' It does not explain what a key is, where to find it, or what format it takes beyond the schema's generic string type.

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 states a specific verb ('Delete'), a resource ('port-forward rule'), and the identifying mechanism ('by key'). It clearly distinguishes this from sibling tools like lucky_upsert_port_forward, lucky_set_port_forward_enabled, and lucky_list_port_forwards.

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?

The description implies that this tool should be used when a port-forward rule needs to be removed, but it provides no explicit guidance on when to use it versus alternatives such as lucky_set_port_forward_enabled for disabling a rule. There is no mention of prerequisites, like obtaining the key from lucky_list_port_forwards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_expose_serviceExpose a service through LuckyA
Idempotent

Idempotently attach a hostname to an existing Lucky HTTPS/HTTP listener and reverse-proxy it to a backend URL. Reuses the current TLS listener; does not create a new listen port. Domain should be a hostname without http://. Backend should be a full URL such as http://127.0.0.1:3000. If the domain already exists, only the backend (and optional name/auth) is updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRoute remark shown in Lucky
domainYesPublic hostname, without http://
backendYesOrigin URL, e.g. http://127.0.0.1:3000
enabledNoWhether the route is enabled. Default true
rule_keyNoTarget listener key; omit to auto-select
listen_portNoTarget listener port
basic_auth_userNo
basic_auth_passwordNo
http_client_timeoutNoLucky HttpClientTimeout in seconds for this reverse-proxy route
insecure_backend_tlsNoSkip TLS verification when the backend is HTTPS with a self-signed cert

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as idempotent, and the description goes further by specifying that an existing domain only updates backend/name/auth and that no new listen port is created. It does not disclose listener-selection behavior or handling of optional auth/timeout fields, so it is strong but not exhaustive.

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?

Five short, front-loaded sentences; every one carries a distinct constraint or behavioral fact. There is no filler or repetition.

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?

The core invocation details—idempotency, listener reuse, domain/backend formats—are present and the schema covers most parameters. The main gaps are listener-target selection behavior and return semantics, which matter given 10 parameters and no output schema.

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?

With 80% schema description coverage, the schema carries most parameter meaning. The description reinforces domain/backend formats and groups 'name/auth' as updatable fields, but adds little beyond what the schema already provides.

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 first sentence names a specific action—idempotently attach a hostname to an existing Lucky listener and reverse-proxy to a backend—which clearly separates it from unexpose and route-enable siblings. It also states the core scope (existing listener, no new port).

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 for when to use it: attach a hostname to an existing listener, with domain/backend format constraints and idempotent update behavior. It does not explicitly name alternatives or state when not to use this tool, so it stops just short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_ftp_logsRead Lucky FTP logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_certGet a Lucky certificateA
Read-onlyIdempotent

Get compact certificate metadata by key. Private keys are not returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful behavioral detail that private keys are not returned, which sets expectations about the response. This adds meaningful context beyond the annotations.

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 a single concise sentence that states the purpose and the one behavioral caveat. It front-loads the main action and avoids any wasted words, making it easily scannable.

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?

For a simple read-only lookup with a single parameter and full annotation coverage, the description mostly suffices. However, there is no output schema and no mention of error behavior (e.g., what happens if the key is not found), which may leave the agent uncertain about response handling. Still, the description covers the essential return characteristic (metadata, no private keys).

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 description coverage is 0% and the only parameter ('key') just has type and minLength. The description mentions 'by key' but does not explain what format the key takes or how it relates to certificate identity. It provides minimal semantic support for a single parameter, just enough to guess its purpose.

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 states a clear verb ('Get') and resource ('compact certificate metadata by key'), and explicitly notes that private keys are not returned. This distinguishes it from other certificate-related tools like lucky_list_certs and lucky_bind_cert, making the tool's function unambiguous.

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?

The description provides no guidance on when to use this tool versus alternatives such as lucky_list_certs or lucky_add_custom_cert. There is no mention of prerequisites or scenarios where a different tool would be more appropriate, leaving the agent to infer usage solely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_ddnsGet a Lucky DDNS taskD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_ftpRead Lucky FTP config and statusD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_ip_filterGet one Lucky IP filter listD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_settingsRead Lucky base settingsA
Read-onlyIdempotent

Read Lucky base settings. Passwords, OpenToken, and other secrets are redacted. Updating admin account, password, or OpenToken is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context that secrets are redacted and that updating certain fields is not available, which sets clear expectations for output and limitations.

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?

Two concise sentences provide the core purpose and two critical behavioral caveats with no wasted words. Information is front-loaded and easily parsed.

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 tool's simplicity (no parameters, no output schema), the description is largely sufficient. It communicates scope and redaction behavior, though it doesn't enumerate exactly which settings are returned, which is a minor gap.

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 tool has zero parameters and schema coverage is 100%. Since there is nothing to document, the baseline of 4 applies; the description adds no parameter details because none are needed.

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?

Description clearly states 'Read Lucky base settings' with a specific verb and resource. It distinguishes itself from sibling tools by targeting the base configuration rather than a specific feature like cron jobs or port forwards.

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?

Usage is implied: this is the tool for reading base settings. However, no explicit when-to-use or alternatives are provided, and the description doesn't mention any conditions that would route to a different tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_webdavRead Lucky WebDAV config and statusD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_get_web_ruleGet one Lucky web ruleB
Read-onlyIdempotent

Get a compact view of one Lucky web listener and its routes by rule key.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_keyYesLucky web listener key

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only that the view is 'compact,' implying a summarized response, but does not disclose error behavior, return format details, or other side effects beyond that.

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 a single, clear sentence that is front-loaded with the verb and resource. It contains no filler or redundancy and is appropriately sized for a simple getter.

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?

For a simple one-parameter getter with safety annotations and no output schema, the description is adequate. It hints at the response via 'compact view' but does not specify return structure or error handling; however, given the tool's simplicity, this is a minor gap rather than a critical omission.

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 single parameter rule_key is fully described in the schema as 'Lucky web listener key', so schema coverage is 100%. The description mentions 'by rule key' but adds no additional meaning, format, or constraints beyond what the schema already provides.

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 clearly states the action (get) and resource (one Lucky web listener and its routes) with the key parameter. It is specific and unambiguous, but it does not explicitly differentiate from sibling tools like lucky_list_web_rules, though the singular 'one' implies a single-item getter.

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 guidance is provided on when to use this tool versus alternatives, such as when to list all rules instead of fetching one. It lacks any exclusions, prerequisites, or context about when this is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_host_statusLucky host and module statusA
Read-onlyIdempotent

Host overview, connections, processes, module overview, and network interfaces. Process kill is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile effectively. The description adds the crucial behavioral limitation 'Process kill is not available,' which is meaningful context beyond annotations, telling the agent that even though processes are listed, killing them is not possible. This is a valuable disclosure. It could further mention that the tool only reads current state and does not guarantee real-time data, but the provided limitation is strong.

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 a single, compact sentence that efficiently lists the covered areas in a readable sequence, followed by a clear negative constraint. No word is wasted, and the most important functional content is front-loaded. This is exemplary conciseness.

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 that this is a read-only, zero-parameter status tool without an output schema, the description sufficiently conveys what information can be expected (host overview, connections, processes, modules, network interfaces) and its key limitation (no process kill). It does not detail the exact response format, but that is often discoverable from the tool's actual output. The main gap is the absence of a pointer to distinguish this from 'lucky_status', which would help complete the contextual picture for an agent choosing among siblings.

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 tool has zero parameters, so the schema trivially covers 100% of them. With no parameters to explain, the description does not need to add parameter meaning. Per the baseline for zero-parameter tools, a score of 4 is appropriate; there is nothing to compensate for and no ambiguity.

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 clearly enumerates the resource areas covered (host overview, connections, processes, module overview, network interfaces), making it evident that this tool provides a broad status snapshot of the host. However, it lacks an explicit verb like 'get' or 'show', and it does not explicitly differentiate from the sibling 'lucky_status' which likely serves a similar purpose. The specificity of 'host' plus the content list earns a 4, but the absence of a strong action verb and sibling distinction prevents a 5.

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 guidance is given about when to use this tool versus alternatives. The only extra note, 'Process kill is not available,' is a negative constraint but does not explain when to choose this tool over 'lucky_status' or other related list/status tools. There is no context about scenarios such as 'use this for host-level diagnostics' or 'prefer lucky_status for global status.' This leaves the agent without clear routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_ip_filter_logsRead Lucky IP filter / port-trap logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_auth_providersList Lucky third-party auth providersD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_blocked_ipsList Lucky port-trap blocked IPsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_certsList Lucky certificatesA
Read-onlyIdempotent

List SSL certificates in compact form (name, domains, expiry). PEM material is never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as read-only and idempotent. The description adds a meaningful behavioral constraint: PEM material is never returned, which is not captured in annotations and helps agents avoid expecting full certificate data. This provides useful context beyond the structured hints.

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?

A single sentence that is dense with information: lists the fields returned and explicitly denies PEM return. No wasted words, and the most important scoping detail (no PEM) is included.

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?

For a zero-parameter read-only list tool, the description covers the return contents (name, domains, expiry) and the key limitation (no PEM). Since there is no output schema, this is sufficient for an agent to call the tool correctly. Minor details like sorting or pagination are not mentioned, but the tool's simplicity makes them non-critical.

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 tool has zero parameters and schema coverage is 100% (empty schema). The description correctly avoids mentioning parameters, and since none exist, the baseline of 4 applies. No additional parameter semantics are needed.

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 states a specific verb 'List', the resource 'SSL certificates', and the scope 'compact form (name, domains, expiry)'. It also explicitly notes what is not returned (PEM material), which differentiates it from related tools like lucky_get_cert that may return full certificate details.

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 retrieving a compact certificate list but does not explicitly state when to use this tool over alternatives like lucky_get_cert. It does not provide exclusions or direct routing guidance, leaving the context to be inferred from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_cron_jobsList Lucky cron jobsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_ddnsList Lucky DDNS tasksA
Read-onlyIdempotent

List DDNS tasks in compact form (provider, domains, last IP). Provider secrets are redacted. Creating a new provider task is provider-specific; use lucky_api_call only if you already have a native payload.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful output behavior beyond annotations by stating that provider secrets are redacted and that the result is compact. This gives the agent concrete expectations about the response.

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?

Two sentences with no filler. The first sentence immediately states the action and expected output fields, and the second adds a relevant routing caveat for a related operation. This is appropriately sized and well structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list operation with no output schema, the description gives enough context to call it correctly: it identifies the result fields and warns that secrets are redacted. The annotations cover the read-only and non-destructive behavior, so nothing essential is missing.

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 input schema has zero parameters, so the baseline is 4 and no parameter documentation is required. The description does not attempt to explain nonexistent parameters; its mention of provider, domains, and last IP concerns response content rather than input 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 states a specific verb ('List'), a clear resource ('DDNS tasks'), and the compact output scope (provider, domains, last IP). It also differentiates from the generic lucky_api_call by noting that creating new provider tasks is provider-specific. This leaves little ambiguity about what the tool does.

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?

It gives explicit guidance for a common adjacent action: creating a new provider task should go through lucky_api_call, and only when a native payload is already available. However, it does not explicitly contrast with lucky_get_ddns for retrieving a single task's full details, so the routing guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_dockerList Lucky Docker resourcesA
Read-onlyIdempotent

List Docker containers, images, volumes, and compose projects visible to Lucky. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the scoping detail 'visible to Lucky' and repeats 'Read-only,' but does not describe output shape, pagination, or failure behavior. This adds modest value beyond the annotations.

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?

A single, well-structured sentence with no filler. The verb and resource scope are front-loaded, and every clause adds meaningful information.

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?

For a no-parameter, read-only list operation, the description is nearly complete: it enumerates the exact output categories and the visibility scope. It does not describe the response format, but the verb 'List' and concrete resource types make the operation understandable without an output schema.

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 tool has zero parameters and 100% schema description coverage, so there are no parameter semantics for the description to clarify. The baseline of 4 applies because no parameter ambiguity exists.

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 ('List') and names the exact resource categories: Docker containers, images, volumes, and compose projects. It is clearly distinct from other lucky_list_* siblings by the Docker domain and the 'visible to Lucky' scope.

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 makes clear when to use it: whenever an inventory of Lucky-visible Docker resources is needed. It does not explicitly name alternatives or exclusions, but no sibling tool covers the same resource set, so the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_ip_filtersList Lucky IP filter rulesD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_local_pathsBrowse Lucky local pathsA
Read-onlyIdempotent

List filesystem roots, or files under a path, as Lucky sees them.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation read-only, idempotent, and non-destructive, so the safety profile is known. The description adds the contextual detail that results reflect Lucky's view of the filesystem, which is useful. It does not disclose behavior for invalid paths, hidden files, recursion, or path format, but for a simple list operation the annotations carry much of the burden.

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?

A single 12-word sentence conveys the full behavior without filler. The conditional behavior (roots vs files under path) is front-loaded and immediately usable. No sentence is wasted.

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?

For a read-only tool with one optional parameter, the description covers the essential behavior: roots without a path and files under a path. Annotations supply the safety profile, and the output type is self-evidently a listing. The main gaps are path format and recursion semantics, which are minor for a simple browse operation.

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 schema has one optional 'path' string with 0% description coverage, so the description must compensate. It effectively does: 'roots, or files under a path' tells the agent that omitting path lists roots and providing it lists entries beneath it. It does not specify absolute vs relative path syntax or whether recursion is included, but the core semantic is communicated.

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 ('List') and a precise scope: filesystem roots when no path is given, or files under a given path. The qualifier 'as Lucky sees them' clarifies that this is Lucky's view of the filesystem, distinguishing it from generic host filesystem tools. No sibling tool covers this same resource, so it is easy to identify.

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 the main use case: exploring the filesystem from Lucky's perspective. It distinguishes root-level listing from path-scoped listing by the optional path argument, which gives conditional guidance. However, it does not explicitly name alternatives or state when not to use this tool; with 40+ siblings, a pointer to related storage or file tools would have been helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_port_forwardsList Lucky port forwardsA
Read-onlyIdempotent

List port-forward rules in compact form (listen port, target, protocol).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a small amount of context by naming the compact output fields, but it does not address pagination, ordering, authentication, or output shape beyond those three fields.

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 a single focused sentence that front-loads the action and resource, then adds the only necessary extra detail: the compact output fields. There is no filler or repetition of annotation information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool, the description is complete enough: it identifies the operation, the resource, and the key return fields. The annotations cover the safety behavior, and there is no complex input or output schema that would require further explanation.

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 input schema is empty and has 100% schema description coverage by nature, so there are no parameters for the description to explain. Per the zero-parameter baseline, this is scored well because no input semantics are missing.

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 states a specific verb ('List'), a clear resource ('port-forward rules'), and the output scope ('compact form (listen port, target, protocol)'). It is immediately distinguishable from related siblings like lucky_upsert_port_forward, lucky_delete_port_forward, and lucky_port_forward_logs.

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 the tool is for reading port-forward rules rather than creating or modifying them, which is reasonable against the sibling set. However, it provides no explicit guidance on when to prefer this over alternatives or what to use when more detail is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_security_groupsList Lucky security groupsA
Read-onlyIdempotent

List security groups, grants, and users. Passwords are redacted. Creating users with passwords is not exposed as a dedicated tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish safety/read-only behavior, and the description adds concrete behavioral context by stating that passwords are redacted in output. This is useful beyond the annotations; no contradiction exists.

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 core statement is concise and front-loaded. The second sentence about creating users adds a useful limitation but is slightly tangential to the tool's own invocation.

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?

For a parameterless list operation with strong annotations, the description is essentially complete: it names the listed entities and the important redaction behavior. No output schema exists, but the expected return content is summarized well enough for a simple list.

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 input schema has zero parameters and 100% schema coverage, so there is no undocumented parameter burden. Per the baseline for parameterless tools, the description does not need to add parameter detail.

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 clear verb+resource combination: 'List security groups, grants, and users.' It also distinguishes the scope from the many sibling list tools by naming exactly what entities are returned. The title and description agree without being a tautology.

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 list operation and resource naming make the primary use case obvious, but there is no explicit when-to-use guidance or comparison with sibling tools. The note that creating users with passwords is not exposed hints at a non-goal but stops short of naming an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_storageList Lucky storage mountsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_stun_rulesList Lucky STUN rulesA
Read-onlyIdempotent

List STUN/NAT mapping rules (name, listen port, public address when known).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the nuance that the public address is shown 'when known', which is useful, but no further behavioral details like pagination or ordering are disclosed.

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?

A single, well-structured sentence that front-loads the primary action and resource, then lists the informative fields with a precise qualifier. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only listing tool, the description is complete. It states what the tool returns and the caveat about the public address. Since there is no output schema, the description adequately covers the return content.

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 tool has zero parameters, and the schema coverage is 100% (vacuously). The description adds meaning by listing the fields that will appear in the result, even though there is nothing to explain about parameter inputs.

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 states a specific verb ('List'), a clear resource ('STUN/NAT mapping rules'), and enumerates the returned fields (name, listen port, public address). This clearly distinguishes it from sibling tools like lucky_set_stun_enabled or lucky_stun_logs.

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 intended use as a read-only listing operation is implied by the verb and resource, but there is no explicit guidance on when to choose this over alternatives or any exclusions. The sibling tools that modify STUN settings are not mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_terminal_connectionsList Lucky web-terminal connections and sessionsA
Read-onlyIdempotent

Passwords and private keys are redacted. SFTP file operations are not exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond the annotations: passwords and private keys are redacted, and SFTP file operations are not exposed, which prevents an agent from expecting secret material or file-transfer capabilities.

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?

Two short sentences deliver two distinct, useful caveats with no filler. The wording is front-loaded and easy to parse, and each sentence earns its place.

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?

For a zero-parameter enumeration tool, the title plus description sufficiently convey purpose and key behavioral limitations. There is no output schema, so a bit more detail about the returned items could help, but the simplicity of the operation and the strong annotations make the current definition adequate.

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 tool has zero parameters, so there is no parameter semantics burden on the description. The schema fully covers the empty input shape, and the baseline for a parameterless tool applies.

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 does not restate the verb, but the title and name clearly identify a read-only listing of web-terminal connections and sessions. The caveat about redacted passwords and private keys reinforces the read-only nature and distinguishes this resource from other lucky_* list tools.

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?

Usage is implied by the title and name: call it to enumerate web-terminal connections/sessions. There is no explicit guidance about when to prefer this over sibling tools such as lucky_upsert_terminal_connection, and no exclusion statements beyond the SFTP note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_tunnelsList Lucky tunnels and WAF instancesB
Read-onlyIdempotent

Cloudflared tunnels plus Coraza WAF instances.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare the operation safe: readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds the domain context 'Cloudflared tunnels plus Coraza WAF instances' but reveals nothing about output shape, pagination, or whether WAF instances are nested or separate. This is acceptable 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise: one short phrase with no filler and the key resource types front-loaded. It loses a point for being a sentence fragment that lacks an explicit verb.

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?

There is no output schema, so the description should compensate by stating what is returned and in what form. 'Cloudflared tunnels plus Coraza WAF instances' conveys resource types but not whether results are merged, separate arrays, or paginated. For a simple zero-parameter read-only tool this is adequate but leaves real gaps.

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 tool has zero parameters and the schema has no properties, so there is nothing for the description to explain. Per the no-parameter baseline, a 4 is appropriate.

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 title clearly states the action and resources: 'List Lucky tunnels and WAF instances', and the description pins down the exact types (Cloudflared tunnels, Coraza WAF instances). This distinguishes it from sibling list tools like lucky_list_wol_devices or lucky_list_ip_filters. However, the description itself is a noun phrase without an explicit verb, so purpose rests partly on the title.

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 guidance is given about when to use this tool instead of another list tool. With many lucky_list_* siblings, an agent receives no criteria or exclusions to help route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_web_rulesList Lucky reverse-proxy rulesA
Read-onlyIdempotent

List Lucky web listeners and their reverse-proxy routes in compact form (port, TLS, domains, backends). Use this before exposing a service.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavior context by noting the compact output format and the specific route properties included, which is valuable since no output schema is provided.

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?

Two concise sentences: the first states the operation and output contents, the second gives the recommended use case. No redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with annotations already covering safety, the description provides the necessary information about what is returned and when to use it. Nothing important is missing.

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 tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameters. The baseline of 4 applies for parameterless tools.

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 states a specific verb ('List') and resource ('Lucky web listeners and their reverse-proxy routes'), and identifies the key output fields ('port, TLS, domains, backends'). This clearly distinguishes it from other list tools like lucky_list_port_forwards or lucky_list_tunnels.

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?

It explicitly recommends using this tool before exposing a service, giving a clear use context. It does not mention exclusions or direct alternatives, but the contextual guidance is sufficient for a simple read-only list operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_list_wol_devicesList Lucky WOL devicesD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_logs_statsLucky logs-center stats and locationsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_port_forward_logsRead Lucky port-forward logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_query_ipQuery Lucky IP databaseD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_query_logsQuery Lucky logs-centerC
Read-onlyIdempotent

Query centralized logs. Pass Lucky's native query object; common fields are search, limit, and location.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
searchNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description need not repeat that. However, it adds no behavioral context such as return format, pagination, or sorting. The only extra is 'common fields are search, limit, and location,' which is more about parameters than behavior and is partially inaccurate since 'location' is not in the schema.

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?

Two short sentences with no filler. The purpose is front-loaded. However, the second sentence introduces a potentially misleading field ('location') and does not add enough value to justify its imprecision.

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?

Without an output schema, the description should explain what the tool returns (e.g., log entries). It does not. It also fails to describe the query object schema or clarify how the optional parameters interact. For a tool that accepts a complex nested query object, this is a significant gap, especially given the 0% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It mentions 'search, limit, and location' but the schema has 'limit', 'query', and 'search' as top-level fields; 'location' is absent, creating confusion. It also says to pass 'Lucky's native query object' but doesn't explain its structure or how it relates to the separate 'search' and 'limit' parameters. This is insufficient for a nested object parameter.

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 the verb 'Query' and the resource 'centralized logs', which is clear and distinct from the specific log tools among siblings (e.g., lucky_cron_logs, lucky_ftp_logs). It is not a tautology, but it lacks explicit differentiation from other log-related tools beyond the word 'centralized'.

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 guidance is provided on when to use this tool versus the many sibling log-specific tools. It does not mention that for specific log types (cron, FTP, etc.) one should use those dedicated tools. The description only gives a hint about parameters, not usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_run_cron_jobRun a Lucky cron job nowD
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_set_cron_enabledEnable or disable a Lucky cron jobD
Idempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
enabledYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_set_ddns_enabledEnable or disable a Lucky DDNS taskD
Idempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
enabledYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_set_port_forward_enabledEnable or disable a Lucky port forwardD
Idempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
enabledYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_set_route_enabledEnable or disable a Lucky routeA
Idempotent

Enable or disable the reverse-proxy route for a hostname without deleting it.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
enabledYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false, and the description reinforces this by saying 'without deleting it.' It also clarifies that the operation changes the route's enabled state. It does not mention potential side effects like immediate traffic cutoff, but given the annotation coverage and the simple nature of the toggle, the added context is sufficient.

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 a single concise sentence that front-loads the action and key scope ('reverse-proxy route') before the clarification. No wasted words, and the structure is easy to scan.

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?

For a simple two-parameter toggle with annotations covering safety, the description provides enough context to invoke it correctly. It does not mention the response format (no output schema) or immediate effects, but these are minor given the simplicity and the presence of idempotent/non-destructive hints. It is complete enough for a straightforward operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the parameters. It only indirectly references 'hostname' (likely domain) and 'enable or disable' (likely enabled), but it does not explicitly define the parameters, their types, or any constraints. The agent must infer parameter meaning from the action, which is minimal compensation for zero schema coverage.

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 the action (enable/disable), the resource (reverse-proxy route), and the identifying scope (hostname). It distinguishes from sibling set_enabled tools by specifying 'reverse-proxy route' and adds 'without deleting it' to clarify the non-destructive nature, which is more specific than many siblings.

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 (when you want to toggle a route's enabled state) but does not explicitly mention alternatives or when not to use it. It does not say 'use this instead of X' or provide exclusions, though the resource-specific wording gives a hint. The agent can infer from the name and sibling list, but explicit guidance is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_set_storage_enabledEnable or disable a Lucky storage mountD
Idempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
enabledYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_set_stun_enabledEnable or disable a Lucky STUN ruleD
Idempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
enabledYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_statusLucky statusA
Read-onlyIdempotent

Probe Lucky connectivity, version, modules, and MCP settings. OpenToken is never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds meaningful context beyond annotations by stating 'OpenToken is never returned,' which is a critical safety guarantee. This extra behavioral disclosure is valuable and not redundant.

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?

A single, tightly worded sentence conveys the tool's purpose and a crucial security boundary. Every word earns its place; no filler or repetition of annotations.

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?

For a zero-parameter, read-only probe with no output schema, the description sufficiently states what will be probed and adds a security caveat. It doesn't describe the return shape, but the listed probe areas imply the response content, which is adequate for this simple tool.

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 tool has zero parameters and the schema is empty with 100% coverage. Baseline for 0 params is 4; the description correctly focuses on what the probe reports rather than inputs. No parameter documentation is needed.

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 'Probe' and names precise resources: 'Lucky connectivity, version, modules, and MCP settings.' It clearly differentiates from siblings like lucky_host_status, which targets host state, and other list/get tools. The scope is unambiguous.

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 this is a diagnostic/readiness tool for checking Lucky's status, but it gives no explicit when-to-use guidance or mention of alternatives. With many sibling tools, some routing context would help, but the tool's simple nature makes usage fairly obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_stun_logsRead Lucky STUN logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_sync_certTrigger Lucky certificate syncA

Trigger ACME/manual sync for an existing certificate key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations tell us it is not read-only, not idempotent, and not marked destructive, but the description adds no behavioral details beyond the triggering action. It does not explain side effects, asynchronous behavior, failure modes, or whether existing certificate data is modified.

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?

A single, front-loaded sentence with no filler. Every word adds meaning, and the key qualifier 'existing' is placed early to prevent misuse with new certificates.

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 one-parameter triggering tool, the description gives enough to invoke it, but it omits expectations around return values, error conditions, and what 'ACME/manual' implies about mode selection. It is adequate but leaves notable operational gaps.

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?

With 0% schema description coverage, the description must compensate, and it does by clarifying that `key` refers to an existing certificate key. It stops short of describing key format, origin, or usage examples, but for a single simple parameter it provides meaningful context.

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 ('Trigger') and resource ('certificate sync'), with the qualifier 'ACME/manual' and 'existing certificate key'. It clearly distinguishes itself from cert-related siblings like list/get/bind/add by focusing on the sync action.

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 guidance is given about when to use this tool versus alternatives such as lucky_get_cert, lucky_add_custom_cert, or lucky_bind_cert. The description implies the purpose but provides no context for choosing it over related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_sync_ddnsTrigger a Lucky DDNS syncC

Force one DDNS task to update now.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a mutating (readOnlyHint=false), non-idempotent action. The description adds that the update is forced, immediate, and scoped to a single task. It does not disclose whether the call waits for the external provider update to complete, whether the task must be enabled, or the error behavior for an invalid key — but the annotation coverage lowers the burden.

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?

A single six-word sentence with zero filler; the action and scope are front-loaded. It is appropriately sized for a one-parameter tool, though slightly too terse to also carry usage or sourcing hints.

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?

There is no output schema, so the description must explain the outcome, but it never says what happens after invocation (synchronous vs. fire-and-forget), whether the task must be enabled, or where the key comes from. For a tool that triggers an external DDNS provider update, this is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden for the single required 'key' parameter. The phrase 'one DDNS task' implies key selects the target task, which is a partial hint, but it does not state the key's format or where to obtain it (e.g., from lucky_list_ddns).

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 'Force one DDNS task to update now' uses a specific verb ('Force... to update'), a clear resource ('one DDNS task'), and a temporal scope ('now'). It is readily distinguishable from the DDNS sibling family (list_ddns, get_ddns, set_ddns_enabled, ddns_logs), though it does not explicitly name an alternative.

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?

There is no when-to-use or when-not-to-use guidance and no alternatives mentioned. With a DDNS family (list/get/set_enabled/logs) and a similarly 'trigger now' sibling (lucky_run_cron_job), the agent gets no help choosing between forcing a sync versus enabling a task or running a cron job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_unblock_ipUnblock an IP from Lucky port-trapD
DestructiveIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_unexpose_serviceRemove a Lucky reverse-proxy hostnameA
DestructiveIdempotent

Remove the reverse-proxy route for a hostname from its Lucky listener. The listener itself is not deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
rule_keyNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent behavior. The description adds crucial context about what is destroyed (the route only) and what is preserved (the listener). This goes beyond the annotations by clarifying scope of impact.

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 a single, compact sentence with no fluff. It states the action, target, and a key exception (listener not deleted), all in minimal 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?

For a destructive operation with two parameters and no output schema, the description omits important details: what rule_key means, behavior when domain is absent, confirmation requirements, or return values. It lacks enough context for safe and correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description must compensate for parameter meaning. It only implies 'domain' via 'hostname', but leaves 'rule_key' completely unexplained. A caller cannot determine whether rule_key is required or how it maps to the route.

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 specifies the verb 'Remove' and the resource (reverse-proxy route for a hostname from its Lucky listener). It also distinguishes the tool from siblings like lucky_expose_service by noting the listener itself is not deleted. This provides precise, unambiguous understanding.

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?

The description does not state when to use this tool versus alternatives such as lucky_set_route_enabled (which may enable/disable rather than remove) or other deletion tools. No explicit conditions or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_update_ftpUpdate Lucky FTP configB
Idempotent

Merge a partial patch into the FTP configure object. Secrets in the response are redacted.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent and non-destructive. The description adds that the update is a merge (partial patch) rather than a full replacement, and that secrets in the response are redacted—both useful beyond the annotations.

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?

Two concise sentences with no filler. The core operation is stated first, and the response redaction note is a valuable addition without unnecessary verbosity.

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?

No output schema, so return behavior is undisclosed. Missing details about error conditions, permission requirements, or how patch merges are applied. For a mutation tool with limited structured metadata, the description leaves important gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description only refers to 'partial patch' without explaining the structure or keys of the patch object. Since the patch is a nested object with no documented meaning, the description fails to compensate for the missing schema detail.

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 a specific action ('Merge a partial patch') and resource ('FTP configure object'), making it clear this is an update operation. It distinguishes from read-only siblings like lucky_get_ftp, though 'configure' is slightly informal.

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 guidance on when to use this tool versus alternatives, no prerequisites such as fetching current config first, and no exclusions. The description implies usage but provides no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_update_webdavUpdate Lucky WebDAV configA
Idempotent

Merge a partial patch into the WebDAV configure object. Secrets in the response are redacted.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate readOnly=false, idempotent=true, and destructive=false, so the description correctly aligns with those. It adds meaningful behavioral context beyond annotations by explaining that the update merges a partial patch and that secrets are redacted in the response. This helps the agent set expectations about safety and output handling.

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 two concise sentences with no filler. It front-loads the core behavior first and adds the noteworthy redaction behavior second. Every sentence earns its place.

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?

With no output schema and no parameter descriptions, the description does not fully fill the gap. It tells the agent that secrets in the response are redacted and that the operation is a partial patch, but it does not provide enough detail about the shape or allowed keys of the patch object, nor what the full response contains. This is workable but incomplete for open-ended nested config updates.

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 provides no descriptions for the 'patch' property, and schema description coverage is 0%. The description adds some meaning by calling it a 'partial patch' merged into the config object, but it does not explain what fields are valid, whether the merge is shallow or deep, or how missing properties are handled. This is a minimal compensation rather than full parameter guidance.

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 ('Merge') and names the exact resource ('the WebDAV configure object'), and adds the critical 'partial patch' semantics. This clearly distinguishes it from read-only siblings like lucky_get_webdav and other update tools like lucky_update_ftp.

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?

The description gives no guidance about when to choose this tool over alternatives. It does not mention using lucky_get_webdav to inspect current configuration first, nor does it contrast with lucky_update_ftp or other config-modifying tools. The only usage signal is implied by the tool name and the action verb in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_upsert_cron_jobCreate or update a Lucky cron jobA
Idempotent

Idempotent by name (or key). expression is a cron spec; command is the shell/http payload Lucky should run.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
nameYes
typeNo
commandYes
enabledNo
expressionYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint, readOnlyHint, and destructiveHint. The description adds value by explaining the idempotency mechanism (by name or key) and clarifying what expression and command mean. It does not describe update merge/replace behavior, but the annotations cover the safety profile, so this is above the baseline.

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?

Two tight sentences, no filler, with the most important behavioral fact (idempotency) front-loaded. Every phrase earns its place and is immediately useful to an agent.

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 description is minimally viable: an agent knows the required fields are name, a cron expression, and the command payload. However, there is no explanation of key, type, or enabled semantics, no statement about how an update behaves when some fields are omitted, and no return-value information despite the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It explains expression and command, but leaves key, type, and enabled completely undefined. With six parameters and only two addressed, the semantic gap is significant.

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 title and description clearly state the tool creates or updates a Lucky cron job, with a specific verb and resource. The idempotency-by-name/key detail further distinguishes it from the sibling cron tools for deleting, enabling, running, and listing cron jobs.

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 this is the create/update operation for cron jobs, and the idempotency note suggests it can be used for both. However, it never explicitly says when to use this tool versus siblings like lucky_delete_cron_job or lucky_set_cron_enabled, leaving usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_upsert_port_forwardCreate or update a Lucky port forwardA
Idempotent

Idempotently map an external listen port to an internal ip:port. Matching is by listen_port + protocol unless key is provided. Does not send Lucky's full native object.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
nameNo
enabledNo
protocolNo
listen_ipNo
target_ipYes
listen_portYes
target_portYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal idempotent, non-read-only, and non-destructive behavior. The description adds meaningful details beyond the annotations: matching is by listen_port + protocol unless key is provided, and the operation does not send Lucky's full native object. It does not fully explain update/overwrite effects on omitted fields, but it goes beyond what structured annotations alone provide.

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 three concise sentences with no filler. It front-loads the core action in the first sentence, then adds matching semantics and a caveat. Every sentence earns its place.

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 an 8-parameter upsert with no output schema and no param-level descriptions, the description provides the essential mapping and matching behavior but leaves gaps around optional parameters and what the response/return behavior looks like. The caveat about not sending Lucky's full native object is vague and could benefit from elaboration.

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 description coverage is 0%, so the description carries the burden of explaining parameters. It usefully clarifies that listen_port is external and target_ip/target_port are internal, and that protocol or key controls matching. However, it does not explain listen_ip, name, or enabled, leaving several parameters to be inferred from their names alone.

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 a specific verb and resource: 'Idempotently map an external listen port to an internal ip:port.' It also distinguishes this upsert operation from the sibling list/delete/enable port-forward tools by emphasizing create-or-update semantics.

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 that this tool is the idempotent create/update path for port forwards, with matching semantics for identifying existing entries. It does not explicitly name alternative tools or state when not to use it, but the upsert framing is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_upsert_terminal_connectionCreate or update a Lucky SSH connectionA
Idempotent

Idempotent by name. Stores host/user/port; password is optional and will be redacted in responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
hostYes
nameYes
portNo
userNo
passwordNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds meaningful behavior: idempotency keyed by name, optional password, and password redaction in responses. It does not conflict with the idempotentHint or destructiveHint annotations. It could disclose what an update overwrites, but the main behavioral traits are covered.

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?

Two concise sentences with the most important behavior ('Idempotent by name.') front-loaded. No filler or repetition of schema fields.

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 definition covers the core upsert semantics, but for a six-parameter tool with no output schema it leaves gaps: the meaning of key, name's role, update/replace behavior, and the response shape. It is workable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description is the only source of parameter meaning, but it only names host, user, port, and password. It omits name despite it being required and the idempotency key, and also omits key, giving no format or semantics for those parameters.

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 title and description clearly identify this as a create-or-update operation on a Lucky SSH/terminal connection, and 'Idempotent by name' pins down the upsert semantics. It is easily distinguished from the read-only sibling lucky_list_terminal_connections.

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?

'Idempotent by name' supplies the key usage rule: call with an existing name to update and a new name to create. It does not explicitly say to use the list tool for read-only scenarios, but the title and idempotency wording make the intended context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_wakeWake a device through LuckyB

Send a Wake-on-LAN packet. Identify the device by key, name, or MAC.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
macNo
nameNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false (readOnly, idempotent, destructive), so the description carries the burden of explaining behavior. It only states the basic action without disclosing side effects, error handling, idempotency, or what happens if the device is not found or multiple identifiers are provided. No contradiction with annotations, but insufficient behavioral disclosure.

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 a single, efficient sentence that front-loads the action. Every word earns its place; there is no redundancy or 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?

For a mutation tool with no output schema and no annotation coverage, the description should explain what happens on success/failure, whether the device must be pre-registered, and how errors are surfaced. It does none of these. The simple nature of the tool mitigates this slightly, but an agent still lacks critical context for correct invocation and result interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds minimal meaning by saying the device can be identified by key, name, or MAC, implying these are alternative identifiers. However, it does not specify whether they are mutually exclusive, which one is preferred, or format expectations (e.g., MAC address syntax). It does not clarify if any parameter is required, since none are marked required in 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 clearly states the action ('Send a Wake-on-LAN packet') and the identification method ('by key, name, or MAC'). It is specific and distinguishes from sibling tools like lucky_list_wol_devices and lucky_add_wol_device, which have different purposes.

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?

The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It does not mention that the device must be previously added or that one might need to list devices first to get a key. The 'identify by key, name, or MAC' implies some prior knowledge but does not explicitly route the agent to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_webdav_logsRead Lucky WebDAV logsD
Read-onlyIdempotent
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lucky_web_logsRead Lucky reverse-proxy logsB
Read-onlyIdempotent

Read recent access logs for a hostname, a route, or the whole web module. Useful for 502 debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
domainNo
rule_keyNo
route_keyNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered; the description's 'Read' verb is consistent with these. It adds the 'recent' qualifier and the filtering scope, but doesn't describe the return format or pagination. No contradiction, and the added value is modest given annotation coverage.

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?

Two compact sentences with no filler; the scoping and resource are front-loaded and the use case earns its place in the second sentence. Efficient and appropriately short.

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?

For a tool with 4 undocumented parameters and no output schema, the description is thin. It doesn't explain the limit semantics, the rule_key/route_key difference, or what the log output looks like. An agent would need additional probing to call it with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries full burden for the 4 parameters. It maps 'hostname' to domain and 'route' to route_key, but leaves the rule_key vs route_key distinction ambiguous and says nothing about limit. It only partially compensates for the absent schema descriptions.

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?

States a specific verb ('Read') and a clear resource ('recent access logs') with explicit scoping across hostname, route, or whole web module. The 'web module' scoping differentiates it from sibling log tools (cron_logs, ftp_logs, webdav_logs, etc.) reasonably well, though it never names a sibling explicitly.

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?

Gives a concrete use case ('Useful for 502 debugging'), which signals intent. However, it provides no explicit exclusions or named alternatives — an agent has to infer when to pick this over the many other log-reading siblings rather than being routed explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 61 tool updatesv0.1.3
    • First observedlucky_add_custom_cert
    • First observedlucky_add_wol_device
    • First observedlucky_api_call
    • First observedlucky_api_catalog
    • First observedlucky_bind_cert
    • First observedlucky_cron_logs
    • First observedlucky_ddns_logs
    • First observedlucky_delete_cron_job
    • First observedlucky_delete_port_forward
    • First observedlucky_expose_service
    • First observedlucky_ftp_logs
    • First observedlucky_get_cert
    • First observedlucky_get_ddns
    • First observedlucky_get_ftp
    • First observedlucky_get_ip_filter
    • First observedlucky_get_settings
    • First observedlucky_get_web_rule
    • First observedlucky_get_webdav
    • First observedlucky_host_status
    • First observedlucky_ip_filter_logs
    • First observedlucky_list_auth_providers
    • First observedlucky_list_blocked_ips
    • First observedlucky_list_certs
    • First observedlucky_list_cron_jobs
    • First observedlucky_list_ddns
    • First observedlucky_list_docker
    • First observedlucky_list_ip_filters
    • First observedlucky_list_local_paths
    • First observedlucky_list_port_forwards
    • First observedlucky_list_security_groups
    • First observedlucky_list_storage
    • First observedlucky_list_stun_rules
    • First observedlucky_list_terminal_connections
    • First observedlucky_list_tunnels
    • First observedlucky_list_web_rules
    • First observedlucky_list_wol_devices
    • First observedlucky_logs_stats
    • First observedlucky_port_forward_logs
    • First observedlucky_query_ip
    • First observedlucky_query_logs
    • First observedlucky_run_cron_job
    • First observedlucky_set_cron_enabled
    • First observedlucky_set_ddns_enabled
    • First observedlucky_set_port_forward_enabled
    • First observedlucky_set_route_enabled
    • First observedlucky_set_storage_enabled
    • First observedlucky_set_stun_enabled
    • First observedlucky_status
    • First observedlucky_stun_logs
    • First observedlucky_sync_cert
    • First observedlucky_sync_ddns
    • First observedlucky_unblock_ip
    • First observedlucky_unexpose_service
    • First observedlucky_update_ftp
    • First observedlucky_update_webdav
    • First observedlucky_upsert_cron_job
    • First observedlucky_upsert_port_forward
    • First observedlucky_upsert_terminal_connection
    • First observedlucky_wake
    • First observedlucky_web_logs
    • First observedlucky_webdav_logs

TDQS

C2.2/5.0

Scored across 61 tools

Disambiguation4/5

Most tools follow a clear pattern of module plus action (e.g., list_web_rules, upsert_cron_job), making them distinguishable. A few pairs like list_storage vs list_local_paths or logs_stats vs query_logs could be confused, but overall the boundaries are mostly clear.

Naming Consistency5/5

All tools share the lucky_ prefix and use lowercase snake_case with consistent action verbs: list, get, upsert, set, delete, run, sync, wake. Minor deviations like cron_logs instead of get_cron_logs do not break the predictable pattern.

Tool Count1/5

61 tools is well beyond the 50+ threshold and imposes a huge cognitive load on agents. Even though the tools span multiple modules, the sheer number makes the set feel excessive and hard to navigate.

Completeness2/5

The surface is uneven: some modules have full CRUD (cron, port forwards), but many lack common operations such as deleting WoL devices, creating/removing DDNS tasks, deleting certificates, or managing security groups. The generic api_call escape hatch is restricted and cannot fully compensate.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    A secure MCP server for managing OPNsense firewalls through AI assistants. Provides 81 tools across system, firewall, network, DNS, DHCP, VPN, HAProxy, services, diagnostics, and security domains.
    81
    125 PyPI
    21
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server with HTTP/stdio support, a web admin panel for managing services, capabilities, and user permissions with Bearer token authentication, enabling relay and access control for MCP tools.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables clients to access multiple backend MCP servers through a single endpoint, with OAuth 2.1 authorization, namespaced tools, and secure credential management.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables centralized management, proxying, and aggregation of multiple MCP servers behind unified endpoints, with a web GUI, server groups, tool filtering, and lifecycle controls.
    9 npm
    Apache 2.0