Skip to main content
Glama

wp_widget_controls

Read-onlyDestructive

The REAL Elementor setting keys for a widget, read from Elementor's own registry ON THAT SITE — so it is correct for that Elementor version, that Pro licence, and any third-party addons installed. Call with NO widget_type to list every widget the site actually has. USE THIS for anything wp_widget_schema doesn't cover: the dynamic/Theme-Builder widgets (posts, archive-posts, loop-grid, theme-post-title, theme-post-featured-image, nav-menu, search-form…), Woo widgets, and addon widgets. wp_widget_schema is our curated shorthand for ~20 common static widgets; this is the ground truth for everything else. tab=content|style|advanced narrows a large widget. Requires connector 0.7.9+. CONTEXT: the default mode is a compact INDEX (names, types, section grouping) with responsive twins collapsed — a control marked responsive also accepts the same name with _tablet / _mobile appended. Ask for full definitions only for the keys you actually need, via names=. Responses carry total/count/truncated, so a short list is never a complete one by accident. If you just want the right key for one change, assist_widget_keys answers that directly and never puts the registry in your context at all. For Editor V4 atomic elements (e-tabs, e-heading, …) it returns the V4 props model instead, since atomic elements have no controls registry.

Input Schema

NameRequiredDescriptionDefault
tabNocontent | style | advanced — narrows a large widget
modeNoindex (default: names/types/grouping, smallest) | full (every control, paged). Ignored when names= is set.
limitNoPage size for mode=full (default 300, max 1000).
namesNoComma-separated control names to expand fully (defaults, options, condition, selectors). The cheap way to get detail.
offsetNoPaging offset for mode=full; follow next_step when truncated is true.
node_idNoWith post_id: an element id from wp_get_page. Returns only THAT widget's controls.
post_idNoWith node_id: the page the element is on. The element's widget type is resolved server-side (response.resolved_from), so you never dump the whole registry to learn one widget's keys.
site_idYesWordPress site id
widget_typeNoe.g. 'posts', 'loop-grid', 'theme-post-title'. Omit to list all widgets on the site — or pass post_id + node_id instead and the type is resolved from the element.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile, but the description adds substantial non-schema behavior: default index mode with responsive twins collapsed and _tablet/_mobile naming, paged full mode, total/count/truncated signals, server-side widget-type resolution via resolved_from, and a connector version prerequisite (0.7.9+). This is exactly the extra context an agent needs before calling.

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?

Dense but front-loaded: the core purpose and the sibling differentiation come first, then the mode/response details. Every sentence carries information, though the run-on CONTEXT paragraph packs many concerns together and could be split for scanability.

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

Completeness5/5

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

With no output schema, the description carries the response burden well: it describes the index vs full shapes, paging fields, truncation flag, resolved_from, and the V4 atomic-element fallback (props model instead of controls registry). Nothing an agent needs to call correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents each parameter verbatim, establishing a baseline of 3. The description goes further by explaining how parameters interact (omit widget_type to list widgets; pass post_id+node_id instead and the type is resolved server-side; names= is the cheap path to detail), which adds real selection guidance beyond the schema.

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

Purpose5/5

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

States a precise verb+resource: it reads the REAL Elementor setting keys for a widget from the site's own registry. It explicitly positions itself against wp_widget_schema ('our curated shorthand') and assist_widget_keys, so an agent can disambiguate without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (anything wp_widget_schema doesn't cover: Theme-Builder, Woo, addon widgets), when-to-omit-params (no widget_type lists all widgets), and two named alternatives with their selection conditions (wp_widget_schema for ~20 static widgets; assist_widget_keys for a single key lookup).

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.

Resources