@bearst/lucky-mcp-server
Provides read-only visibility into Cloudflared tunnel instances managed by a Lucky instance.
Provides read-only tools for listing Docker containers, images, volumes, and Compose projects via a Lucky instance.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@bearst/lucky-mcp-serverList all reverse proxy rules and check the server status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@bearst/lucky-mcp-server
中文 | 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-serverMCP 客户端配置:
{
"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 设为 node,args 设为 ["/path/to/lucky-mcp-server/dist/cli.js"]。
环境变量
变量 | 必填 | 默认值 | 说明 |
| 是 | — | Lucky 管理端根 URL |
| 是 | — | OpenToken |
| 否 |
| 校验 Lucky HTTPS 证书。自签证书设为 |
| 否 |
| 请求超时(毫秒) |
| 否 | — |
|
| 否 | — |
|
| 否 | — | 允许写入的域名后缀,逗号分隔 |
| 否 | — | 向 stderr 输出请求路径,不输出 token |
OpenToken 在 Lucky 设置中签发。请遵守 Lucky 对 OpenToken 的使用条款。
工具
列表类工具返回压缩后的字段,不返回 Lucky 原生完整对象。密钥类字段在响应中脱敏。
反向代理
工具 | 说明 |
| 连通性、版本、模块与当前 MCP 配置 |
| Web 监听及其子规则(端口、TLS、域名、后端) |
| 按 key 读取一条监听 |
| 按域名将后端挂到已有监听;已存在则更新后端 |
| 按域名删除子规则,不删除监听 |
| 启用或停用指定域名的子规则 |
| 反代访问日志 |
lucky_expose_service 选择监听的顺序:rule_key → listen_port → LUCKY_DEFAULT_RULE_KEY → LUCKY_DEFAULT_LISTEN_PORT → 已启用的 TLS 监听(优先端口 443)。不会创建新的监听端口。
新增子规则时复制同一监听上已有的反向代理规则,并改写域名与后端。目标监听没有任何反向代理子规则时,提交 PascalCase 最小对象。
证书
工具 | 说明 |
| 证书元数据(不含私钥与 PEM) |
| 按 key 读取证书元数据 |
| 将已有证书绑定到 Web 监听并启用 TLS |
| 上传自定义 PEM |
| 触发指定证书的 ACME / 手动同步 |
端口转发
工具 | 说明 |
| 端口转发列表 |
| 按监听端口与协议创建或更新 |
| 按 key 删除 |
| 启用或停用 |
| 日志 |
DDNS
工具 | 说明 |
| 任务列表(提供商、域名、最近 IP) |
| 按 key 读取任务 |
| 启用或停用 |
| 立即同步 |
| 日志 |
创建新任务需要提供商专用字段,请使用 lucky_api_call。
STUN / WOL / 设置
工具 | 说明 |
| STUN 规则 |
| 启用或停用 STUN 规则 |
| STUN 日志 |
| WOL 设备 |
| 按 key、名称或 MAC 发送魔术包 |
| 添加设备 |
| 读取基础设置(密钥脱敏) |
计划任务
工具 | 说明 |
| 任务列表 |
| 按名称(或 key)创建或更新 |
| 按 key 删除 |
| 启用或停用 |
| 立即执行 |
| 日志 |
FTP / WebDAV
工具 | 说明 |
| 配置与运行状态 |
| 合并写入配置 |
| 日志 |
Docker
工具 | 说明 |
| 容器、镜像、卷、Compose 项目(只读) |
IP 过滤
工具 | 说明 |
| 过滤规则 |
| 按 key 读取规则 |
| 端口诱捕已封禁 IP |
| 解除封禁 |
| 日志 |
安全组
工具 | 说明 |
| 安全组、授权与用户(只读) |
| 第三方认证配置(只读) |
日志、存储、主机
工具 | 说明 |
| 日志中心统计、位置与数据流 |
| 查询日志中心 |
| 存储挂载 |
| 启用或停用挂载 |
| 浏览 Lucky 可见的本地路径 |
| 主机与模块状态 |
| Cloudflared 与 Coraza 实例 |
| IP 库查询 |
Web 终端
工具 | 说明 |
| SSH 连接与会话(不含 SFTP) |
| 按名称创建或更新连接 |
通用 API
工具 | 说明 |
| 允许调用的 API 前缀 |
| 调用前缀白名单内的 Lucky API |
lucky_api_call 拒绝以下路径:登录、登出、管理员密码、OpenToken、2FA、配置恢复、进程重启、OAuth 登录、终止主机进程。基础设置仅允许读取。
开发
npm install
npm run typecheck
npm test
npm run lint
npm run buildLUCKY_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.json 的 version 一致,例如 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 |
| yes | — | Lucky admin base URL |
| yes | — | OpenToken |
| no |
| Verify Lucky's TLS certificate. Set |
| no |
| Request timeout in milliseconds |
| no | — | Default web listener key for |
| no | — | Default web listener port for |
| no | — | Comma-separated suffixes allowed for writes |
| 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_key → listen_port → LUCKY_DEFAULT_RULE_KEY → LUCKY_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 buildPublish
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 toolslucky_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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| domains | Yes | ||
| enabled | No | ||
| key_pem | Yes | ||
| cert_pem | Yes |
TDQS
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.
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.
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.
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.
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.
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 deviceDIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| mac | Yes | ||
| name | Yes | ||
| broadcast | No |
TDQS
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.
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.
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.
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.
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.
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 APIADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| query | No | ||
| method | Yes |
TDQS
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.
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.
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.
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.
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.
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 prefixesARead-onlyIdempotent
List Lucky API prefixes this MCP is willing to call via lucky_api_call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 listenerAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| cert_key | Yes | ||
| rule_key | No | ||
| listen_port | No |
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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 jobDDestructiveIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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 forwardBDestructiveIdempotent
Delete a port-forward rule by key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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 LuckyAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Route remark shown in Lucky | |
| domain | Yes | Public hostname, without http:// | |
| backend | Yes | Origin URL, e.g. http://127.0.0.1:3000 | |
| enabled | No | Whether the route is enabled. Default true | |
| rule_key | No | Target listener key; omit to auto-select | |
| listen_port | No | Target listener port | |
| basic_auth_user | No | ||
| basic_auth_password | No | ||
| http_client_timeout | No | Lucky HttpClientTimeout in seconds for this reverse-proxy route | |
| insecure_backend_tls | No | Skip TLS verification when the backend is HTTPS with a self-signed cert |
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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 certificateARead-onlyIdempotent
Get compact certificate metadata by key. Private keys are not returned.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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 taskDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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 statusDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 listDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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 settingsARead-onlyIdempotent
Read Lucky base settings. Passwords, OpenToken, and other secrets are redacted. Updating admin account, password, or OpenToken is not available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 statusDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 ruleBRead-onlyIdempotent
Get a compact view of one Lucky web listener and its routes by rule key.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_key | Yes | Lucky web listener key |
TDQS
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.
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.
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.
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.
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.
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 statusARead-onlyIdempotent
Host overview, connections, processes, module overview, and network interfaces. Process kill is not available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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 providersDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 IPsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 certificatesARead-onlyIdempotent
List SSL certificates in compact form (name, domains, expiry). PEM material is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 jobsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 tasksARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 resourcesARead-onlyIdempotent
List Docker containers, images, volumes, and compose projects visible to Lucky. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 rulesDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 pathsARead-onlyIdempotent
List filesystem roots, or files under a path, as Lucky sees them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No |
TDQS
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.
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.
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.
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.
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.
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 forwardsARead-onlyIdempotent
List port-forward rules in compact form (listen port, target, protocol).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 groupsARead-onlyIdempotent
List security groups, grants, and users. Passwords are redacted. Creating users with passwords is not exposed as a dedicated tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 mountsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 rulesARead-onlyIdempotent
List STUN/NAT mapping rules (name, listen port, public address when known).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 sessionsARead-onlyIdempotent
Passwords and private keys are redacted. SFTP file operations are not exposed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 instancesBRead-onlyIdempotent
Cloudflared tunnels plus Coraza WAF instances.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 rulesARead-onlyIdempotent
List Lucky web listeners and their reverse-proxy routes in compact form (port, TLS, domains, backends). Use this before exposing a service.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 devicesDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 locationsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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 databaseDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes |
TDQS
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.
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.
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.
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.
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.
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-centerCRead-onlyIdempotent
Query centralized logs. Pass Lucky's native query object; common fields are search, limit, and location.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| search | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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 jobDIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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 taskDIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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 forwardDIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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 routeAIdempotent
Enable or disable the reverse-proxy route for a hostname without deleting it.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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 mountDIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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 ruleDIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| enabled | Yes |
TDQS
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.
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.
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.
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.
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.
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 statusARead-onlyIdempotent
Probe Lucky connectivity, version, modules, and MCP settings. OpenToken is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
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.
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.
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.
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.
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.
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-trapDDestructiveIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes |
TDQS
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.
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.
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.
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.
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.
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 hostnameADestructiveIdempotent
Remove the reverse-proxy route for a hostname from its Lucky listener. The listener itself is not deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| rule_key | No |
TDQS
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.
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.
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.
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.
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.
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 configBIdempotent
Merge a partial patch into the FTP configure object. Secrets in the response are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes |
TDQS
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.
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.
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.
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.
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.
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 configAIdempotent
Merge a partial patch into the WebDAV configure object. Secrets in the response are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes |
TDQS
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.
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.
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.
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.
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.
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 jobAIdempotent
Idempotent by name (or key). expression is a cron spec; command is the shell/http payload Lucky should run.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| name | Yes | ||
| type | No | ||
| command | Yes | ||
| enabled | No | ||
| expression | Yes |
TDQS
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.
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.
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.
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.
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.
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 forwardAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| name | No | ||
| enabled | No | ||
| protocol | No | ||
| listen_ip | No | ||
| target_ip | Yes | ||
| listen_port | Yes | ||
| target_port | Yes |
TDQS
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.
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.
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.
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.
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.
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 connectionAIdempotent
Idempotent by name. Stores host/user/port; password is optional and will be redacted in responses.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| host | Yes | ||
| name | Yes | ||
| port | No | ||
| user | No | ||
| password | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| mac | No | ||
| name | No |
TDQS
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.
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.
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.
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.
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.
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 logsDRead-onlyIdempotent
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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 logsBRead-onlyIdempotent
Read recent access logs for a hostname, a route, or the whole web module. Useful for 502 debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| domain | No | ||
| rule_key | No | ||
| route_key | No |
TDQS
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.
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.
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.
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.
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.
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.
61 tool updates
v0.1.3- First observed
lucky_add_custom_cert - First observed
lucky_add_wol_device - First observed
lucky_api_call - First observed
lucky_api_catalog - First observed
lucky_bind_cert - First observed
lucky_cron_logs - First observed
lucky_ddns_logs - First observed
lucky_delete_cron_job - First observed
lucky_delete_port_forward - First observed
lucky_expose_service - First observed
lucky_ftp_logs - First observed
lucky_get_cert - First observed
lucky_get_ddns - First observed
lucky_get_ftp - First observed
lucky_get_ip_filter - First observed
lucky_get_settings - First observed
lucky_get_web_rule - First observed
lucky_get_webdav - First observed
lucky_host_status - First observed
lucky_ip_filter_logs - First observed
lucky_list_auth_providers - First observed
lucky_list_blocked_ips - First observed
lucky_list_certs - First observed
lucky_list_cron_jobs - First observed
lucky_list_ddns - First observed
lucky_list_docker - First observed
lucky_list_ip_filters - First observed
lucky_list_local_paths - First observed
lucky_list_port_forwards - First observed
lucky_list_security_groups - First observed
lucky_list_storage - First observed
lucky_list_stun_rules - First observed
lucky_list_terminal_connections - First observed
lucky_list_tunnels - First observed
lucky_list_web_rules - First observed
lucky_list_wol_devices - First observed
lucky_logs_stats - First observed
lucky_port_forward_logs - First observed
lucky_query_ip - First observed
lucky_query_logs - First observed
lucky_run_cron_job - First observed
lucky_set_cron_enabled - First observed
lucky_set_ddns_enabled - First observed
lucky_set_port_forward_enabled - First observed
lucky_set_route_enabled - First observed
lucky_set_storage_enabled - First observed
lucky_set_stun_enabled - First observed
lucky_status - First observed
lucky_stun_logs - First observed
lucky_sync_cert - First observed
lucky_sync_ddns - First observed
lucky_unblock_ip - First observed
lucky_unexpose_service - First observed
lucky_update_ftp - First observed
lucky_update_webdav - First observed
lucky_upsert_cron_job - First observed
lucky_upsert_port_forward - First observed
lucky_upsert_terminal_connection - First observed
lucky_wake - First observed
lucky_web_logs - First observed
lucky_webdav_logs
TDQS
Scored across 61 tools
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.
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.
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.
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
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Related MCP Servers
- AlicenseAqualityBmaintenanceA 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.81125 PyPI21MIT
- FlicenseNot gradedqualityBmaintenanceAn 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.-
- AlicenseNot gradedqualityCmaintenanceEnables clients to access multiple backend MCP servers through a single endpoint, with OAuth 2.1 authorization, namespaced tools, and secure credential management.MIT
- AlicenseNot gradedqualityCmaintenanceEnables centralized management, proxying, and aggregation of multiple MCP servers behind unified endpoints, with a web GUI, server groups, tool filtering, and lifecycle controls.9 npmApache 2.0