Skip to main content
Glama

Change server environment

apps_write
Destructive

Creates and changes the server environment of the active site: activates it, writes, patches, copies, moves and archives files, publishes files for download, manages databases and database users, FTP accounts, cron jobs, Node.js and Python apps, PHP version, backups and keys (without returning key values), and issues one-time phpMyAdmin links.

Input Schema

NameRequiredDescriptionDefault
idNoAlias of key_id.
hourNoCron hour. Default *.
nameNoDatabase, database user, or FTP user short name. The username_ prefix is added for MySQL.
pathNoFile path relative to the environment home, without the /home/... prefix. Site folders live under domains/{selected_domain} (selected_domain from session, or list domains with files_list path=domains); status.domain is the technical account domain and may not be the folder you need.
permNoPermission bits as a number, for example 644.
userNoFTP username without @domain.
hostsNoMySQL host patterns.
mergeNomergeAndOverwrite for copy-to, move-to, and extract.
monthNoCron month. Default *.
partsNoBackup components: domain, database, ftp, email, subdomain. Default domain.
pathsNoHome-relative paths for delete or chmod.
actionYesOperation to run. Each oneOf entry describes one action and lists its parameters.
dbuserNoMySQL user. Prefixed with {username}_ when missing.
domainNoEnvironment domain for an app, FTP account, or backup form. Defaults to selected_domain, not a file path.
key_idNoLogin key id. Defaults to main on create. Letters and digits only.
minuteNoCron minute. Default 0.
paramsNoExtra selector parameters. PHP extension changes were rejected on the uCoz test environment.
pluginNoLanguage selector plugin: phpselector, nodejs_selector, python_selector.
sourceNoHome-relative source path.
app_uriNoPublic path. /hello is served as https://{site}/apps/hello.
charsetNoMySQL charset.
commandNoCron shell command. This path may be absolute /home/{username}/... .
confirmNoPass true only after the user approves this change. Required by: activate, switch_domain, files_legacy_edit, files_move, files_move_to, files_extract, db_change_password, db_change_hosts, db_change_privs, ftp_create, ftp_passwd, backup_create, login_key_rotate, da_login_key_patch, visitor_key_rotate. Required in some cases by: ensure_ready, da_login_key_create (see the action).
contentNoUTF-8 file text for files_write, files_patch, or files_legacy_edit.
membersNoArchive member names. Empty means all.
sourcesNoHome-relative paths for copy-to, move-to, or create-archive.
versionNoPHP version (8.2, 8.3, native), Node version (default 22), or Python version (default 3.11).
app_modeNoNode only: development or production. Default production. Not sent for Python.
app_rootNoApplication directory relative to home, or /home/{username}/....
databaseNoMySQL database. Prefixed with {username}_ when missing.
env_varsNoOptional environment variables for a new Node or Python app.
passwordNoPassword for a new DB user, FTP account, or panel login key; at least 8 characters for FTP and DB users. Omit to let the environment generate a DB password.
collationNoMySQL collation.
dayofweekNoCron day of week. Default *.
overwriteNoOverwrite on write/copy/move. files_write defaults to true.
dayofmonthNoCron day of month. Default *.
new_stringNoReplacement text (files_patch).
old_stringNoText to replace. Must occur once (files_patch).
privilegesNoMySQL privilege map. Defaults to the full set on create.
allow_loginNoThe panel login key may open the panel UI. Defaults to false. confirm is required when true.
destinationNoHome-relative destination path.
entry_pointNoPython WSGI callable inside the startup file, for example application. A value ending in .py is used as startup_file when startup_file is omitted.
interpreterNoSelector interpreter: php, nodejs, or python.
new_passwordNoReplacement database password (at least 8 characters).
startup_fileNoApplication startup file. Node default app.js. Python default passenger_wsgi.py.
deny_commandsNoCommand deny list of a panel login key.
allow_commandsNoCommand allow list of a panel login key (da_login_key_commands lists them).
allow_networksNoNetwork allow list of a panel login key.
destination_dirNoHome-relative destination directory for copy-to, move-to, and extract.
selector_methodNoselector_change method: set, create, start, stop, restart, install-modules.
current_passwordNoCurrent password, only if a panel login key call requires it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "ensure_ready",
      -  "activate",
      -  "switch_domain",
      -  "php_set_version",
      -  "selector_change",
      -  "node_create",
      -  "node_start",
      -  "node_stop",
      -  "node_restart",
      -  "node_install_modules",
      -  "python_create",
      -  "python_start",
      -  "python_stop",
      -  "python_restart",
      -  "python_install_modules",
      -  "files_write",
      -  "files_patch",
      -  "files_legacy_edit",
      -  "files_mkdir",
      -  "files_copy",
      -  "files_copy_to",
      -  "files_move",
      -  "files_move_to",
      -  "files_chmod",
      -  "files_archive",
      -  "files_extract",
      -  "files_publish",
      -  "files_download_archive",
      -  "db_create",
      -  "db_create_user",
      -  "db_create_with_user",
      -  "db_change_password",
      -  "db_change_hosts",
      -  "db_change_privs",
      -  "db_import",
      -  "db_export",
      -  "phpmyadmin",
      -  "ftp_create",
      -  "ftp_modify",
      -  "ftp_passwd",
      -  "cron_create",
      -  "backup_create",
      -  "backup_publish",
      -  "login_key_get",
      -  "login_key_create",
      -  "login_key_rotate",
      -  "da_login_key_create",
      -  "da_login_key_patch",
      -  "visitor_key_get",
      -  "visitor_key_create",
      -  "visitor_key_rotate"
      -]New value: +[
      +  "ensure_ready",
      +  "activate",
      +  "switch_domain",
      +  "php_set_version",
      +  "selector_change",
      +  "node_create",
      +  "node_start",
      +  "node_stop",
      +  "node_restart",
      +  "node_install_modules",
      +  "python_create",
      +  "python_start",
      +  "python_stop",
      +  "python_restart",
      +  "python_install_modules",
      +  "files_write",
      +  "files_patch",
      +  "files_legacy_edit",
      +  "files_mkdir",
      +  "files_copy",
      +  "files_copy_to",
      +  "files_move",
      +  "files_move_to",
      +  "files_chmod",
      +  "files_archive",
      +  "files_extract",
      +  "files_publish",
      +  "files_download_archive",
      +  "db_create",
      +  "db_create_user",
      +  "db_create_with_user",
      +  "db_change_password",
      +  "db_change_hosts",
      +  "db_change_privs",
      +  "db_import",
      +  "db_export",
      +  "phpmyadmin",
      +  "ftp_create",
      +  "ftp_passwd",
      +  "cron_create",
      +  "backup_create",
      +  "backup_publish",
      +  "login_key_get",
      +  "login_key_create",
      +  "login_key_rotate",
      +  "da_login_key_create",
      +  "da_login_key_patch",
      +  "visitor_key_get",
      +  "visitor_key_create",
      +  "visitor_key_rotate"
      +]
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "ensure_ready",
      -    "description": "Prepares the environment session: activates the account when needed (then confirm is required), creates the keys and returns username and selected_domain. Optional: confirm."
      -  },
      -  {
      -    "const": "activate",
      -    "description": "Creates the server scripts account of the site. Required: confirm."
      -  },
      -  {
      -    "const": "switch_domain",
      -    "description": "Switches the active environment domain. Required: domain, confirm."
      -  },
      -  {
      -    "const": "php_set_version",
      -    "description": "Sets the PHP version (8.2, 8.3 or native). Required: version."
      -  },
      -  {
      -    "const": "selector_change",
      -    "description": "Runs a language selector method that changes state: set, create, start, stop, restart or install-modules. Required: plugin, interpreter, selector_method. Optional: params."
      -  },
      -  {
      -    "const": "node_create",
      -    "description": "Creates a Node.js application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, app_mode, startup_file, env_vars."
      -  },
      -  {
      -    "const": "node_start",
      -    "description": "Starts a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "node_stop",
      -    "description": "Stops a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "node_restart",
      -    "description": "Restarts a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "node_install_modules",
      -    "description": "Installs the npm modules of a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "python_create",
      -    "description": "Creates a Python application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, startup_file, entry_point, env_vars."
      -  },
      -  {
      -    "const": "python_start",
      -    "description": "Starts a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "python_stop",
      -    "description": "Stops a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "python_restart",
      -    "description": "Restarts a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "python_install_modules",
      -    "description": "Installs the pip modules of a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "files_write",
      -    "description": "Writes a text file (overwrites by default). Required: path, content. Optional: overwrite."
      -  },
      -  {
      -    "const": "files_patch",
      -    "description": "Replaces old_string, which must occur exactly once, with new_string in a small text file. Required: path, old_string, new_string."
      -  },
      -  {
      -    "const": "files_legacy_edit",
      -    "description": "Edits a file through the legacy file manager command. Usually fails with a login key; files_write is the regular way. Required: path, content, confirm."
      -  },
      -  {
      -    "const": "files_mkdir",
      -    "description": "Creates a directory. Required: path."
      -  },
      -  {
      -    "const": "files_copy",
      -    "description": "Copies source (or path) to destination. Required: destination. Optional: source, path, overwrite."
      -  },
      -  {
      -    "const": "files_copy_to",
      -    "description": "Copies paths, sources, source or path into destination_dir. Optional: destination_dir, destination, paths, sources, source, path, merge."
      -  },
      -  {
      -    "const": "files_move",
      -    "description": "Moves source (or path) to destination. Required: destination, confirm. Optional: source, path, overwrite."
      -  },
      -  {
      -    "const": "files_move_to",
      -    "description": "Moves paths, sources, source or path into destination_dir. Required: confirm. Optional: destination_dir, destination, paths, sources, source, path, merge."
      -  },
      -  {
      -    "const": "files_chmod",
      -    "description": "Changes permissions of paths. Required: perm. Optional: paths, sources, source, path."
      -  },
      -  {
      -    "const": "files_archive",
      -    "description": "Creates an archive at destination from sources. Required: destination. Optional: paths, sources, source, path."
      -  },
      -  {
      -    "const": "files_extract",
      -    "description": "Extracts an archive into destination_dir; may overwrite files. Required: confirm. Optional: source, path, destination_dir, destination, members, merge."
      -  },
      -  {
      -    "const": "files_publish",
      -    "description": "Copies a file into a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: path, source."
      -  },
      -  {
      -    "const": "files_download_archive",
      -    "description": "Packs paths into a ZIP in a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: paths, sources, source, path."
      -  },
      -  {
      -    "const": "db_create",
      -    "description": "Creates a MySQL database; the name gets the {username}_ prefix. Optional: database, name, charset, collation."
      -  },
      -  {
      -    "const": "db_create_user",
      -    "description": "Creates a MySQL user; the name gets the {username}_ prefix. Required: password. Optional: dbuser, name, hosts."
      -  },
      -  {
      -    "const": "db_create_with_user",
      -    "description": "Creates a MySQL database and its user with full privileges; the password is returned once. Optional: database, name, dbuser, password, privileges, charset, collation, hosts."
      -  },
      -  {
      -    "const": "db_change_password",
      -    "description": "Changes the password of a MySQL user. Required: dbuser or name, new_password or password, confirm."
      -  },
      -  {
      -    "const": "db_change_hosts",
      -    "description": "Replaces the host patterns of a MySQL user. Required: dbuser or name, hosts, confirm."
      -  },
      -  {
      -    "const": "db_change_privs",
      -    "description": "Replaces the privileges of a MySQL user on a database. Required: database, dbuser, confirm. Optional: privileges."
      -  },
      -  {
      -    "const": "db_import",
      -    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to import a database dump; the SQL does not pass through MCP."
      -  },
      -  {
      -    "const": "db_export",
      -    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to export a database dump; the SQL does not pass through MCP."
      -  },
      -  {
      -    "const": "phpmyadmin",
      -    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link."
      -  },
      -  {
      -    "const": "ftp_create",
      -    "description": "Creates an environment FTP account. Required: password. Optional: user, name, domain."
      -  },
      -  {
      -    "const": "ftp_modify",
      -    "description": "Changes an environment FTP account. Required: confirm. Optional: user, name, password, domain."
      -  },
      -  {
      -    "const": "ftp_passwd",
      -    "description": "Changes the password of an environment FTP account. Required: password, confirm. Optional: user, name, domain."
      -  },
      -  {
      -    "const": "cron_create",
      -    "description": "Creates a cron job (default schedule: minute 0 of every hour). Required: command. Optional: minute, hour, dayofmonth, month, dayofweek."
      -  },
      -  {
      -    "const": "backup_create",
      -    "description": "Queues a full environment backup; the file appears later under backups/. Required: confirm. Optional: parts, domain."
      -  },
      -  {
      -    "const": "backup_publish",
      -    "description": "Publishes a backup file backups/{file}. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Required: path."
      -  },
      -  {
      -    "const": "login_key_get",
      -    "description": "Returns one login key with its secret value (default main; the value of main is stored for this site and not returned). Optional: key_id, id."
      -  },
      -  {
      -    "const": "login_key_create",
      -    "description": "Creates a login key record (default main; the value of main is stored for this site and not returned). Optional: key_id, id."
      -  },
      -  {
      -    "const": "login_key_rotate",
      -    "description": "Replaces the value of a login key; the old value stops working. Required: confirm. Optional: key_id, id."
      -  },
      -  {
      -    "const": "da_login_key_create",
      -    "description": "Creates a panel login key; allow_login=true also requires confirm. Required: key_id or id, password. Optional: allow_login, allow_commands, deny_commands, allow_networks, current_password, confirm."
      -  },
      -  {
      -    "const": "da_login_key_patch",
      -    "description": "Changes a panel login key. Required: key_id or id, confirm. Optional: password, allow_login, allow_commands, deny_commands, allow_networks, current_password."
      -  },
      -  {
      -    "const": "visitor_key_get",
      -    "description": "Returns the visitor encryption key with its secret value."
      -  },
      -  {
      -    "const": "visitor_key_create",
      -    "description": "Creates the visitor encryption key."
      -  },
      -  {
      -    "const": "visitor_key_rotate",
      -    "description": "Replaces the visitor encryption key; existing scripts stop decrypting old visitor data. Required: confirm."
      -  }
      -]New value: +[
      +  {
      +    "const": "ensure_ready",
      +    "description": "Prepares the environment session: activates the account when needed (then confirm is required), creates the keys and returns username and selected_domain. Optional: confirm."
      +  },
      +  {
      +    "const": "activate",
      +    "description": "Creates the server scripts account of the site. Required: confirm."
      +  },
      +  {
      +    "const": "switch_domain",
      +    "description": "Switches the active environment domain. Required: domain, confirm."
      +  },
      +  {
      +    "const": "php_set_version",
      +    "description": "Sets the PHP version (8.2, 8.3 or native). Required: version."
      +  },
      +  {
      +    "const": "selector_change",
      +    "description": "Runs a language selector method that changes state: set, create, start, stop, restart or install-modules. Required: plugin, interpreter, selector_method. Optional: params."
      +  },
      +  {
      +    "const": "node_create",
      +    "description": "Creates a Node.js application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, app_mode, startup_file, env_vars."
      +  },
      +  {
      +    "const": "node_start",
      +    "description": "Starts a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "node_stop",
      +    "description": "Stops a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "node_restart",
      +    "description": "Restarts a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "node_install_modules",
      +    "description": "Installs the npm modules of a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "python_create",
      +    "description": "Creates a Python application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, startup_file, entry_point, env_vars."
      +  },
      +  {
      +    "const": "python_start",
      +    "description": "Starts a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "python_stop",
      +    "description": "Stops a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "python_restart",
      +    "description": "Restarts a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "python_install_modules",
      +    "description": "Installs the pip modules of a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "files_write",
      +    "description": "Writes a text file (overwrites by default). Required: path, content. Optional: overwrite."
      +  },
      +  {
      +    "const": "files_patch",
      +    "description": "Replaces old_string, which must occur exactly once, with new_string in a small text file. Required: path, old_string, new_string."
      +  },
      +  {
      +    "const": "files_legacy_edit",
      +    "description": "Edits a file through the legacy file manager command. Usually fails with a login key; files_write is the regular way. Required: path, content, confirm."
      +  },
      +  {
      +    "const": "files_mkdir",
      +    "description": "Creates a directory. Required: path."
      +  },
      +  {
      +    "const": "files_copy",
      +    "description": "Copies source (or path) to destination. Required: destination. Optional: source, path, overwrite."
      +  },
      +  {
      +    "const": "files_copy_to",
      +    "description": "Copies paths, sources, source or path into destination_dir. Optional: destination_dir, destination, paths, sources, source, path, merge."
      +  },
      +  {
      +    "const": "files_move",
      +    "description": "Moves source (or path) to destination. Required: destination, confirm. Optional: source, path, overwrite."
      +  },
      +  {
      +    "const": "files_move_to",
      +    "description": "Moves paths, sources, source or path into destination_dir. Required: confirm. Optional: destination_dir, destination, paths, sources, source, path, merge."
      +  },
      +  {
      +    "const": "files_chmod",
      +    "description": "Changes permissions of paths. Required: perm. Optional: paths, sources, source, path."
      +  },
      +  {
      +    "const": "files_archive",
      +    "description": "Creates an archive at destination from sources. Required: destination. Optional: paths, sources, source, path."
      +  },
      +  {
      +    "const": "files_extract",
      +    "description": "Extracts an archive into destination_dir; may overwrite files. Required: confirm. Optional: source, path, destination_dir, destination, members, merge."
      +  },
      +  {
      +    "const": "files_publish",
      +    "description": "Copies a file into a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: path, source."
      +  },
      +  {
      +    "const": "files_download_archive",
      +    "description": "Packs paths into a ZIP in a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: paths, sources, source, path."
      +  },
      +  {
      +    "const": "db_create",
      +    "description": "Creates a MySQL database; the name gets the {username}_ prefix. Optional: database, name, charset, collation."
      +  },
      +  {
      +    "const": "db_create_user",
      +    "description": "Creates a MySQL user; the name gets the {username}_ prefix. The password needs at least 8 characters. The reply does not repeat the password. Required: password. Optional: dbuser, name, hosts."
      +  },
      +  {
      +    "const": "db_create_with_user",
      +    "description": "Creates a MySQL database and its user with full privileges. Without password the environment generates one and the reply returns it once (password_once); a password passed in the call needs at least 8 characters and is not repeated in the reply. Optional: database, name, dbuser, password, privileges, charset, collation, hosts."
      +  },
      +  {
      +    "const": "db_change_password",
      +    "description": "Changes the password of a MySQL user after the user approves it; the old password stops working. The reply does not repeat the password. Required: dbuser or name, new_password or password, confirm."
      +  },
      +  {
      +    "const": "db_change_hosts",
      +    "description": "Replaces the host patterns of a MySQL user. Required: dbuser or name, hosts, confirm."
      +  },
      +  {
      +    "const": "db_change_privs",
      +    "description": "Replaces the privileges of a MySQL user on a database. Required: database, dbuser, confirm. Optional: privileges."
      +  },
      +  {
      +    "const": "db_import",
      +    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to import a database dump; the SQL does not pass through MCP."
      +  },
      +  {
      +    "const": "db_export",
      +    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to export a database dump; the SQL does not pass through MCP."
      +  },
      +  {
      +    "const": "phpmyadmin",
      +    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link."
      +  },
      +  {
      +    "const": "ftp_create",
      +    "description": "Creates an environment FTP account (not the FTP of the uCoz site) after the user approves it. Its folder is the root folder of the domain, and anyone who has its password can sign in over FTP. The password needs at least 8 characters. The reply has the login and the folder. The reply does not repeat the password. Required: password, confirm. Optional: user, name, domain."
      +  },
      +  {
      +    "const": "ftp_passwd",
      +    "description": "Replaces the password of an environment FTP account from ftp_list after the user approves it; the old password stops working and the folder stays. The password needs at least 8 characters. The main account of the environment is not changed here. The reply does not repeat the password. Required: password, confirm. Optional: user, name, domain."
      +  },
      +  {
      +    "const": "cron_create",
      +    "description": "Creates a cron job (default schedule: minute 0 of every hour). Required: command. Optional: minute, hour, dayofmonth, month, dayofweek."
      +  },
      +  {
      +    "const": "backup_create",
      +    "description": "Queues a full environment backup; the file appears later under backups/. Required: confirm. Optional: parts, domain."
      +  },
      +  {
      +    "const": "backup_publish",
      +    "description": "Publishes a backup file backups/{file}. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Required: path."
      +  },
      +  {
      +    "const": "login_key_get",
      +    "description": "Returns one login key record (default main): id, creation date and whether uCoz stores its value (value_known). The key value is not returned: the user can see and copy it in the site control panel, Server scripts section, API keys tab. The value of main is kept by MCP for this site. When value_known is false, uCoz does not store the value and the control panel cannot show it; login_key_rotate sets a new value it shows. Optional: key_id, id."
      +  },
      +  {
      +    "const": "login_key_create",
      +    "description": "Creates a login key (default main). The key value is not returned: the user can see and copy it in the site control panel, Server scripts section, API keys tab. The value of main is kept by MCP for this site. Optional: key_id, id."
      +  },
      +  {
      +    "const": "login_key_rotate",
      +    "description": "Replaces the value of a login key; the old value stops working. The key value is not returned: the user can see and copy it in the site control panel, Server scripts section, API keys tab. The value of main is kept by MCP for this site. Required: confirm. Optional: key_id, id."
      +  },
      +  {
      +    "const": "da_login_key_create",
      +    "description": "Creates a panel login key; allow_login=true also requires confirm. Required: key_id or id, password. Optional: allow_login, allow_commands, deny_commands, allow_networks, current_password, confirm."
      +  },
      +  {
      +    "const": "da_login_key_patch",
      +    "description": "Changes a panel login key. Required: key_id or id, confirm. Optional: password, allow_login, allow_commands, deny_commands, allow_networks, current_password."
      +  },
      +  {
      +    "const": "visitor_key_get",
      +    "description": "Tells whether the visitor data encryption key is set (present). The key value is not returned: uCoz delivers the key to the environment by itself and scripts read it there, so it never has to be copied. The site control panel does not show it either."
      +  },
      +  {
      +    "const": "visitor_key_create",
      +    "description": "Creates the visitor data encryption key. The key value is not returned: uCoz delivers the key to the environment by itself and scripts read it there, so it never has to be copied. The site control panel does not show it either."
      +  },
      +  {
      +    "const": "visitor_key_rotate",
      +    "description": "Replaces the visitor data encryption key; existing scripts stop decrypting old visitor data. The key value is not returned: uCoz delivers the key to the environment by itself and scripts read it there, so it never has to be copied. The site control panel does not show it either. Required: confirm."
      +  }
      +]
    • changedInput schema / properties / confirm / description
      Previous value: -"Pass true only after the user approves this change. Required by: activate, switch_domain, files_legacy_edit, files_move, files_move_to, files_extract, db_change_password, db_change_hosts, db_change_privs, ftp_modify, ftp_passwd, backup_create, login_key_rotate, da_login_key_patch, visitor_key_rotate. Required in some cases by: ensure_ready, da_login_key_create (see the action)."New value: +"Pass true only after the user approves this change. Required by: activate, switch_domain, files_legacy_edit, files_move, files_move_to, files_extract, db_change_password, db_change_hosts, db_change_privs, ftp_create, ftp_passwd, backup_create, login_key_rotate, da_login_key_patch, visitor_key_rotate. Required in some cases by: ensure_ready, da_login_key_create (see the action)."
    • changedInput schema / properties / password / description
      Previous value: -"Password for a new DB user, FTP account, or panel login key. Omit to let the environment generate a DB password."New value: +"Password for a new DB user, FTP account, or panel login key; at least 8 characters for FTP and DB users. Omit to let the environment generate a DB password."
  2. Changed1 schema field changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "ensure_ready",
      -    "description": "Prepares the environment session: activates the account when needed (then confirm is required), creates the keys and returns username and selected_domain. Optional: confirm."
      -  },
      -  {
      -    "const": "activate",
      -    "description": "Creates the server scripts account of the site. Required: confirm."
      -  },
      -  {
      -    "const": "switch_domain",
      -    "description": "Switches the active environment domain. Required: domain, confirm."
      -  },
      -  {
      -    "const": "php_set_version",
      -    "description": "Sets the PHP version (8.2, 8.3 or native). Required: version."
      -  },
      -  {
      -    "const": "selector_change",
      -    "description": "Runs a language selector method that changes state: set, create, start, stop, restart or install-modules. Required: plugin, interpreter, selector_method. Optional: params."
      -  },
      -  {
      -    "const": "node_create",
      -    "description": "Creates a Node.js application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, app_mode, startup_file, env_vars."
      -  },
      -  {
      -    "const": "node_start",
      -    "description": "Starts a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "node_stop",
      -    "description": "Stops a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "node_restart",
      -    "description": "Restarts a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "node_install_modules",
      -    "description": "Installs the npm modules of a Node.js application. Required: app_root."
      -  },
      -  {
      -    "const": "python_create",
      -    "description": "Creates a Python application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, startup_file, entry_point, env_vars."
      -  },
      -  {
      -    "const": "python_start",
      -    "description": "Starts a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "python_stop",
      -    "description": "Stops a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "python_restart",
      -    "description": "Restarts a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "python_install_modules",
      -    "description": "Installs the pip modules of a Python application. Required: app_root."
      -  },
      -  {
      -    "const": "files_write",
      -    "description": "Writes a text file (overwrites by default). Required: path, content. Optional: overwrite."
      -  },
      -  {
      -    "const": "files_patch",
      -    "description": "Replaces old_string, which must occur exactly once, with new_string in a small text file. Required: path, old_string, new_string."
      -  },
      -  {
      -    "const": "files_legacy_edit",
      -    "description": "Edits a file through the legacy file manager command. Usually fails with a login key; files_write is the regular way. Required: path, content, confirm."
      -  },
      -  {
      -    "const": "files_mkdir",
      -    "description": "Creates a directory. Required: path."
      -  },
      -  {
      -    "const": "files_copy",
      -    "description": "Copies source (or path) to destination. Required: destination. Optional: source, path, overwrite."
      -  },
      -  {
      -    "const": "files_copy_to",
      -    "description": "Copies paths, sources, source or path into destination_dir. Optional: destination_dir, destination, paths, sources, source, path, merge."
      -  },
      -  {
      -    "const": "files_move",
      -    "description": "Moves source (or path) to destination. Required: destination, confirm. Optional: source, path, overwrite."
      -  },
      -  {
      -    "const": "files_move_to",
      -    "description": "Moves paths, sources, source or path into destination_dir. Required: confirm. Optional: destination_dir, destination, paths, sources, source, path, merge."
      -  },
      -  {
      -    "const": "files_chmod",
      -    "description": "Changes permissions of paths. Required: perm. Optional: paths, sources, source, path."
      -  },
      -  {
      -    "const": "files_archive",
      -    "description": "Creates an archive at destination from sources. Required: destination. Optional: paths, sources, source, path."
      -  },
      -  {
      -    "const": "files_extract",
      -    "description": "Extracts an archive into destination_dir; may overwrite files. Required: confirm. Optional: source, path, destination_dir, destination, members, merge."
      -  },
      -  {
      -    "const": "files_publish",
      -    "description": "Copies a file into a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: path, source."
      -  },
      -  {
      -    "const": "files_download_archive",
      -    "description": "Packs paths into a ZIP in a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: paths, sources, source, path."
      -  },
      -  {
      -    "const": "db_create",
      -    "description": "Creates a MySQL database; the name gets the {username}_ prefix. Optional: database, name, charset, collation."
      -  },
      -  {
      -    "const": "db_create_user",
      -    "description": "Creates a MySQL user; the name gets the {username}_ prefix. Required: password. Optional: dbuser, name, hosts."
      -  },
      -  {
      -    "const": "db_create_with_user",
      -    "description": "Creates a MySQL database and its user with full privileges; the password is returned once. Optional: database, name, dbuser, password, privileges, charset, collation, hosts."
      -  },
      -  {
      -    "const": "db_change_password",
      -    "description": "Changes the password of a MySQL user. Required: new_password, confirm. Optional: dbuser, name, password."
      -  },
      -  {
      -    "const": "db_change_hosts",
      -    "description": "Replaces the host patterns of a MySQL user. Required: hosts, confirm. Optional: dbuser, name."
      -  },
      -  {
      -    "const": "db_change_privs",
      -    "description": "Replaces the privileges of a MySQL user on a database. Required: database, dbuser, confirm. Optional: privileges."
      -  },
      -  {
      -    "const": "db_import",
      -    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to import a database dump; the SQL does not pass through MCP."
      -  },
      -  {
      -    "const": "db_export",
      -    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to export a database dump; the SQL does not pass through MCP."
      -  },
      -  {
      -    "const": "phpmyadmin",
      -    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link."
      -  },
      -  {
      -    "const": "ftp_create",
      -    "description": "Creates an environment FTP account. Required: password. Optional: user, name, domain."
      -  },
      -  {
      -    "const": "ftp_modify",
      -    "description": "Changes an environment FTP account. Required: confirm. Optional: user, name, password, domain."
      -  },
      -  {
      -    "const": "ftp_passwd",
      -    "description": "Changes the password of an environment FTP account. Required: password, confirm. Optional: user, name, domain."
      -  },
      -  {
      -    "const": "cron_create",
      -    "description": "Creates a cron job (default schedule: minute 0 of every hour). Required: command. Optional: minute, hour, dayofmonth, month, dayofweek."
      -  },
      -  {
      -    "const": "backup_create",
      -    "description": "Queues a full environment backup; the file appears later under backups/. Required: confirm. Optional: parts, domain."
      -  },
      -  {
      -    "const": "backup_publish",
      -    "description": "Publishes a backup file backups/{file}. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Required: path."
      -  },
      -  {
      -    "const": "login_key_get",
      -    "description": "Returns one login key with its secret value (default main; the value of main is stored for this site and not returned). Optional: key_id, id."
      -  },
      -  {
      -    "const": "login_key_create",
      -    "description": "Creates a login key record (default main; the value of main is stored for this site and not returned). Optional: key_id, id."
      -  },
      -  {
      -    "const": "login_key_rotate",
      -    "description": "Replaces the value of a login key; the old value stops working. Required: confirm. Optional: key_id, id."
      -  },
      -  {
      -    "const": "da_login_key_create",
      -    "description": "Creates a panel login key; allow_login=true also requires confirm. Required: key_id, password. Optional: id, allow_login, allow_commands, deny_commands, allow_networks, current_password, confirm."
      -  },
      -  {
      -    "const": "da_login_key_patch",
      -    "description": "Changes a panel login key. Required: key_id, confirm. Optional: id, password, allow_login, allow_commands, deny_commands, allow_networks, current_password."
      -  },
      -  {
      -    "const": "visitor_key_get",
      -    "description": "Returns the visitor encryption key with its secret value."
      -  },
      -  {
      -    "const": "visitor_key_create",
      -    "description": "Creates the visitor encryption key."
      -  },
      -  {
      -    "const": "visitor_key_rotate",
      -    "description": "Replaces the visitor encryption key; existing scripts stop decrypting old visitor data. Required: confirm."
      -  }
      -]New value: +[
      +  {
      +    "const": "ensure_ready",
      +    "description": "Prepares the environment session: activates the account when needed (then confirm is required), creates the keys and returns username and selected_domain. Optional: confirm."
      +  },
      +  {
      +    "const": "activate",
      +    "description": "Creates the server scripts account of the site. Required: confirm."
      +  },
      +  {
      +    "const": "switch_domain",
      +    "description": "Switches the active environment domain. Required: domain, confirm."
      +  },
      +  {
      +    "const": "php_set_version",
      +    "description": "Sets the PHP version (8.2, 8.3 or native). Required: version."
      +  },
      +  {
      +    "const": "selector_change",
      +    "description": "Runs a language selector method that changes state: set, create, start, stop, restart or install-modules. Required: plugin, interpreter, selector_method. Optional: params."
      +  },
      +  {
      +    "const": "node_create",
      +    "description": "Creates a Node.js application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, app_mode, startup_file, env_vars."
      +  },
      +  {
      +    "const": "node_start",
      +    "description": "Starts a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "node_stop",
      +    "description": "Stops a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "node_restart",
      +    "description": "Restarts a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "node_install_modules",
      +    "description": "Installs the npm modules of a Node.js application. Required: app_root."
      +  },
      +  {
      +    "const": "python_create",
      +    "description": "Creates a Python application in app_root, served at https://{site}/apps{app_uri}. Required: app_root. Optional: app_uri, version, domain, startup_file, entry_point, env_vars."
      +  },
      +  {
      +    "const": "python_start",
      +    "description": "Starts a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "python_stop",
      +    "description": "Stops a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "python_restart",
      +    "description": "Restarts a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "python_install_modules",
      +    "description": "Installs the pip modules of a Python application. Required: app_root."
      +  },
      +  {
      +    "const": "files_write",
      +    "description": "Writes a text file (overwrites by default). Required: path, content. Optional: overwrite."
      +  },
      +  {
      +    "const": "files_patch",
      +    "description": "Replaces old_string, which must occur exactly once, with new_string in a small text file. Required: path, old_string, new_string."
      +  },
      +  {
      +    "const": "files_legacy_edit",
      +    "description": "Edits a file through the legacy file manager command. Usually fails with a login key; files_write is the regular way. Required: path, content, confirm."
      +  },
      +  {
      +    "const": "files_mkdir",
      +    "description": "Creates a directory. Required: path."
      +  },
      +  {
      +    "const": "files_copy",
      +    "description": "Copies source (or path) to destination. Required: destination. Optional: source, path, overwrite."
      +  },
      +  {
      +    "const": "files_copy_to",
      +    "description": "Copies paths, sources, source or path into destination_dir. Optional: destination_dir, destination, paths, sources, source, path, merge."
      +  },
      +  {
      +    "const": "files_move",
      +    "description": "Moves source (or path) to destination. Required: destination, confirm. Optional: source, path, overwrite."
      +  },
      +  {
      +    "const": "files_move_to",
      +    "description": "Moves paths, sources, source or path into destination_dir. Required: confirm. Optional: destination_dir, destination, paths, sources, source, path, merge."
      +  },
      +  {
      +    "const": "files_chmod",
      +    "description": "Changes permissions of paths. Required: perm. Optional: paths, sources, source, path."
      +  },
      +  {
      +    "const": "files_archive",
      +    "description": "Creates an archive at destination from sources. Required: destination. Optional: paths, sources, source, path."
      +  },
      +  {
      +    "const": "files_extract",
      +    "description": "Extracts an archive into destination_dir; may overwrite files. Required: confirm. Optional: source, path, destination_dir, destination, members, merge."
      +  },
      +  {
      +    "const": "files_publish",
      +    "description": "Copies a file into a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: path, source."
      +  },
      +  {
      +    "const": "files_download_archive",
      +    "description": "Packs paths into a ZIP in a random public folder. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Optional: paths, sources, source, path."
      +  },
      +  {
      +    "const": "db_create",
      +    "description": "Creates a MySQL database; the name gets the {username}_ prefix. Optional: database, name, charset, collation."
      +  },
      +  {
      +    "const": "db_create_user",
      +    "description": "Creates a MySQL user; the name gets the {username}_ prefix. Required: password. Optional: dbuser, name, hosts."
      +  },
      +  {
      +    "const": "db_create_with_user",
      +    "description": "Creates a MySQL database and its user with full privileges; the password is returned once. Optional: database, name, dbuser, password, privileges, charset, collation, hosts."
      +  },
      +  {
      +    "const": "db_change_password",
      +    "description": "Changes the password of a MySQL user. Required: dbuser or name, new_password or password, confirm."
      +  },
      +  {
      +    "const": "db_change_hosts",
      +    "description": "Replaces the host patterns of a MySQL user. Required: dbuser or name, hosts, confirm."
      +  },
      +  {
      +    "const": "db_change_privs",
      +    "description": "Replaces the privileges of a MySQL user on a database. Required: database, dbuser, confirm. Optional: privileges."
      +  },
      +  {
      +    "const": "db_import",
      +    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to import a database dump; the SQL does not pass through MCP."
      +  },
      +  {
      +    "const": "db_export",
      +    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link to export a database dump; the SQL does not pass through MCP."
      +  },
      +  {
      +    "const": "phpmyadmin",
      +    "description": "Opens a one-time phpMyAdmin sign-in session and returns its link."
      +  },
      +  {
      +    "const": "ftp_create",
      +    "description": "Creates an environment FTP account. Required: password. Optional: user, name, domain."
      +  },
      +  {
      +    "const": "ftp_modify",
      +    "description": "Changes an environment FTP account. Required: confirm. Optional: user, name, password, domain."
      +  },
      +  {
      +    "const": "ftp_passwd",
      +    "description": "Changes the password of an environment FTP account. Required: password, confirm. Optional: user, name, domain."
      +  },
      +  {
      +    "const": "cron_create",
      +    "description": "Creates a cron job (default schedule: minute 0 of every hour). Required: command. Optional: minute, hour, dayofmonth, month, dayofweek."
      +  },
      +  {
      +    "const": "backup_create",
      +    "description": "Queues a full environment backup; the file appears later under backups/. Required: confirm. Optional: parts, domain."
      +  },
      +  {
      +    "const": "backup_publish",
      +    "description": "Publishes a backup file backups/{file}. The result is a public download URL (https://{site}/apps/_mcp_dl/...) in the technical domain public_html; delete stored_path with apps_delete files_delete afterwards. Required: path."
      +  },
      +  {
      +    "const": "login_key_get",
      +    "description": "Returns one login key with its secret value (default main; the value of main is stored for this site and not returned). Optional: key_id, id."
      +  },
      +  {
      +    "const": "login_key_create",
      +    "description": "Creates a login key record (default main; the value of main is stored for this site and not returned). Optional: key_id, id."
      +  },
      +  {
      +    "const": "login_key_rotate",
      +    "description": "Replaces the value of a login key; the old value stops working. Required: confirm. Optional: key_id, id."
      +  },
      +  {
      +    "const": "da_login_key_create",
      +    "description": "Creates a panel login key; allow_login=true also requires confirm. Required: key_id or id, password. Optional: allow_login, allow_commands, deny_commands, allow_networks, current_password, confirm."
      +  },
      +  {
      +    "const": "da_login_key_patch",
      +    "description": "Changes a panel login key. Required: key_id or id, confirm. Optional: password, allow_login, allow_commands, deny_commands, allow_networks, current_password."
      +  },
      +  {
      +    "const": "visitor_key_get",
      +    "description": "Returns the visitor encryption key with its secret value."
      +  },
      +  {
      +    "const": "visitor_key_create",
      +    "description": "Creates the visitor encryption key."
      +  },
      +  {
      +    "const": "visitor_key_rotate",
      +    "description": "Replaces the visitor encryption key; existing scripts stop decrypting old visitor data. Required: confirm."
      +  }
      +]
  3. Added

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value on two points: login key values are never returned and phpMyAdmin links are one-time. It omits other consequential behavior that isn't in annotations, such as published files landing in public_html and requiring manual cleanup (only visible in the oneOf branch text).

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

