pom_get_shortcode_schema: inspect a shortcode schema
The grammar for one shortcode: which attributes it accepts, what values they take, and what it may be nested inside or contain.
This is the call that stops an assistant inventing attribute names.
Arguments
| Argument | Required | Meaning |
|---|---|---|
shortcode |
Yes | The tag, such as web_button or vc_row |
Permissions
mcp:read and wp:content:read, with edit_posts.
What it returns
| Field | Meaning |
|---|---|
shortcode |
The tag |
label, description |
Human name and purpose |
source |
Layout shortcode, POM theme module, or other builder shortcode |
category |
Its grouping |
attributes |
A map of attribute name to its schema |
is_container |
Whether it wraps other shortcodes |
as_parent |
What it may contain |
as_child |
What it may be placed inside |
post_types |
Post types it is restricted to, if any |
content_element |
Whether it produces content |
An unknown tag returns pom_ai_mcp_shortcode_not_found.
Reading an attribute
Each attribute carries:
| Field | Meaning |
|---|---|
type |
Normalised type: string, text, enum, media or object |
control_type |
The underlying builder control |
label, description |
What it is for |
default |
The default value |
options |
Allowed label-and-value pairs, when constrained |
values |
Just the allowed values, for quick checking |
dependency |
When the attribute only applies given another attribute's value |
group |
Its tab in the builder interface |
The type is derived from the control: dropdowns, radios and checkboxes become enum; image pickers become media; grouped, padding and background controls become object; textareas become text.
The fields that matter most
values. When present, these are the only acceptable values. Writing anything else produces an attribute that is silently ignored — the most common way generated builder content ends up looking wrong without failing.
as_parent and as_child. The nesting constraints, and they are enforced. The validator reports a violation as an error, so reading them first saves a round trip.
dependency. An attribute that only applies when another has a particular value. Setting it outside that condition does nothing, which is confusing to debug from the rendered page.
type: object. These attributes take a structured value, not a string. Passing a string produces a silently wrong result.
Read the schema for every shortcode you use
Not just the unfamiliar ones. Two shortcodes that look similar frequently differ in the attribute names for the same concept, and a web_* module's spacing attributes are usually not the ones a general WordPress builder would use.
Read the schemas for vc_row, vc_column and web_button before composing anything.
An assistant given the schemas writes valid markup on the first attempt. One given only the tag list writes plausible markup and finds out at validation.
Using it well
Show me the schema for web_button, and list its attributes with their allowed values.
Which attributes of web_listings control how many items are shown?
What can vc_column_inner be placed inside?
What it does not do
- It does not validate your usage. That is
pom_validate_builder_content. - It does not tell you what looks good. The schema is mechanical.
- It does not cover merge tags. Those are template-side; see
pom_get_available_mergetags.
When a shortcode is not found
pom_ai_mcp_shortcode_not_found means the tag is not in this site's catalogue. Causes, in order of likelihood:
- The assistant invented the tag, or borrowed it from another builder.
- The module is disabled — check
pom_get_available_shortcodeswithinclude_inactive. - The POM theme is not active, so its modules are not registered.
- A typo.
The fix is always the same: go back to pom_get_available_shortcodes and work from the real list.