Skip to main content
Glama

mcp-easy-ai__wp_list_pages

Read-only

Lists WordPress pages. Optional: status (publish/draft/pending/private/future/trash/any — default publish), search, parent (filter by parent page ID; use 0 for top-level only), parent_exclude (parent page IDs to leave out; not with parent), include or exclude (page IDs; not both), slug (list of slugs), author (user ID), author_exclude (array of user IDs to exclude), after / before (ISO 8601 date-time range on publish date), has_password (true/false), date_query / tax_query / meta_query (WP_Query clause lists, at most 10 clauses, 3 levels; tax_query only on taxonomies registered for pages and shown in the REST API; meta_query only on meta keys registered with show_in_rest for pages, needs edit_posts, never on plugin-integration SEO keys, and with a status other than publish also edit_others_pages (private: read_private_pages; any: both)), per_page (default 10, max 100), page, offset (skip N pages; replaces page), orderby (date/id/title/slug/modified/menu_order/parent/… Through Royally: its server marks it read-only, so it runs straight away.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number for pagination.
slugNoOnly items with one of these slugs (post_name).
afterNoOnly pages published on or after this ISO 8601 date-time (e.g. "2026-01-01T00:00:00").
orderNoOrder direction.desc
authorNoAuthor user ID to filter by.
beforeNoOnly pages published on or before this ISO 8601 date-time (e.g. "2026-12-31T23:59:59").
offsetNoSkip this many matching items. Replaces page: send one or the other.
parentNoParent page ID to filter by.
searchNoSearch query to filter pages.
statusNoPage status filter (e.g. publish, draft, pending, private, future).
contextNoview (default): pages you can read. edit: only pages you can edit (needs edit_pages).view
excludeNoIDs to leave out. Not with include: WordPress ignores an exclusion when include is given.
includeNoOnly these IDs (non-empty). With orderby "include", results keep this order.
orderbyNoField to order results by. include keeps the order of include; meta_value / meta_value_num sort by the first meta_query clause's key and need meta_query.date
site_idNoSite to run this tool on: 8ef2e52b-bd07-4671-a363-ebe8b480b65c (https://demo.royalplugins.com)
per_pageNoNumber of pages per page (1-100).
tax_queryNoWP_Query taxonomy clauses (at most 10, nested 3 levels), joined with AND, e.g. [{"taxonomy": "genre", "field": "slug", "terms": ["drama"]}]. Clause keys: taxonomy (registered for this post type and shown in the REST API), field (term_id, slug, name; default term_id), terms, operator (IN, NOT IN, AND, EXISTS, NOT EXISTS), include_children. For OR, put clauses in one item with "relation": "OR".
date_queryNoWP_Query date clauses (at most 10, nested 3 levels), joined with AND, e.g. [{"after": "2026-01-01", "before": {"year": 2026, "month": 6}}]. Clause keys: after, before, year, month, monthnum, week, w, dayofyear, day, dayofweek, dayofweek_iso, hour, minute, second, inclusive, compare, column (post_date, post_date_gmt, post_modified, post_modified_gmt). For OR, put clauses in one item: {"relation": "OR", "0": {...}, "1": {...}}.
meta_queryNoWP_Query meta clauses (at most 10, nested 3 levels), joined with AND, e.g. [{"key": "price", "value": 10, "compare": ">", "type": "NUMERIC"}]. Clause keys: key (required; a meta key registered with show_in_rest for this post type, the keys wp_get_post_meta shows; plugin-integration SEO keys are refused), value, compare, type. Needs the edit_posts capability, and with a status other than publish also the type's edit_others_posts (private: read_private_posts; any: both). For OR, put clauses in one item with "relation": "OR".
raw_columnsNoEdit context only. Each item also carries raw: every database column as WordPress stores it (ID, post_author, post_date, post_date_gmt — 0000-00-00 00:00:00 for an unscheduled draft —, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count, filter). Default false.
has_passwordNotrue: only password-protected items; false: only items without a password.
author_excludeNoArray of author user IDs to EXCLUDE from results.
parent_excludeNoLeave out items whose parent is one of these IDs (0 = top-level items). Hierarchical types only; not with parent, which WordPress lets override it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds genuinely new behavioral context: meta_query requires edit_posts plus status-dependent edit_others_pages/read_private_pages, tax_query is restricted to page taxonomies exposed in REST, and SEO meta keys are refused. The closing note that the server marks it read-only and 'runs straight away' reinforces the safety profile. It loses a point for the garbled phrasing and for not describing pagination/response behavior.

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

Conciseness2/5

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

After a one-line purpose statement the description becomes a single run-on dump of nearly every parameter, duplicating schema documentation, and it ends with an unclear fragment ('Through Royally: its server marks it read-only...'). The intent is front-loaded, but most of the body is filler against a fully documented schema.

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?

For a 23-parameter tool with no output schema, an agent still cannot tell what a result item looks like or how pagination metadata is returned — the description mentions per_page/page/offset but never the response shape. The permission caveats partially compensate, but the return-value gap is a real omission.

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%, so the schema already documents every parameter, including the include/exclude precedence and parent/parent_exclude conflict. The description largely recaps those same facts, so it adds little beyond the structured data. Baseline 3 applies.

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 definition opens with a specific verb and resource: 'Lists WordPress pages.' That is unambiguous about what the tool does. It does not, however, distinguish itself from close siblings such as wp_get_pages, wp_list_posts, or wp_list_cpt_items, which an agent could plausibly reach for instead.

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

Usage Guidelines3/5

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

Usage is only implied: the presence of filters like status, search, and parent signals 'filtered listing,' and the tool is obviously a read/list operation. There is no statement of when to choose this over alternatives like wp_get_page (single page) or wp_list_cpt_items, nor any prerequisite narration for the basic case.

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