Skip to content

System Tools

KristofersOzolinsMagebit edited this page May 13, 2026 · 3 revisions

The base Magebit_Mcp module ships 13 system tools that let an MCP-connected AI agent inspect and operate the Magento store itself — stores and websites, system configuration values, cache types, indexers, and the admin notification inbox. They are available the moment the module is installed; no extra sub-module required.

All system tools are namespaced system.* and follow the same conventions:

  • Every tool is gated by its own admin-role ACL under Magebit_Mcp::tools — the same admin role you give the token-issuing user must grant the tool's resource.
  • Write tools require both Allow Write Tools (store config) and allow_writes on the token. See Setup for the full write-gate explanation.
  • Write tools advertise requires_confirmation: true, so clients that support user confirmation (Claude Desktop, Claude Web) prompt the operator before running.
  • Tools that wrap an existing admin-UI capability (cache, indexer, notification list) also enforce the underlying admin ACL — so MCP can never do what the admin UI would forbid for that same role.
Tool Mode ACL Underlying ACL
system.store.list read Magebit_Mcp::tool_system_store_list
system.store.info read Magebit_Mcp::tool_system_store_info
system.config.get read Magebit_Mcp::tool_system_config_get
system.cache.list read Magebit_Mcp::tool_system_cache_list Magento_Backend::cache
system.cache.clean write Magebit_Mcp::tool_system_cache_clean Magento_Backend::cache
system.cache.flush write Magebit_Mcp::tool_system_cache_flush Magento_Backend::cache
system.cache.enable write Magebit_Mcp::tool_system_cache_enable Magento_Backend::cache
system.cache.disable write Magebit_Mcp::tool_system_cache_disable Magento_Backend::cache
system.index.list read Magebit_Mcp::tool_system_index_list Magento_Indexer::index
system.index.reindex write Magebit_Mcp::tool_system_index_reindex Magento_Indexer::index
system.index.reset write Magebit_Mcp::tool_system_index_reset Magento_Indexer::invalidate
system.index.set_mode write Magebit_Mcp::tool_system_index_set_mode Magento_Indexer::changeMode
system.notification.list read Magebit_Mcp::tool_system_notification_list Magento_AdminNotification::show_list

Stores

system.store.list

Enumerate every website, store group, and store view on the Magento instance. Use the returned ids to scope other tools — for example, filter sales.order.list by store_id. The admin-scope id 0 is excluded.

Sample MCP session — operator asks to list all stores and websites; the AI calls system.store.list and reports a single-website setup with one base website, one main store group, and one default store view.

Arguments

Name Type Required Notes
include_inactive boolean no Include disabled store views in the response. Defaults to false.
website_id array of int no Narrow the tree to one or more website ids.

system.store.info

Return the general-settings profile for a single store view: name, base URLs (secure/unsecure, media, static), locale, timezone, currencies, and the merchant contact block (phone, address, hours, VAT number).

Arguments

Name Type Required Notes
store_id integer one-of Numeric store-view id.
store_code string one-of Store-view code, e.g. default. Provide either store_id or store_code.

Configuration

system.config.get

Fetch a single Magento system-configuration value by its slash-separated path (e.g. general/store_information/name, web/secure/base_url). Optionally scope the read to a specific website or store.

Encrypted / password-backed fields are refused with a FORBIDDEN_FIELD marker — the value never leaves the database in cleartext through MCP.

Arguments

Name Type Required Notes
path string yes Slash-separated config path.
scope string no One of default, websites, stores. Defaults to default.
scope_code string no Website code (for websites) or store code (for stores).

Cache

system.cache.list

Enumerate every Magento cache type with its enabled status and invalidated flag. Mirror of bin/magento cache:status.

Sample MCP session — operator asks for the current cache status; the AI calls system.cache.list and reports 14 enabled cache types, one disabled (graphql_query_resolver_result), and offers to turn it on.

Arguments

Name Type Required Notes
cache_type array of string no Narrow to specific cache type ids, e.g. ["config", "full_page"].

system.cache.clean

Invalidate cached data for the given cache types — mirror of bin/magento cache:clean. Light operation: clears only Magento-tagged entries.

