> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wpbevel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools reference

> Every tool the assistant can call, what it takes and what it returns.

Twenty-eight tools, filtered by the site's capabilities and the connection's scopes. Arguments are JSON objects; every response carries a `message` written for the assistant.

## Knowledge

### get\_build\_guide

`{topic, widgets?, variant?}`. The build knowledge in the smallest useful unit. `rules` is the must-read (create\_page and create\_template refuse until this conversation has read it). `widgets` with `widgets:[…]` returns the cards for the widgets about to be placed; without the list, the index. `header` returns the recipe and the canonical header tree; `footer` the recipe; both take `variant` for a ready-made shape. Also `composed-ui`, `loops`, `single-post`, `woocommerce`, `popup`, `effects`, `fonts`, `icons`, `nav-menu`, `pricing`, `example`, and the long forms `rules-full` and `widgets-full`.

## Design system

### get\_design\_system

Global colours by role, custom colours, typography for h1–h6 and body, the button style, the body background, the look, and `fonts`: the Custom Fonts installed on the site with the weights that ship.

### update\_design\_system

`{colors?, custom_colors?, typography?, buttons?, body_background?, look?}`. Pass only what changes. A family must be a Google Fonts family or an installed Custom Font; anything else is ignored and reported. A snapshot is kept for `revert_design_system`.

### revert\_design\_system

Restores the kit settings and the look from the snapshot taken before the last update.

### upload\_font

`{family, url?}` or `{family, request_upload_url:true, filenames?}` or `{check_upload}`. One file per weight; the family is created on first use; weight and style are read from the file name. Share links work as `url`.

## Pages and templates

### create\_page

`{title, elements, status?, page_settings?, add_to_menu?, set_as_front_page?, allow_placeholders?, keep_layout?}`. An Elementor element tree in the "Paste from other site" shape. Draft unless told otherwise; gets the full-width template; external images import automatically. A publish that still shows placeholder images is saved as draft.

### update\_page

`{page_id, operations, expect_sections?, status?, title?}`. Section operations: `replace`, `insert_before`, `insert_after`, `append`, `remove`. `expect_sections` refuses a stale index.

### build\_page

`{title, sections, look?, …}`. The plan-based generator; hidden unless the `plan_build` feature is on.

### create\_template

`{type, title, elements, conditions?, status?, menu_items?, popup?, triggers?, mega_menu_width?}`. Types: `header`, `footer`, `error-404`, `popup`, `archive`, `single-post`, `mega-menu`, `loop-item`, `product`, `product-archive`. Published with display conditions; a header creates and assigns a fresh menu; publishing drafts other templates of the same type.

### create\_post

`{title, elements | content_html, excerpt?, categories?, tags?, featured_image_url?, status?}`.

## Reading

### list\_pages

`{type?, search?}`. Pages, posts, templates or any Elementor-built post type. Starter templates are flagged. On a shop the WooCommerce pages are named.

### get\_page

`{page_id, mode?, section?}`. `mode:"outline"` is one line per band; `section` is one band; default is the full tree. Credentials in form settings come back redacted and are restored on save.

### list\_menus

Menus with locations and items.

## Site

### update\_site\_settings

`{site_title?, tagline?, front_page_id?, posts_page_id?}`.

### update\_site\_logo

`{logo_url | logo_attachment_id, light_logo_url | light_logo_attachment_id}`. Matched by tone; the pair is swapped when the pixels prove them inverted. Placeholder services are refused.

### generate\_logo

`{text, industry, icon?, layout?, font?, color?, icon_color?, light_color?, light_icon_color?, font_size?, set_as_logo?}`. A wordmark drawn on the server in the site's own font, with a white variant; the industry picks a relevant mark.

### add\_to\_menu

`{menu, page_id | url+title | mega_menu_id, parent_id?}`.

## Media and brand

### upload\_media

`{url}` or `{request_upload_url:true, filenames?, count?, hand_to_user?}` or `{check_upload}`. See [Uploads](/mcp/uploads).

### get\_brand\_assets

The files the site owner dropped into Brand assets, with roles, tones and font weights, plus the current logo and installed fonts.

### fetch\_brand

`{domain}`. Logo candidates from a business's website (inline SVG logos imported outright, others with size and tone), the colours its CSS declares and the font families it names.

### search\_images

`{query, count?, orientation?, with_thumbnails?, min_width?}`. Openly-licensed photos from Openverse. Thumbnails come back as image blocks so a client that renders images can choose by eye. Creator and licence are stored on the attachment on import.

### list\_media

`{missing_alt?, search?}`.

### set\_image\_alt

`{attachment_id, alt}`.

### set\_meta\_description

`{page_id, description}`.

## Maintenance

### optimize\_site

`{action: run | status}`. Bevel's One-Click Optimization, advanced in fifteen-second steps.

### convert\_webp

`{enable_serving?}`. Converts the media library in batches.

### clear\_cache

Hard-clears every cache. Content changes purge automatically; this is for the rare case a change does not show.

### optimize\_database

`{mode: report | run, optimize_tables?}`. Report first, always; run deletes permanently.

### list\_form\_submissions

`{days?, form_name?}`. Read-only.

## Annotations

Every tool declares MCP annotations: reads are `readOnlyHint`, writes that replace content are `destructiveHint`, settings tools are `idempotentHint`, and the two that reach the internet are `openWorldHint`. Clients that read them stop asking permission for reads.
