Skip to main content
Glama

Read server environment

apps_read
Read-onlyIdempotent

Reads the server environment of the active site: status and usage, files and directories, databases and database users, FTP accounts, cron jobs, Node.js, Python and PHP settings, backups, and key records.

Input Schema

NameRequiredDescriptionDefault
idNoAlias of key_id.
nameNoDatabase, database user, or FTP user short name. The username_ prefix is added for MySQL.
pageNoList page, from 1.
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.
limitNofiles_*: the earlier name of per_page; per_page wins when both are set. files_tree: entries of the tree.
queryNoFile name query (files_search).
actionYesOperation to run. Each oneOf entry describes one action and lists its parameters.
dbuserNoMySQL user. Prefixed with {username}_ when missing.
detailNoRecord form of a paged list. brief (default): for files name, folder, type, size, modification time (UTC, ISO 8601) and symlink flag; for other lists the records as they are. Titles and excerpts are plain text; names, logins, paths, URLs and other identifiers are as the source gives them. full: complete records. A list reply is at most 30 KB and holds every record of its page: a record that does not fit in full comes in brief form, marked detail brief, the reply counts such records in brief_records, and get by id returns the complete record; brief records shorten their excerpts, then keep only their ids and titles. Only a page that does not fit even so is cut: truncated is true and next names the offset to go on from.
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.
offsetNoRecords to skip from the start of a list; overrides page. A list reply cut at its size limit names the offset that follows in next.
paramsNoExtra selector parameters. PHP extension changes were rejected on the uCoz test environment.
pluginNoLanguage selector plugin: phpselector, nodejs_selector, python_selector.
databaseNoMySQL database. Prefixed with {username}_ when missing.
per_pageNoRecords per page: 1-50, 20 by default, larger values count as 50.
interpreterNoSelector interpreter: php, nodejs, or python.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "get_guide",
      -    "description": "Returns a step-by-step guide to the server environment."
      -  },
      -  {
      -    "const": "info",
      -    "description": "Returns information about the environment server."
      -  },
      -  {
      -    "const": "status",
      -    "description": "Returns whether server scripts are available on the plan and activated, and the account username and technical domain."
      -  },
      -  {
      -    "const": "session",
      -    "description": "Returns the current environment session, including selected_domain."
      -  },
      -  {
      -    "const": "session_state",
      -    "description": "Returns the environment session state."
      -  },
      -  {
      -    "const": "usage",
      -    "description": "Returns disk and resource usage of the environment."
      -  },
      -  {
      -    "const": "user_config",
      -    "description": "Returns the environment user configuration."
      -  },
      -  {
      -    "const": "plugins",
      -    "description": "Lists environment plugins. Optional: offset."
      -  },
      -  {
      -    "const": "php_get",
      -    "description": "Returns the PHP version and settings."
      -  },
      -  {
      -    "const": "selector_get",
      -    "description": "Reads a language selector (method get) of plugin phpselector, nodejs_selector or python_selector. Required: plugin, interpreter. Optional: params."
      -  },
      -  {
      -    "const": "node_list",
      -    "description": "Lists Node.js applications. Optional: offset."
      -  },
      -  {
      -    "const": "python_list",
      -    "description": "Lists Python applications. Optional: offset."
      -  },
      -  {
      -    "const": "files_list",
      -    "description": "Lists a directory (default: home) a page at a time. Brief entries by default; detail=full gives complete entries. The reply has page, per_page, total, has_more, truncated and next. Optional: path, page, per_page, offset, detail, limit."
      -  },
      -  {
      -    "const": "files_tree",
      -    "description": "Returns the directory tree under path. A tree over 30 KB loses its deepest levels (truncated, branches marked incomplete); a folder with more subfolders than fit keeps the first of them, and next names the files_list call that lists it in full. Optional: path, limit, offset."
      -  },
      -  {
      -    "const": "files_read",
      -    "description": "Reads a small text file. A binary or larger file is refused; files_publish in apps_write returns a download link for it. Required: path."
      -  },
      -  {
      -    "const": "files_search",
      -    "description": "Searches file names under path, a page at a time; the search finds up to 1000 files. Brief entries by default; detail=full gives complete entries. The reply has page, per_page, total, has_more, truncated and next, and incomplete is true when more files may match than the search found. Required: query. Optional: path, page, per_page, offset, detail, limit."
      -  },
      -  {
      -    "const": "files_disk",
      -    "description": "Returns disk usage of the home directory."
      -  },
      -  {
      -    "const": "files_archive_list",
      -    "description": "Lists the members of an archive a page at a time. The reply has page, per_page, total, has_more, truncated and next. Required: path. Optional: page, per_page, offset, detail."
      -  },
      -  {
      -    "const": "db_list",
      -    "description": "Lists MySQL databases. Optional: offset."
      -  },
      -  {
      -    "const": "db_get",
      -    "description": "Returns one MySQL database (name in database or name). Optional: database, name."
      -  },
      -  {
      -    "const": "db_info",
      -    "description": "Returns MySQL server information."
      -  },
      -  {
      -    "const": "db_user",
      -    "description": "Returns one MySQL user (name in dbuser or name). Optional: dbuser, name."
      -  },
      -  {
      -    "const": "db_users",
      -    "description": "Lists the users of a MySQL database (name in database or name). Optional: database, name, offset."
      -  },
      -  {
      -    "const": "db_users_all",
      -    "description": "Lists all MySQL users. Optional: offset."
      -  },
      -  {
      -    "const": "db_user_databases",
      -    "description": "Lists the databases of a MySQL user (name in dbuser or name). Optional: dbuser, name, offset."
      -  },
      -  {
      -    "const": "ftp_list",
      -    "description": "Lists environment FTP accounts of a domain. Optional: domain, offset."
      -  },
      -  {
      -    "const": "cron_list",
      -    "description": "Lists cron jobs (each with its cron_id) and cron settings. Optional: offset."
      -  },
      -  {
      -    "const": "backup_list",
      -    "description": "Lists environment backups. Optional: domain, offset."
      -  },
      -  {
      -    "const": "login_key_list",
      -    "description": "Lists environment login key records without their values. Optional: offset."
      -  },
      -  {
      -    "const": "da_login_key_list",
      -    "description": "Lists panel login keys of the environment without secret values. Optional: offset."
      -  },
      -  {
      -    "const": "da_login_key_get",
      -    "description": "Returns the settings of one panel login key without secret values. Required: key_id. Optional: id."
      -  },
      -  {
      -    "const": "da_login_key_history",
      -    "description": "Returns the usage history of a panel login key a page at a time. The reply has page, per_page, total, has_more, truncated and next. Required: key_id. Optional: id, page, per_page, offset, detail."
      -  },
      -  {
      -    "const": "da_login_key_commands",
      -    "description": "Lists the commands a panel login key can be allowed or denied. Optional: offset."
      -  }
      -]New value: +[
      +  {
      +    "const": "get_guide",
      +    "description": "Returns a step-by-step guide to the server environment."
      +  },
      +  {
      +    "const": "info",
      +    "description": "Returns information about the environment server."
      +  },
      +  {
      +    "const": "status",
      +    "description": "Returns whether server scripts are available on the plan and activated, and the account username and technical domain."
      +  },
      +  {
      +    "const": "session",
      +    "description": "Returns the current environment session, including selected_domain."
      +  },
      +  {
      +    "const": "session_state",
      +    "description": "Returns the environment session state."
      +  },
      +  {
      +    "const": "usage",
      +    "description": "Returns disk and resource usage of the environment."
      +  },
      +  {
      +    "const": "user_config",
      +    "description": "Returns the environment user configuration."
      +  },
      +  {
      +    "const": "plugins",
      +    "description": "Lists environment plugins. Optional: offset."
      +  },
      +  {
      +    "const": "php_get",
      +    "description": "Returns the PHP version and settings."
      +  },
      +  {
      +    "const": "selector_get",
      +    "description": "Reads a language selector (method get) of plugin phpselector, nodejs_selector or python_selector. Required: plugin, interpreter. Optional: params."
      +  },
      +  {
      +    "const": "node_list",
      +    "description": "Lists Node.js applications. Optional: offset."
      +  },
      +  {
      +    "const": "python_list",
      +    "description": "Lists Python applications. Optional: offset."
      +  },
      +  {
      +    "const": "files_list",
      +    "description": "Lists a directory (default: home) a page at a time. Brief entries by default; detail=full gives complete entries. The reply has page, per_page, total, has_more, truncated and next. Optional: path, page, per_page, offset, detail, limit."
      +  },
      +  {
      +    "const": "files_tree",
      +    "description": "Returns the directory tree under path. A tree over 30 KB loses its deepest levels (truncated, branches marked incomplete); a folder with more subfolders than fit keeps the first of them, and next names the files_list call that lists it in full. Optional: path, limit, offset."
      +  },
      +  {
      +    "const": "files_read",
      +    "description": "Reads a small text file. A binary or larger file is refused; files_publish in apps_write returns a download link for it. Required: path."
      +  },
      +  {
      +    "const": "files_search",
      +    "description": "Searches file names under path, a page at a time; the search finds up to 1000 files. Brief entries by default; detail=full gives complete entries. The reply has page, per_page, total, has_more, truncated and next, and incomplete is true when more files may match than the search found. Required: query. Optional: path, page, per_page, offset, detail, limit."
      +  },
      +  {
      +    "const": "files_disk",
      +    "description": "Returns disk usage of the home directory."
      +  },
      +  {
      +    "const": "files_archive_list",
      +    "description": "Lists the members of an archive a page at a time. The reply has page, per_page, total, has_more, truncated and next. Required: path. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "db_list",
      +    "description": "Lists MySQL databases. Optional: offset."
      +  },
      +  {
      +    "const": "db_get",
      +    "description": "Returns one MySQL database (name in database or name). Required: database or name."
      +  },
      +  {
      +    "const": "db_info",
      +    "description": "Returns MySQL server information."
      +  },
      +  {
      +    "const": "db_user",
      +    "description": "Returns one MySQL user (name in dbuser or name). Required: dbuser or name."
      +  },
      +  {
      +    "const": "db_users",
      +    "description": "Lists the users of a MySQL database (name in database or name). Required: database or name. Optional: offset."
      +  },
      +  {
      +    "const": "db_users_all",
      +    "description": "Lists all MySQL users. Optional: offset."
      +  },
      +  {
      +    "const": "db_user_databases",
      +    "description": "Lists the databases of a MySQL user (name in dbuser or name). Required: dbuser or name. Optional: offset."
      +  },
      +  {
      +    "const": "ftp_list",
      +    "description": "Lists environment FTP accounts of a domain. Optional: domain, offset."
      +  },
      +  {
      +    "const": "cron_list",
      +    "description": "Lists cron jobs (each with its cron_id) and cron settings. Optional: offset."
      +  },
      +  {
      +    "const": "backup_list",
      +    "description": "Lists environment backups. Optional: domain, offset."
      +  },
      +  {
      +    "const": "login_key_list",
      +    "description": "Lists environment login key records without their values. Optional: offset."
      +  },
      +  {
      +    "const": "da_login_key_list",
      +    "description": "Lists panel login keys of the environment without secret values. Optional: offset."
      +  },
      +  {
      +    "const": "da_login_key_get",
      +    "description": "Returns the settings of one panel login key without secret values. Required: key_id or id."
      +  },
      +  {
      +    "const": "da_login_key_history",
      +    "description": "Returns the usage history of a panel login key a page at a time. The reply has page, per_page, total, has_more, truncated and next. Required: key_id or id. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "da_login_key_commands",
      +    "description": "Lists the commands a panel login key can be allowed or denied. Optional: offset."
      +  }
      +]
  2. Changed6 schema fields changed
    • changedInput schema / properties / action / oneOf
      Previous value: -[
      -  {
      -    "const": "get_guide",
      -    "description": "Returns a step-by-step guide to the server environment."
      -  },
      -  {
      -    "const": "info",
      -    "description": "Returns information about the environment server."
      -  },
      -  {
      -    "const": "status",
      -    "description": "Returns whether server scripts are available on the plan and activated, and the account username and technical domain."
      -  },
      -  {
      -    "const": "session",
      -    "description": "Returns the current environment session, including selected_domain."
      -  },
      -  {
      -    "const": "session_state",
      -    "description": "Returns the environment session state."
      -  },
      -  {
      -    "const": "usage",
      -    "description": "Returns disk and resource usage of the environment."
      -  },
      -  {
      -    "const": "user_config",
      -    "description": "Returns the environment user configuration."
      -  },
      -  {
      -    "const": "plugins",
      -    "description": "Lists environment plugins."
      -  },
      -  {
      -    "const": "php_get",
      -    "description": "Returns the PHP version and settings."
      -  },
      -  {
      -    "const": "selector_get",
      -    "description": "Reads a language selector (method get) of plugin phpselector, nodejs_selector or python_selector. Required: plugin, interpreter. Optional: params."
      -  },
      -  {
      -    "const": "node_list",
      -    "description": "Lists Node.js applications."
      -  },
      -  {
      -    "const": "python_list",
      -    "description": "Lists Python applications."
      -  },
      -  {
      -    "const": "files_list",
      -    "description": "Lists a directory (default: home). Optional: path, limit, offset."
      -  },
      -  {
      -    "const": "files_tree",
      -    "description": "Returns the directory tree under path. Optional: path, limit, offset."
      -  },
      -  {
      -    "const": "files_read",
      -    "description": "Reads a small text file. A binary or larger file is refused; files_publish in apps_write returns a download link for it. Required: path."
      -  },
      -  {
      -    "const": "files_search",
      -    "description": "Searches file names under path. Required: query. Optional: path, limit, offset."
      -  },
      -  {
      -    "const": "files_disk",
      -    "description": "Returns disk usage of the home directory."
      -  },
      -  {
      -    "const": "files_archive_list",
      -    "description": "Lists the members of an archive. Required: path."
      -  },
      -  {
      -    "const": "db_list",
      -    "description": "Lists MySQL databases."
      -  },
      -  {
      -    "const": "db_get",
      -    "description": "Returns one MySQL database (name in database or name). Optional: database, name."
      -  },
      -  {
      -    "const": "db_info",
      -    "description": "Returns MySQL server information."
      -  },
      -  {
      -    "const": "db_user",
      -    "description": "Returns one MySQL user (name in dbuser or name). Optional: dbuser, name."
      -  },
      -  {
      -    "const": "db_users",
      -    "description": "Lists the users of a MySQL database (name in database or name). Optional: database, name."
      -  },
      -  {
      -    "const": "db_users_all",
      -    "description": "Lists all MySQL users."
      -  },
      -  {
      -    "const": "db_user_databases",
      -    "description": "Lists the databases of a MySQL user (name in dbuser or name). Optional: dbuser, name."
      -  },
      -  {
      -    "const": "ftp_list",
      -    "description": "Lists environment FTP accounts of a domain. Optional: domain."
      -  },
      -  {
      -    "const": "cron_list",
      -    "description": "Lists cron jobs (each with its cron_id) and cron settings."
      -  },
      -  {
      -    "const": "backup_list",
      -    "description": "Lists environment backups. Optional: domain."
      -  },
      -  {
      -    "const": "login_key_list",
      -    "description": "Lists environment login key records without their values."
      -  },
      -  {
      -    "const": "da_login_key_list",
      -    "description": "Lists panel login keys of the environment without secret values."
      -  },
      -  {
      -    "const": "da_login_key_get",
      -    "description": "Returns the settings of one panel login key without secret values. Required: key_id. Optional: id."
      -  },
      -  {
      -    "const": "da_login_key_history",
      -    "description": "Returns the usage history of a panel login key. Required: key_id. Optional: id."
      -  },
      -  {
      -    "const": "da_login_key_commands",
      -    "description": "Lists the commands a panel login key can be allowed or denied."
      -  }
      -]New value: +[
      +  {
      +    "const": "get_guide",
      +    "description": "Returns a step-by-step guide to the server environment."
      +  },
      +  {
      +    "const": "info",
      +    "description": "Returns information about the environment server."
      +  },
      +  {
      +    "const": "status",
      +    "description": "Returns whether server scripts are available on the plan and activated, and the account username and technical domain."
      +  },
      +  {
      +    "const": "session",
      +    "description": "Returns the current environment session, including selected_domain."
      +  },
      +  {
      +    "const": "session_state",
      +    "description": "Returns the environment session state."
      +  },
      +  {
      +    "const": "usage",
      +    "description": "Returns disk and resource usage of the environment."
      +  },
      +  {
      +    "const": "user_config",
      +    "description": "Returns the environment user configuration."
      +  },
      +  {
      +    "const": "plugins",
      +    "description": "Lists environment plugins. Optional: offset."
      +  },
      +  {
      +    "const": "php_get",
      +    "description": "Returns the PHP version and settings."
      +  },
      +  {
      +    "const": "selector_get",
      +    "description": "Reads a language selector (method get) of plugin phpselector, nodejs_selector or python_selector. Required: plugin, interpreter. Optional: params."
      +  },
      +  {
      +    "const": "node_list",
      +    "description": "Lists Node.js applications. Optional: offset."
      +  },
      +  {
      +    "const": "python_list",
      +    "description": "Lists Python applications. Optional: offset."
      +  },
      +  {
      +    "const": "files_list",
      +    "description": "Lists a directory (default: home) a page at a time. Brief entries by default; detail=full gives complete entries. The reply has page, per_page, total, has_more, truncated and next. Optional: path, page, per_page, offset, detail, limit."
      +  },
      +  {
      +    "const": "files_tree",
      +    "description": "Returns the directory tree under path. A tree over 30 KB loses its deepest levels (truncated, branches marked incomplete); a folder with more subfolders than fit keeps the first of them, and next names the files_list call that lists it in full. Optional: path, limit, offset."
      +  },
      +  {
      +    "const": "files_read",
      +    "description": "Reads a small text file. A binary or larger file is refused; files_publish in apps_write returns a download link for it. Required: path."
      +  },
      +  {
      +    "const": "files_search",
      +    "description": "Searches file names under path, a page at a time; the search finds up to 1000 files. Brief entries by default; detail=full gives complete entries. The reply has page, per_page, total, has_more, truncated and next, and incomplete is true when more files may match than the search found. Required: query. Optional: path, page, per_page, offset, detail, limit."
      +  },
      +  {
      +    "const": "files_disk",
      +    "description": "Returns disk usage of the home directory."
      +  },
      +  {
      +    "const": "files_archive_list",
      +    "description": "Lists the members of an archive a page at a time. The reply has page, per_page, total, has_more, truncated and next. Required: path. Optional: page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "db_list",
      +    "description": "Lists MySQL databases. Optional: offset."
      +  },
      +  {
      +    "const": "db_get",
      +    "description": "Returns one MySQL database (name in database or name). Optional: database, name."
      +  },
      +  {
      +    "const": "db_info",
      +    "description": "Returns MySQL server information."
      +  },
      +  {
      +    "const": "db_user",
      +    "description": "Returns one MySQL user (name in dbuser or name). Optional: dbuser, name."
      +  },
      +  {
      +    "const": "db_users",
      +    "description": "Lists the users of a MySQL database (name in database or name). Optional: database, name, offset."
      +  },
      +  {
      +    "const": "db_users_all",
      +    "description": "Lists all MySQL users. Optional: offset."
      +  },
      +  {
      +    "const": "db_user_databases",
      +    "description": "Lists the databases of a MySQL user (name in dbuser or name). Optional: dbuser, name, offset."
      +  },
      +  {
      +    "const": "ftp_list",
      +    "description": "Lists environment FTP accounts of a domain. Optional: domain, offset."
      +  },
      +  {
      +    "const": "cron_list",
      +    "description": "Lists cron jobs (each with its cron_id) and cron settings. Optional: offset."
      +  },
      +  {
      +    "const": "backup_list",
      +    "description": "Lists environment backups. Optional: domain, offset."
      +  },
      +  {
      +    "const": "login_key_list",
      +    "description": "Lists environment login key records without their values. Optional: offset."
      +  },
      +  {
      +    "const": "da_login_key_list",
      +    "description": "Lists panel login keys of the environment without secret values. Optional: offset."
      +  },
      +  {
      +    "const": "da_login_key_get",
      +    "description": "Returns the settings of one panel login key without secret values. Required: key_id. Optional: id."
      +  },
      +  {
      +    "const": "da_login_key_history",
      +    "description": "Returns the usage history of a panel login key a page at a time. The reply has page, per_page, total, has_more, truncated and next. Required: key_id. Optional: id, page, per_page, offset, detail."
      +  },
      +  {
      +    "const": "da_login_key_commands",
      +    "description": "Lists the commands a panel login key can be allowed or denied. Optional: offset."
      +  }
      +]
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "Record form of a paged list. brief (default): for files name, folder, type, size, modification time (UTC, ISO 8601) and symlink flag; for other lists the records as they are. Titles and excerpts are plain text; names, logins, paths, URLs and other identifiers are as the source gives them. full: complete records. A list reply is at most 30 KB and holds every record of its page: a record that does not fit in full comes in brief form, marked detail brief, the reply counts such records in brief_records, and get by id returns the complete record; brief records shorten their excerpts, then keep only their ids and titles. Only a page that does not fit even so is cut: truncated is true and next names the offset to go on from.",
      +  "enum": [
      +    "brief",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Listing limit."New value: +"files_*: the earlier name of per_page; per_page wins when both are set. files_tree: entries of the tree."
    • changedInput schema / properties / offset / description
      Previous value: -"Listing offset."New value: +"Records to skip from the start of a list; overrides page. A list reply cut at its size limit names the offset that follows in next."
    • addedInput schema / properties / page
      Added value: +{
      +  "description": "List page, from 1.",
      +  "type": "number"
      +}
    • addedInput schema / properties / per_page
      Added value: +{
      +  "description": "Records per page: 1-50, 20 by default, larger values count as 50.",
      +  "type": "number"
      +}
  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 readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety behavior is covered. The description adds scope ("active site") and lists covered resource categories, but does not disclose prerequisites, pagination behavior, or output characteristics beyond what the schema's action descriptions provide.

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

Conciseness4/5

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

The description is a single front-loaded sentence that efficiently states the tool's scope. The long enumeration is justified by the tool's breadth, though it could have used that space to clarify routing among overlapping siblings.

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

Completeness3/5

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

The tool is highly complex with 32 actions and 17 parameters, and the schema is very rich. The description provides an adequate broad overview but does not explain how to choose among actions, how to interpret results, or how this tool relates to overlapping read-only siblings. It relies almost entirely on the schema for completeness.

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 action enum's oneOf entries document each operation's parameters and return behavior in detail. The top-level description adds only a broad resource list and no parameter-level meaning beyond the schema, so the baseline score of 3 is 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?

The description states a specific verb ("Reads") and resource ("server environment of the active site") and enumerates the data categories covered. It is clear what the tool does, but it does not explicitly distinguish itself from read-oriented siblings such as files_read or settings_read.

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?

The description gives no explicit guidance on when to use this tool versus alternatives. This is especially problematic because sibling tools like files_read and settings_read overlap with actions exposed here (files_read, php_get, etc.), and the definition does not explain whether to use apps_read or the dedicated sibling.

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.