Write tool. Requires confirmation.

Arguments

Name Type Required Notes
cache_type array of string one-of Cache type ids to clean.
all boolean one-of true to clean all cache types. Provide either cache_type or all.

system.cache.flush

Physically clear the storage backend behind the given cache types — mirror of bin/magento cache:flush. Heavier than clean: wipes the underlying Redis / file storage, not just the Magento-tagged entries. Affects any other application sharing the same cache backend.

Write tool. Requires confirmation.

Sample MCP session — operator asks to flush full page cache; the AI calls system.cache.flush and confirms the full_page cache has been flushed, warning that the next page requests will be slightly slower until the cache warms back up.

Arguments

Name Type Required Notes
cache_type array of string one-of Cache type ids to flush.
all boolean one-of true to flush all cache types.

system.cache.enable

Enable the given cache types — mirror of bin/magento cache:enable. Returns the subset whose state actually changed.

Write tool. Requires confirmation.

Arguments

Name Type Required Notes
cache_type array of string one-of Cache type ids to enable.
all boolean one-of true to enable all cache types.

system.cache.disable

Disable the given cache types — mirror of bin/magento cache:disable. Returns the subset whose state actually changed.

Write tool. Requires confirmation.

Arguments

Name Type Required Notes
cache_type array of string one-of Cache type ids to disable.
all boolean one-of true to disable all cache types.

Indexer

system.index.list

Enumerate every Magento indexer with its status (valid / invalid / working / suspended), mode (realtime / scheduled), and last-updated timestamp. Mirror of bin/magento indexer:status.

Sample MCP session — operator asks for the current indexer status; the AI calls system.index.list and reports all 14 indexers as valid and running in scheduled mode.

Arguments

Name Type Required Notes
indexer_id array of string no Narrow to specific indexer ids, e.g. ["catalog_product_price"].

system.index.reindex

Run a full reindex for the given indexers — mirror of bin/magento indexer:reindex. Heavy operation; can take minutes on large catalogs. Each indexer is wrapped in try/catch — a partial failure is reported per id rather than aborting the whole call.

Write tool. Requires confirmation.

Arguments

Name Type Required Notes
indexer_id array of string one-of Indexer ids to reindex.
all boolean one-of true to reindex every indexer.

system.index.reset

Invalidate the given indexers so the next cron run rebuilds them — mirror of bin/magento indexer:reset. Cheap operation: it just flips the state row to invalid. Per-indexer exceptions are reported in the result body.

Write tool. Requires confirmation.

Arguments

Name Type Required Notes
indexer_id array of string one-of Indexer ids to reset.
all boolean one-of true to reset every indexer.

system.index.set_mode

Switch the given indexers between realtime (update on save) and scheduled (update by cron) — mirror of bin/magento indexer:set-mode.

Write tool. Requires confirmation.

Arguments

Name Type Required Notes
mode string yes realtime or scheduled.
indexer_id array of string one-of Indexer ids to switch.
all boolean one-of true to switch every indexer.

Notifications

system.notification.list

List admin-inbox notifications, newest first. Defaults to unread items only — pass include_read: true for the full set. Soft-removed items are always excluded.

Arguments

Name Type Required Notes
severity array of int no Filter by severity: 1=critical, 2=major, 3=minor, 4=notice.
include_read boolean no Include items the admin has already marked read. Defaults to false.
limit integer no Maximum number of items to return.

Shipped prompts that drive these tools

The base module also ships a handful of MCP prompts (/-menu workflows in Claude Desktop / Claude Web) built on top of these tools — they're the easiest way to demo the surface to a store owner:

  • system.health_check — "Is my store healthy?". Walks system.cache.list, system.index.list, system.notification.list. Read-only.
  • system.refresh_after_edit — "I just made changes — make them visible". Calls system.cache.flush then system.index.reindex per stale indexer. Write-gated.
  • system.list_stores — "Show me my stores". Calls system.store.list. Read-only.
  • system.find_setting — "Find a setting". Maps a natural-language query argument to a config path, then calls system.config.get. Read-only.

See Prompts for the full prompt catalog and how to ship your own.

Clone this wiki locally