Closes the two coverage gaps that let the 0.4.0 and 0.4.3 bugs ship. Both new checks were verified by reintroducing the original bug and confirming they fail.
Added
list_functionsnow covers 11 functions the plugin itself calls.Email::delete_auto_responder,delete_filter,get_disk_usage,list_filters;Fileman::mkdir;Ftp::set_quota,server_name,get_port;Mysql::rename_database,set_password,revoke_access_to_database. These were working endpoints missing from the discovery catalog, solist_functionsomitted capabilities this plugin ships tools for.- A static catalog cross-check (
tests/catalog-coverage.test.ts). Everyclient.callsite insrc/tools/is checked against the module catalog, and everyclient.callApi2site against a small explicit allowlist. This guards a failure mode unit tests structurally cannot see: a tool can carry a valid schema, register cleanly, appear intools/list, and pass every test while calling a UAPI function that does not exist. Run against 0.3.1 it flagsFileman::delete_files,move_files,copy_files,chmod,compress_files, andextract- exactly the endpoints the 0.4.0 fix had to re-point at API 2. Fully static: no network, no credentials, no cPHulk exposure. npm run test:install, fresh-install verification (scripts/verify-install.sh). Exportsgit archive HEADto a scratch directory, runs the launcher against it exactly as a new user's machine would, and asserts the server starts and advertises the expected tool count. Every other check runs against a developer tree that already hasnode_modules, which is precisely the condition that hid the 0.4.3 bug for five releases. Kept out ofnpm test, skips cleanly when the npm registry is unreachable, and makes no cPanel contact.
Fixed
- The
Filemancatalog entry claimed capabilities UAPI does not have. It advertised compress, extract, and chmod, none of which exist in UAPIFileman- the exact misreading behind the 0.4.0 bug. It now states plainly that UAPIFilemanis read/utility only and that those operations are API 2Fileman::fileop, whichuapi_callcannot reach.
Full changelog: https://github.com/ringo380/claude-cpanel-mcp/blob/main/CHANGELOG.md