Conciseness3/5

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

Single run-on sentence that front-loads the core purpose, then lists roughly ten capability clusters in a breath. Each cluster is real, but the catalogue is hard to scan and largely restates what the action enum already lists action-by-action.

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

Completeness4/5

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

Given that the action enum carries per-action requirements and all 51 parameters are fully documented in the schema, the description needs only to frame the tool's domain, which it does. The absence of an output schema is not a problem since the branches describe return values (password_once, download URLs, stored_path).

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

Parameters3/5

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

Schema description coverage is 100% and the oneOf branches enumerate required/optional params per action, so the schema does nearly all the work. The top-level description adds no parameter syntax, defaults, or dispatch hints beyond what the enum already encodes, making the baseline 3 appropriate.

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

Purpose4/5

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

Opens with a specific verb and resource ('Creates and changes the server environment of the active site'), which distinguishes it from apps_read and apps_delete. The enumerated capability list confirms its scope as a broad write surface, though the enumeration is more of a catalogue than a purpose statement.

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

Usage Guidelines2/5

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

No guidance on when to pick this tool over alternatives, and the sibling list contains direct competitors whose names mirror its actions (files_write vs. action files_write, ftp_write vs. ftp_create/ftp_passwd). It also never explains that most actions need confirm=true and user approval first, which the schema buries in the confirm property.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.