whm_mysql_list_dbs
List all MySQL databases on the server for a specified WHM account using the account alias. Provides a complete overview of databases across accounts.
Instructions
List all MySQL databases on the server across all accounts
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | Account alias from accounts.json (use list_accounts to see options) |
Implementation Reference
- src/tools.py:219-227 (schema)Tool definition (schema) for whm_mysql_list_dbs — declares the tool name, description, and input schema expecting only an 'account' parameter.
Tool( name="whm_mysql_list_dbs", description="List all MySQL databases on the server across all accounts", inputSchema={ "type": "object", "properties": ACCOUNT_PARAM, "required": ["account"] } ), - src/tools.py:482-483 (handler)Handler for whm_mysql_list_dbs — makes a GET request to the WHM API endpoint 'listmysqldatabases' and returns the JSON response listing all MySQL databases.
case "whm_mysql_list_dbs": return await _get(client, url("listmysqldatabases"), headers) - src/tools.py:34-40 (helper)The _get helper function used by the handler to perform the actual HTTP GET request and parse the JSON response.
async def _get(client: httpx.AsyncClient, url: str, headers: dict, params: dict = None) -> dict: try: r = await client.get(url, headers=headers, params=params or {}) r.raise_for_status() return r.json() except Exception as e: return {"error": str(e)} - src/tools.py:10-14 (helper)The _whm_url helper that constructs the base URL for the WHM JSON API call, used to build the 'listmysqldatabases' endpoint URL.
def _whm_url(account: dict, function: str) -> str: host = account["host"] port = account.get("port", 2087) user = account.get("user", "root") return f"https://{host}:{port}/json-api/{function}?api.version=1" - src/server.py:47-75 (registration)Registration via the call_tool decorator in server.py — dispatches 'whm_' prefixed tool calls including whm_mysql_list_dbs to handle_whm_tool.
@app.call_tool() async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]: log.info(f"Tool called: {name} | Args: {json.dumps(arguments)}") if name == "list_accounts": accounts = load_accounts() result = [ {"alias": a, "host": cfg["host"], "type": cfg.get("type","whm")} for a, cfg in accounts.items() ] return [TextContent(type="text", text=json.dumps(result, indent=2))] account_alias = arguments.get("account") if not account_alias: return [TextContent(type="text", text="ERROR: 'account' parameter is required. Use list_accounts to see available accounts.")] account = get_account(account_alias) if not account: return [TextContent(type="text", text=f"ERROR: Account '{account_alias}' not found. Use list_accounts to see configured accounts.")] async with httpx.AsyncClient(verify=False, timeout=30) as client: if name.startswith("whm_"): result = await handle_whm_tool(client, account, name, arguments) elif name.startswith("cpanel_"): result = await handle_cpanel_tool(client, account, name, arguments) else: result = {"error": f"Unknown tool: {name}"} return [TextContent(type="text", text=json.dumps(result, indent=2))]