What / where
web/sites/guides/src/content/docs/v4-0-0/command-line-tools/mcp-integration.mdx (origin/develop @ b7c310b) says, directly above its tool table:
Every public function in the Wheels Module is auto-discovered as an MCP tool, prefixed with the module name
and then lists 16 tools (lines 62-77): wheels_generate, wheels_destroy, wheels_migrate, wheels_seed, wheels_db, wheels_test, wheels_reload, wheels_routes, wheels_info, wheels_analyze, wheels_validate, wheels_doctor, wheels_stats, wheels_notes, wheels_create, wheels_upgrade.
The actual exposed surface on origin/develop is 18. Counting cli/lucli/Module.cfc public functions, minus the module's mcpHiddenTools() denylist (main, mcp, d, g, new, console, start, stop, browser, mcpToolSpecs, all $-prefixed helpers — Module.cfc:178-225), minus LuCLI's own BASE_MODULE_INTERNALS exclusion (init, version, showHelp, mcpHiddenTools, mcpToolSpecs, plus BaseModule plumbing — McpCommand.java, shipped since LuCLI v0.3.7), leaves the 16 documented tools plus:
wheels_deploy (Module.cfc:2172) — "Deploy the app to production servers" (Kamal-style deploys: dry-run, rollback, config, setup, bootstrap, exec, version)
wheels_packages (Module.cfc:2481) — "Install, update, and list Wheels packages — use add (not install) to install"
Both are public, neither is in mcpHiddenTools(), so both appear in wheels mcp wheels --once tools/list — the smoke-test command the guide itself recommends, which makes the mismatch easy for a reader to trip over.
Note for anyone re-deriving the count: version() and showHelp() are also public and absent from mcpHiddenTools(), but LuCLI hides them structurally as BaseModule internals, so they correctly do not appear as tools.
Suggested fix
Add two rows to the table, e.g.:
| `wheels_deploy` | Kamal-style production deploys (full deploy, rollback, config, setup, bootstrap, exec). |
| `wheels_packages` | Search, show, add, update, and remove Wheels packages; manage the registry cache. |
While in there, two adjacent nits in the same doc section:
- The "Tools deliberately hidden" list (lines 82-89) omits
g (alias for generate, hidden at Module.cfc:182 for the same duplicate-entry reason as d) and main (the bare-wheels dispatch target, hidden at Module.cfc:180).
- Internal
CLAUDE.md:715 has the same staleness one step behind (17 tools — includes deploy, missing packages); worth syncing in the same pass.
If deploy is instead meant to be hidden from agents (it is stateful/destructive in the same spirit as start/stop/new), the fix is a mcpHiddenTools() entry rather than a table row — but as shipped, it is exposed and undocumented.
Surfaced while fact-checking the Beyond findAll / stdio-MCP blog drafts (2026-06-11).
🤖 Generated with Claude Code
What / where
web/sites/guides/src/content/docs/v4-0-0/command-line-tools/mcp-integration.mdx(origin/develop @b7c310b) says, directly above its tool table:and then lists 16 tools (lines 62-77):
wheels_generate,wheels_destroy,wheels_migrate,wheels_seed,wheels_db,wheels_test,wheels_reload,wheels_routes,wheels_info,wheels_analyze,wheels_validate,wheels_doctor,wheels_stats,wheels_notes,wheels_create,wheels_upgrade.The actual exposed surface on origin/develop is 18. Counting
cli/lucli/Module.cfcpublic functions, minus the module'smcpHiddenTools()denylist (main,mcp,d,g,new,console,start,stop,browser,mcpToolSpecs, all$-prefixed helpers —Module.cfc:178-225), minus LuCLI's ownBASE_MODULE_INTERNALSexclusion (init,version,showHelp,mcpHiddenTools,mcpToolSpecs, plus BaseModule plumbing —McpCommand.java, shipped since LuCLI v0.3.7), leaves the 16 documented tools plus:wheels_deploy(Module.cfc:2172) — "Deploy the app to production servers" (Kamal-style deploys: dry-run, rollback, config, setup, bootstrap, exec, version)wheels_packages(Module.cfc:2481) — "Install, update, and list Wheels packages — useadd(notinstall) to install"Both are public, neither is in
mcpHiddenTools(), so both appear inwheels mcp wheels --once tools/list— the smoke-test command the guide itself recommends, which makes the mismatch easy for a reader to trip over.Note for anyone re-deriving the count:
version()andshowHelp()are also public and absent frommcpHiddenTools(), but LuCLI hides them structurally as BaseModule internals, so they correctly do not appear as tools.Suggested fix
Add two rows to the table, e.g.:
While in there, two adjacent nits in the same doc section:
g(alias forgenerate, hidden atModule.cfc:182for the same duplicate-entry reason asd) andmain(the bare-wheelsdispatch target, hidden atModule.cfc:180).CLAUDE.md:715has the same staleness one step behind (17 tools — includesdeploy, missingpackages); worth syncing in the same pass.If
deployis instead meant to be hidden from agents (it is stateful/destructive in the same spirit asstart/stop/new), the fix is amcpHiddenTools()entry rather than a table row — but as shipped, it is exposed and undocumented.Surfaced while fact-checking the Beyond findAll / stdio-MCP blog drafts (2026-06-11).
🤖 Generated with Claude Code