WordPress.com MCP tools reference
This document provides a comprehensive mapping of MCP tools available for WordPress.com developers. This is a living document and will be updated as new tools are added or existing ones are modified.
Write/delete tools
All write, update, and delete operations are accessed through a single unified tool:
Content Authoring ( wpcom-mcp-content-authoring )
Description: Create, update, and delete content on WordPress.com sites — including posts, pages, comments, media metadata, categories, and tags. Uses an action-based interface: "list" to discover operations, "describe" to get the schema for a specific operation, and "execute" to run it.
⚠️ Safety protocol: Before any create, update, or delete operation, the AI agent must (1) describe exactly what it plans to do, (2) ask the user for explicit confirmation, and (3) include the user’s confirmation as user_confirmed in the execute params. Write operations are never auto-executed.
Common inputs (all operations):
wpcom_site(string, required): WordPress.com site ID or URLaction(enum: list/describe/execute, required): The action to performoperation(string, required for describe/execute): The operation name inresource.actionformat (e.g.,posts.create,tags.delete)params(object, required for execute): Operation-specific parameters. Must includeuser_confirmedfor write operations.
Common output fields:
All operations support include_fields as an optional input parameter — an array of field names to include in the response, reducing response size for context-efficient consumption. If omitted, all fields are returned.
Posts
Create Post ( posts.create )
Description: Create a new post. Creates as draft by default.
Inputs:
title(object): Post title — use{ "raw": "..." }for plain textcontent(object): Post content — use{ "raw": "..." }for block markup or HTMLexcerpt(object, optional): Post excerpt — use{ "raw": "..." }status(enum: publish/future/draft/pending/private, default:draft): Post statusauthor(integer, optional): Author user IDfeatured_media(integer, optional): Featured image media IDcategories(array of integers, optional): Category term IDstags(array of integers, optional): Tag term IDsdate(string, optional): Publish date in ISO 8601 format, in the site’s timezoneslug(string, optional): URL-safe identifier for the postcomment_status(enum: open/closed, optional): Whether comments are allowedmeta(object, optional): Meta fields including SEO (advanced_seo_description,jetpack_seo_html_title,jetpack_seo_noindex), newsletter, and Jetpack Social options
Outputs:
id(integer): The created post’s IDstatus(string): Post statustype(string): Post typedate(string): Creation datemodified(string): Last modified datelink(string): Permalink URLauthor(integer): Author IDcategories(array): Assigned category IDstags(array): Assigned tag IDsfeatured_media(integer): Featured media IDtitle(object): Rendered titlecontent(object): Rendered contentexcerpt(object): Rendered excerptmeta(object): Meta field values_content_warnings(array, if present): Blocks or HTML elements WordPress stripped during save
💡 Tip: For design-aligned posts, fetch theme.active and theme.presets from wpcom-mcp-site-editor-context first, then use preset slugs (e.g., for colors and fonts) instead of hard-coded values.
Update Post ( posts.update )
Description: Update an existing post. Only provided fields are modified. If the post status is "publish", changes go live immediately.
Inputs:
id(integer, required): The post ID to update- All other fields from
posts.createare accepted and optional — only supplied fields are changed.
Outputs:
- Same as
posts.create. Check_content_warningsfor any markup that was stripped.
Delete Post ( posts.delete )
Description: Move a post to trash. Trashed posts can be restored from WordPress admin within 30 days.
Inputs:
id(integer, required): The post ID to delete
Outputs:
id(integer): The trashed post’s IDstatus(string): Updated status (trash)type(string): Post typedate(string): Original creation datelink(string): Previous permalinktitle(object): Post title
⚠️ Destructive operation. The agent must fetch and display the post title before requesting user confirmation.
Pages
Create Page ( pages.create )
Description: Create a new page. Creates as draft by default. Supports hierarchical page structures and page templates.
Inputs:
title(object, required): Page title — use{ "raw": "..." }content(object, required): Page content — use{ "raw": "..." }for block markup or HTMLexcerpt(object, optional): Page excerptstatus(enum: publish/future/draft/pending/private, default:draft): Page statusauthor(integer, optional): Author user IDfeatured_media(integer, optional): Featured image media IDparent(integer, optional): Parent page ID for hierarchical structuremenu_order(integer, optional): Page ordering valuetemplate(string, optional): Theme template file to use for displayslug(string, optional): URL-safe identifiercomment_status(enum: open/closed, optional): Whether comments are allowedmeta(object, optional): Meta fields including SEO options
Outputs:
id(integer): The created page’s IDstatus(string): Page statustype(string): Content typedate(string): Creation datemodified(string): Last modified datelink(string): Permalink URLauthor(integer): Author IDparent(integer): Parent page IDmenu_order(integer): Page ordertemplate(string): Template filefeatured_media(integer): Featured media IDtitle(object): Rendered titlecontent(object): Rendered contentexcerpt(object): Rendered excerptmeta(object): Meta field values_content_warnings(array, if present): Blocks or HTML elements WordPress stripped during save
💡 Tip: Use patterns.list → patterns.get to browse and fetch block patterns, customize with your content, and compose full pages from multiple patterns.
Update Page ( pages.update )
Description: Update an existing page. Only provided fields are modified. If the page status is "publish", changes go live immediately.
Inputs:
id(integer, required): The page ID to update- All other fields from
pages.createare accepted and optional — only supplied fields are changed.
Outputs:
- Same as
pages.create. Check_content_warningsfor any markup that was stripped.
Delete Page ( pages.delete )
Description: Move a page to trash. Trashed pages can be restored from WordPress admin within 30 days.
Inputs:
id(integer, required): The page ID to delete
Outputs:
id(integer): The trashed page’s IDstatus(string): Updated status (trash)type(string): Content typedate(string): Original creation datelink(string): Previous permalinktitle(object): Page title
⚠️ Destructive operation. The agent must fetch and display the page title before requesting user confirmation.
Comments
Create Comment ( comments.create )
Description: Create a new comment on a post. Comments from authenticated users auto-populate author fields.
Inputs:
post(integer, required): The ID of the post to comment oncontent(object, required): Comment content — use{ "raw": "..." }author(integer, optional): Comment author user IDauthor_name(string, optional): Display name for the comment authorauthor_email(string, optional): Email address for the comment authorauthor_url(string, optional): URL for the comment authorparent(integer, optional): Parent comment ID for threaded repliesstatus(string, optional): Comment status (approvedorhold)
Outputs:
id(integer): The created comment’s IDpost(integer): Associated post IDparent(integer): Parent comment ID (0 if top-level)author_name(string): Comment author display nameauthor_email(string): Comment author emaildate(string): Comment datestatus(string): Comment statustype(string): Comment typelink(string): Comment permalinkcontent(object): Rendered comment content
Update Comment ( comments.update )
Description: Update an existing comment. If status is "approved", changes are visible immediately on the live site.
Inputs:
id(integer, required): The comment ID to updatecontent(object, optional): Updated comment contentauthor_name(string, optional): Updated author display nameauthor_email(string, optional): Updated author emailauthor_url(string, optional): Updated author URLstatus(string, optional): Updated status (approved/hold/spam/trash)
Outputs:
- Same as
comments.create.
Delete Comment ( comments.delete )
Description: Move a comment to trash.
Inputs:
id(integer, required): The comment ID to delete
Outputs:
id(integer): The trashed comment’s IDpost(integer): Associated post IDauthor_name(string): Comment authordate(string): Comment datestatus(string): Updated statuscontent(object): Comment content
⚠️ Destructive operation. The agent must fetch the comment and display author name, post ID, and a content preview before requesting user confirmation.
Media
Update Media ( media.update )
Description: Update media item metadata (not the file itself). Changes to alt_text and caption update immediately on the live site wherever the media is used.
Inputs:
id(integer, required): The media item ID to updatetitle(object, optional): Updated media titlecaption(object, optional): Updated caption — use{ "raw": "..." }alt_text(string, optional): Alternative text for accessibilitydescription(object, optional): Updated description — use{ "raw": "..." }post(integer, optional): Associated parent post ID
Outputs:
id(integer): Media item IDdate(string): Upload datestatus(string): Media statustype(string): Content typemime_type(string): MIME type (e.g.,image/jpeg)source_url(string): Direct URL to the filealt_text(string): Alternative textmedia_type(string): Media type (image/video/audio/application)media_details(object): Dimensions, file size, and available image sizes with URLsauthor(integer): Uploader’s user IDpost(integer): Parent post IDtitle(object): Rendered titlecaption(object): Rendered captiondescription(object): Rendered description
Delete Media ( media.delete )
Description: Move a media item to trash. May break posts, pages, or other content that references this media.
Inputs:
id(integer, required): The media item ID to delete
Outputs:
id(integer): The trashed media item’s IDstatus(string): Updated statustype(string): Content typemime_type(string): MIME typesource_url(string): Direct URL to the filetitle(object): Media title
⚠️ Destructive operation. The agent must fetch the media item and display its title/filename before requesting user confirmation. Deleting media may break content that embeds or references it.
Categories
Create Category ( categories.create )
Description: Create a new category. Supports hierarchical parent-child relationships. Check existing categories first to avoid duplicates.
Inputs:
name(string, required): Category nameslug(string, optional): URL-safe identifier (auto-generated from name if omitted)description(string, optional): Category descriptionparent(integer, optional): Parent category ID for hierarchy
Outputs:
id(integer): The created category’s IDname(string): Category nameslug(string): URL slugdescription(string): Category descriptionparent(integer): Parent category ID (0 if top-level)count(integer): Number of posts in this categorylink(string): Category archive URL
Update Category ( categories.update )
Description: Update an existing category. Changing the slug affects archive URLs immediately and may break existing links.
Inputs:
id(integer, required): The category ID to updatename(string, optional): Updated category nameslug(string, optional): Updated URL slugdescription(string, optional): Updated descriptionparent(integer, optional): Updated parent category ID
Outputs:
- Same as
categories.create.
Delete Category ( categories.delete )
Description: Permanently delete a category. This action cannot be undone — categories do not support trash. Posts assigned to this category will be moved to Uncategorized. Child categories become top-level.
Inputs:
id(integer, required): The category ID to deleteforce(boolean, required): Must betrue— categories do not support trashing
Outputs:
id(integer): The deleted category’s IDname(string): Category nameslug(string): URL slugdescription(string): Category descriptionparent(integer): Parent category IDcount(integer): Number of affected posts
🔴 Permanent deletion — no trash. The agent must fetch the category to get its name and post count, then get explicit confirmation before proceeding. Must include confirm_permanent_delete: true in params.
Tags
Create Tag ( tags.create )
Description: Create a new tag. Check existing tags first to avoid duplicates — tag search is case-insensitive.
Inputs:
name(string, required): Tag nameslug(string, optional): URL-safe identifier (auto-generated from name if omitted)description(string, optional): Tag description
Outputs:
id(integer): The created tag’s IDname(string): Tag nameslug(string): URL slugdescription(string): Tag descriptioncount(integer): Number of posts with this taglink(string): Tag archive URL
Update Tag ( tags.update )
Description: Update an existing tag. Changing the slug affects archive URLs immediately and may break existing links.
Inputs:
id(integer, required): The tag ID to updatename(string, optional): Updated tag nameslug(string, optional): Updated URL slugdescription(string, optional): Updated description
Outputs:
- Same as
tags.create.
Delete Tag ( tags.delete )
Description: Permanently delete a tag. This action cannot be undone — tags do not support trash. The tag will be removed from all associated posts.
Inputs:
id(integer, required): The tag ID to deleteforce(boolean, required): Must betrue— tags do not support trashing
Outputs:
id(integer): The deleted tag’s IDname(string): Tag nameslug(string): URL slugdescription(string): Tag descriptioncount(integer): Number of affected posts
🔴 Permanent deletion — no trash. The agent must fetch the tag to get its name and post count, then get explicit confirmation before proceeding. Must include confirm_permanent_delete: true in params.
Safety protocol summary
All write/delete operations in wpcom-mcp-content-authoring enforce a mandatory confirmation flow:
| Behavior | Create | Update | Delete (trash) | Delete (permanent) |
|---|---|---|---|---|
| Confirmation required | ✅ | ✅ | ✅ | ✅ |
| Reversible | N/A | Partially (previous values lost) | ✅ Within 30 days | ❌ Permanent |
| Default status | draft | No change | trash | Removed entirely |
| Applies to | Posts, pages, comments, categories, tags | Posts, pages, comments, media, categories, tags | Posts, pages, comments, media | Categories, tags |
The user_confirmed parameter must be included in params for every execute call. For permanent deletions (categories, tags), confirm_permanent_delete: true is additionally required.
Read only tools
Site Editor Context ( wpcom-mcp-site-editor-context )
Description: Query site design context — theme presets (colors, fonts, spacing), applied styles, and registered block types. This is a read-only companion to Content Authoring. Use it before creating or updating content with wpcom-mcp-content-authoring to ensure content aligns with the site’s active theme design.
💡 Recommended sequence: theme.active → theme.presets → (optionally) blocks.allowed → then create content via wpcom-mcp-content-authoring. Use preset slugs (e.g., "primary", "large") in block attributes instead of hard-coded hex/px values.
Common inputs (all operations):
wpcom_site(string, required): WordPress.com site ID or URLaction(enum: list/describe/get, required): The action to performoperation(string, required for describe/get): The operation name inresource.actionformat (e.g.,theme.presets,blocks.allowed)params(object, optional): Operation-specific parameters
Common output fields:
All operations support include_fields as an optional input parameter — an array of field names to include in the response, reducing response size for context-efficient consumption. If omitted, all fields are returned.
Active Theme ( theme.active )
Description: Get the active theme’s stylesheet slug and name. Use the stylesheet value as the stylesheet parameter when fetching theme.presets or theme.styles.
Inputs:
status(array of strings, optional): Limit results to themes with one or more statuses (active/inactive)include_fields(array of strings, optional): Subset of:stylesheet,name
Outputs:
stylesheet(string): The active theme’s stylesheet slug identifiername(string): The active theme’s display name
Theme Presets ( theme.presets )
Description: Get the site’s theme design tokens: color palette, font sizes, font families, gradients, and spacing scale. Use preset slugs in block attributes instead of hard-coded values to ensure content matches the site’s design. The stylesheet parameter is auto-resolved from the active theme if omitted.
Inputs:
stylesheet(string, optional): Theme stylesheet slug — auto-resolved from the active theme if omittedinclude_fields(array of strings, optional): Subset of:colors,default_colors,gradients,font_sizes,font_families,spacing,content_width,wide_width
Outputs:
colors(array): Custom color palette entries withname,slug, andcolor(hex value)default_colors(array): Default/core color palette entries withname,slug, andcolorgradients(array): Available gradient presets withname,slug, andgradient(CSS value)font_sizes(array): Font size presets withname,slug,size(CSS value), and optionalfluidsettingsfont_families(array): Font family presets withname,slug, andfontFamily(CSS font stack)spacing(object): Spacing scale configuration and available spacing presetscontent_width(string): Default content area width (CSS value)wide_width(string): Wide alignment width (CSS value)
💡 Tip: Reference preset slugs in block markup — e.g., use has-primary-color or has-large-font-size class names rather than inline styles with raw hex or pixel values. This ensures content adapts if the site’s theme or design tokens change.
Theme Styles ( theme.styles )
Description: Get the site’s applied styles from theme.json: block-level style overrides and element-level typography/colors. Use this to understand how specific blocks and elements (e.g., headings, links, buttons) are visually styled by the theme. Complements theme.presets, which provides available design tokens. The stylesheet parameter is auto-resolved from the active theme if omitted.
Inputs:
stylesheet(string, optional): Theme stylesheet slug — auto-resolved from the active theme if omittedinclude_fields(array of strings, optional): Subset of:block_styles,element_styles,spacing,color,typography
Outputs:
block_styles(object): Per-block style overrides keyed by block name (e.g.,core/heading,core/button), including typography, color, spacing, and border settingselement_styles(object): Per-element style rules for HTML elements (e.g., headings, links, buttons, captions), including typography, color, and text decorationspacing(object): Global spacing styles — padding, margin, and block gap valuescolor(object): Global color styles — background, text, and gradient defaultstypography(object): Global typography styles — font family, font size, line height, and font weight defaults
💡 Tip: Use theme.styles alongside theme.presets for full design context. Presets tell you what tokens are available; styles tell you how they’re applied to specific blocks and elements.
Allowed Blocks ( blocks.allowed )
Description: List block types registered on the site. Returns the name, title, description, category, and style variations for each block. Use the namespace parameter to filter by block namespace (e.g., "core" for WordPress core blocks). Apply a style variation by adding its name as a className: is-style-{name}.
Inputs:
namespace(string, optional): Filter blocks by namespace (e.g.,core,jetpack,coblocks)include_fields(array of strings, optional): Subset of:name,title,description,category,parent,keywords,styles
Outputs:
name(string): Block type identifier (e.g.,core/paragraph,core/image)title(string): Human-readable block namedescription(string): Block descriptioncategory(string): Block category (e.g.,text,media,design,widgets,embed)parent(array): Parent block types this block can be nested within (empty if unrestricted)keywords(array): Search keywords for discovering the blockstyles(array): Available style variations withnameandlabel(e.g.,{ "name": "rounded", "label": "Rounded" })
⚠️ Important: A block being registered does not guarantee its markup survives the REST API save pipeline unchanged. Each site has its own sanitization rules. After creating or updating content via wpcom-mcp-content-authoring, always check the _content_warnings field in the response — if markup was stripped, use simpler block alternatives or ask the user how to proceed.
User Sites (wpcom-mcp-user-sites)
Description: List and manage user sites with filtering and metrics
Inputs:
page(integer, min: 1, default: 1): Page number for paginationper_page(integer, min: 1, max: 100, default: 10): Number of sites per pagefilters(object, optional):search(string): Search in site names and URLsstatus(enum: active/suspended/archived): Filter by site statusis_private(boolean): Filter by privacy settinghas_custom_domain(boolean): Filter by custom domain presencesort(object, optional):field(enum: name/url/created/updated, default: updated): Field to sort byorder(enum: asc/desc, default: desc): Sort orderinclude_metrics(boolean, default: false): Include site metrics in response
Outputs:
success(boolean): Operation success statussites(array): Site objects with blog_id, site_url, blogname, description, domain, path, privacy settings, status, dates, language, optional metrics (views, posts, storage, health)pagination(object): total_sites, total_pages, current_page, per_pagesummary(object): total_sites, active_sites, private_sites, custom_domains
User Achievements (wpcom-mcp-user-achievements)
Description: Access user achievements and progress tracking
Inputs:
action(enum: list/get_progress/get_stats/get_trophy_case/get_feats, default: list): Achievement action to performachievement_type(enum: all/achievements/feats, default: all): Type of achievements to retrievelimit(integer, min: 1, max: 100, default: 20): Number of items to returnblog_id(integer, optional): Site-specific achievements
Outputs:
success(boolean): Operation success statusachievements(array): Achievement objects with id, name, badge_type, level, achieved_at, blog_id, descriptionfeats(array): Feat objects with id, name, level, best_level, achieved_at, blog_idprogress(object): total_achievements, total_feats, highest_level, recent_activitytrophy_case(object): featured_badges, badge_count, showcase
Site Users (wpcom-mcp-site-users)
Description: List users from a specific site with roles, permissions, and activity metrics
Inputs:
wpcom_site(string, required): Site ID or URL to get users frompage(integer, min: 1, default: 1): Page number for paginationper_page(integer, min: 1, max: 50, default: 10): Number of users per pagerole(string, optional): Filter by user role (admin, editor, author, etc.)search(string, optional): Search in user names, emails, display namesstatus(enum: active/inactive, optional): Filter by user statusregistration_after(string, date format, optional): Filter by registration dateregistration_before(string, date format, optional): Filter by registration dateorderby(enum: registered/display_name/email/login, default: registered): Sort fieldorder(enum: asc/desc, default: desc): Sort directioninclude_contact_info(boolean, default: false): Include email/contact informationinclude_activity_metrics(boolean, default: false): Include last login, post counts
Outputs:
success(boolean): Operation success statususers(array): User details with user_id, login, display_name, roles, capabilities, registration_date, optional email/last_login/post_count/comment_countpagination(object): Total users/pages, current page, per_page
User Profile (wpcom-mcp-user-profile)
Description: Get comprehensive user profile information
Inputs:
fields(array, optional): Specific fields to retrieveinclude_preferences(boolean, default: false): Include user preferences and settingsinclude_stats(boolean, default: false): Include basic account statisticsinclude_account(boolean, default: false): Include account and subscription informationinclude_social(boolean, default: false): Include social and community engagement datainclude_activity(boolean, default: false): Include activity and engagement metrics
Outputs:
success(boolean): Operation success statusprofile(object): Basic user profile (id, username, email, display_name, avatar_url, locale, timezone)preferences(object, optional): Language, color_scheme, admin_interface, notifications, privacy_settingsstats(object, optional): Total sites/posts/pages/comments, member_since, last_activeaccount(object, optional): Plan, subscriptions, storage, bandwidth, is_paying_customersocial(object, optional): Following/followers counts, reader subscriptions, likes, commentsactivity(object, optional): Most active site, publishing frequency, total views/visitors, recent activity
User Connections (wpcom-mcp-user-connections)
Description: Manage user social connections and integrations
Inputs:
action(enum: list/get/test, default: list): Action to performconnection_id(integer, optional): Connection ID for get/test actionsservice(string, optional): Filter connections by service namestatus(enum: active/inactive/error, optional): Filter connections by statusforce_refresh(boolean, default: false): Force refresh connection data from external servicesinclude_capabilities(boolean, default: false): Include detailed capability information
Outputs:
success(boolean): Operation success statusconnections(array): Connection objects with id, service, external_id/name/display, status, connected_date, last_tested, capabilities, health infototal(integer): Total connections countsummary(object): Total/active connections, services connected, last connection test
User Notifications (wpcom-mcp-user-notifications)
Description: Access and filter user notifications
Inputs:
action(enum: list/get_settings/get_devices/test_delivery, default: list): Action to performchannel(enum: email/timeline/push/all, optional): Notification channel to queryblog_id(integer, optional): Site-specific settingssetting_type(enum: blogs/other/wpcom, optional): Type of notification settingsdevice_id(string, optional): Device ID for push notifications
Outputs:
success(boolean): Operation success statusnotification_settings(object): Blog settings, other settings (comment_like/reply), wpcom settings (marketing/research/community/digest/news/reports)devices(array): Device info with device_id/name/type, enabled status, last_seensummary(object): Total sites, email enabled sites, push devices, wpcom notifications count
User Notifications Inbox (wpcom-mcp-user-notifications-inbox)
Description: Comprehensive notifications inbox management
Inputs:
action(enum: list/get_summary, default: list): Notification action to performlimit(integer, min: 1, max: 100, default: 20): Number of notifications to returnunread_only(boolean, default: false): Return only unread notificationstype(enum: like/follow/comment/mention/achievement/store_order/reblog/trophy, optional): Filter by notification typesince(integer, optional): Get notifications after this timestampbefore(integer, optional): Get notifications before this timestamp
Outputs:
success(boolean): Operation success statusnotifications(array): Detailed notification objects with id, user_id/name, unread status, type, timestamp, subject/body (text/html), meta (blog/post info)summary(object): Total notifications, unread count, latest timestamp, types breakdowntotal(integer): Total notificationshas_more(boolean): More notifications available
User Security (wpcom-mcp-user-security)
Description: Access user security settings and 2FA status
Inputs:
action(enum: get_status/list_sessions/get_login_history, default: get_status): Security action to performlimit(integer, min: 1, max: 100, default: 10): Number of items to return for listsdays(integer, min: 1, max: 90, default: 30): Number of days for login history
Outputs:
success(boolean): Operation success statussecurity_status(object): Two factor enabled, enhanced security, application passwords count, active sessions, last login, account age, security scoretwo_factor(object): Enabled status, methods, backup codes count, enhanced securitysessions(array): Session details with session_id, ip_address, user_agent, location, last_seen, is_currentapp_passwords(array): Application password details with uuid, app_id, name, created/last_used dates, last_iplogin_history(array): Login attempts with timestamp, ip_address, user_agent, location, method, status
User Subscriptions (wpcom-mcp-user-subscriptions)
Description: Manage user subscriptions and billing information
Inputs:
action(enum: list/get_details/get_billing_history/get_usage/get_payment_methods, default: list): Subscription action to performsubscription_id(integer, optional): Subscription ID for detailed querieslimit(integer, min: 1, max: 100, default: 10): Number of items to returnstatus(enum: active/cancelled/expired/all, default: active): Filter subscriptions by status
Outputs:
success(boolean): Operation success statussubscriptions(array): Subscription details with id, product_name/slug, site_id/url, status, cost/currency, billing_period, payment dates, auto_renew, featuresbilling_history(array): Transaction history with transaction_id, date, amount/currency, description, status, payment_method, receipt_urlpayment_methods(array): Payment method details with id, type, last4, brand, expiry dates, is_defaultusage_data(object): Storage/bandwidth used/limits, sites count/limitsummary(object): Total/active subscriptions, monthly/yearly costs, next payment date, is_paying_customer
Posts Search (wpcom-mcp-posts-search)
Description: Search posts across all user sites
Inputs:
wpcom_site(string, optional): Site ID or URL to search posts from (if not provided, uses current site)search(string, optional): Search query to find posts by title, content, or excerptpost_type(enum: post/page/attachment/any, default: post): Post type to searchposts_per_page(integer, min: 1, max: 50, default: 10): Number of posts to returnpaged(integer, min: 1, default: 1): Page number for paginationorder(enum: ASC/DESC, default: DESC): Sort orderorderby(enum: date/title/menu_order/modified/ID/relevance, default: date): Sort fieldcategory(string, optional): Category slug or ID to filter poststag(string, optional): Tag slug or ID to filter postspost_status(enum: publish/private/draft/pending/future, default: publish): Post status filterauthor(integer, optional): Author ID to filter posts bymeta_key(string, optional): Custom field key to filter bymeta_value(string, optional): Custom field value to filter by
Outputs:
posts(array): Post objects with ID, title, content, excerpt, status, type, dates, permalink, author info, categories, tagsfound_posts(integer): Total posts foundmax_pages(integer): Maximum pages availablecurrent_page(integer): Current page numbersite_info(object): Blog ID, site name, site URL
Post Get (wpcom-mcp-post-get)
Description: Retrieve a single post by ID or URL from any WordPress.com site
Inputs:
wpcom_site(string, optional): Site ID or URL to get post from (if not provided, uses current site)post_id(integer, min: 1, optional): Post ID to retrievepost_url(string, optional): Post URL to retrieveinclude_comments(boolean, default: false): Include post comments in response- Note: Either
post_idorpost_urlmust be provided
Outputs:
post(object): Complete post data with ID, title, content, excerpt, status, type, dates, permalink, author info, categories, tags, optional comments arraysite_info(object): Blog ID, site name, site URL
Site Comments Search (wpcom-mcp-site-comments-search)
Description: Search comments within a WordPress.com site with filtering and threading support
Inputs:
wpcom_site(string, required): WordPress.com site ID or URL to operate onsearch(string, optional): Search comment content and author informationstatus(enum: approved/pending/spam/trash/all, default: approved): Comment status filterpost_id(integer, optional): Filter comments by specific post IDauthor(integer, optional): Author ID to filter comments bycomments_per_page(integer, min: 1, max: 50, default: 10): Number of comments to returnpaged(integer, min: 1, default: 1): Page number for paginationorder(enum: ASC/DESC, default: DESC): Sort orderorderby(enum: date/author/post, default: date): Sort fielddate_after(string, date format, optional): Filter comments after this datedate_before(string, date format, optional): Filter comments before this datemeta_key(string, optional): Custom field key to filter bymeta_value(string, optional): Custom field value to filter by
Outputs:
comments(array): Comment objects with comment_ID, content, date, author info, parent, post_ID, status, type, post_titlefound_comments(integer): Total comments foundmax_pages(integer): Maximum pages availablecurrent_page(integer): Current page numbersite_info(object): Blog ID, site name, site URL
Site Plugins (wpcom-mcp-site-plugins)
Description: Get installed plugins information for a WordPress.com site including status, details, and update availability
Inputs:
wpcom_site(string, required): WordPress.com site ID or URLstatus(enum: active/inactive/all, default: all): Filter plugins by statusinclude_updates(boolean, default: true): Include update availability information
Outputs:
plugins(array): Plugin details with name, plugin_uri, version, description, author info, text_domain, domain_path, network status, requirements, status, plugin_file, activation permissions, update infosummary(object): Total/active/inactive plugins, updates available count
Site Settings (wpcom-mcp-site-settings)
Description: Get comprehensive site settings and configuration including general settings, privacy options, comment settings, permalink structure, and timezone configurations
Inputs:
wpcom_site(string, required): WordPress.com site ID or URL to get settings forinclude_general(boolean, default: true): Include general settings (blogname, blogdescription, admin_email, etc.)include_writing(boolean, default: false): Include writing settings (default category, post format)include_reading(boolean, default: false): Include reading settings (homepage, posts per page, blog_public)include_discussion(boolean, default: false): Include discussion settings (comments, pingbacks, moderation)include_media(boolean, default: false): Include media settings (image sizes, upload paths)include_permalinks(boolean, default: false): Include permalink settings (structure, category/tag base)include_privacy(boolean, default: false): Include privacy settings (policy page, data handling)
Outputs:
success(boolean): Operation success statussite_info(object): Blog ID, site URL, site name, privacy statusgeneral(object, optional): Admin email, blog name/description, comment registration, date/time formats, GMT offset, timezone, user registration settingswriting(object, optional): Default categories, email/link categories, app/xmlrpc settings, balance tags, smiliesreading(object, optional): Blog charset, compression, front page settings, posts per page/RSS, RSS language/excerpt settingsdiscussion(object, optional): Avatar settings, comment moderation, notification settings, threading, pagination, approval requirementsmedia(object, optional): Embed settings, image size dimensions (thumbnail, medium, large), crop settingspermalinks(object, optional): Permalink structure, category base, tag baseprivacy(object, optional): Blog public setting and visibility options
Site Statistics (wpcom-mcp-site-statistics)
Description: Get comprehensive site statistics including views, visitors, top content, referrers, and performance metrics
Inputs:
wpcom_site(string, required): WordPress.com site ID or URLperiod(enum: day/week/month/year, default: day): Time period for statisticsnum_periods(integer, min: 1, max: 365, default: 30): Number of periods to includeinclude_views(boolean, default: true): Include views and visitors datainclude_top_content(boolean, default: true): Include top posts and pagesinclude_referrers(boolean, default: false): Include top referrers datainclude_geographic(boolean, default: false): Include geographic datainclude_devices(boolean, default: false): Include device and browser breakdowninclude_all_time(boolean, default: false): Include all-time statisticsmax_items(integer, min: 1, max: 50, default: 10): Maximum items for lists
Outputs:
success(boolean): Operation success statussite_info(object): Blog ID, site URL, site nameperiod_stats(object): Period, num_periods, start/end datesviews_data(object, optional): Total views/visitors, daily average, trend, daily data arraytop_content(object, optional): Top posts/pages arrays with title, URL, views, post_idreferrers(array, optional): Referrer and views datageographic(object, optional): Top countries/cities with viewsdevices(object, optional): Device types and browsers breakdownall_time(object, optional): Total stats, first post date, site age
Site Resources (wpcom-mcp-user-sites-resource)
Type: Resource Description: Resource representation of user sites data
Inputs: None Outputs: Returns MCP TextResourceContents format with sites data in JSON format, including mimeType and URI metadata
Last updated: February 19, 2026