Skip to content

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 URL
  • action (enum: list/describe/execute, required): The action to perform
  • operation (string, required for describe/execute): The operation name in resource.action format (e.g., posts.create, tags.delete)
  • params (object, required for execute): Operation-specific parameters. Must include user_confirmed for 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 text
  • content (object): Post content — use { "raw": "..." } for block markup or HTML
  • excerpt (object, optional): Post excerpt — use { "raw": "..." }
  • status (enum: publish/future/draft/pending/private, default: draft): Post status
  • author (integer, optional): Author user ID
  • featured_media (integer, optional): Featured image media ID
  • categories (array of integers, optional): Category term IDs
  • tags (array of integers, optional): Tag term IDs
  • date (string, optional): Publish date in ISO 8601 format, in the site’s timezone
  • slug (string, optional): URL-safe identifier for the post
  • comment_status (enum: open/closed, optional): Whether comments are allowed
  • meta (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 ID
  • status (string): Post status
  • type (string): Post type
  • date (string): Creation date
  • modified (string): Last modified date
  • link (string): Permalink URL
  • author (integer): Author ID
  • categories (array): Assigned category IDs
  • tags (array): Assigned tag IDs
  • featured_media (integer): Featured media ID
  • title (object): Rendered title
  • content (object): Rendered content
  • excerpt (object): Rendered excerpt
  • meta (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.create are accepted and optional — only supplied fields are changed.

Outputs:

  • Same as posts.create. Check _content_warnings for 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 ID
  • status (string): Updated status (trash)
  • type (string): Post type
  • date (string): Original creation date
  • link (string): Previous permalink
  • title (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 HTML
  • excerpt (object, optional): Page excerpt
  • status (enum: publish/future/draft/pending/private, default: draft): Page status
  • author (integer, optional): Author user ID
  • featured_media (integer, optional): Featured image media ID
  • parent (integer, optional): Parent page ID for hierarchical structure
  • menu_order (integer, optional): Page ordering value
  • template (string, optional): Theme template file to use for display
  • slug (string, optional): URL-safe identifier
  • comment_status (enum: open/closed, optional): Whether comments are allowed
  • meta (object, optional): Meta fields including SEO options

Outputs:

  • id (integer): The created page’s ID
  • status (string): Page status
  • type (string): Content type
  • date (string): Creation date
  • modified (string): Last modified date
  • link (string): Permalink URL
  • author (integer): Author ID
  • parent (integer): Parent page ID
  • menu_order (integer): Page order
  • template (string): Template file
  • featured_media (integer): Featured media ID
  • title (object): Rendered title
  • content (object): Rendered content
  • excerpt (object): Rendered excerpt
  • meta (object): Meta field values
  • _content_warnings (array, if present): Blocks or HTML elements WordPress stripped during save

💡 Tip: Use patterns.listpatterns.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.create are accepted and optional — only supplied fields are changed.

Outputs:

  • Same as pages.create. Check _content_warnings for 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 ID
  • status (string): Updated status (trash)
  • type (string): Content type
  • date (string): Original creation date
  • link (string): Previous permalink
  • title (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 on
  • content (object, required): Comment content — use { "raw": "..." }
  • author (integer, optional): Comment author user ID
  • author_name (string, optional): Display name for the comment author
  • author_email (string, optional): Email address for the comment author
  • author_url (string, optional): URL for the comment author
  • parent (integer, optional): Parent comment ID for threaded replies
  • status (string, optional): Comment status (approved or hold)

Outputs:

  • id (integer): The created comment’s ID
  • post (integer): Associated post ID
  • parent (integer): Parent comment ID (0 if top-level)
  • author_name (string): Comment author display name
  • author_email (string): Comment author email
  • date (string): Comment date
  • status (string): Comment status
  • type (string): Comment type
  • link (string): Comment permalink
  • content (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 update
  • content (object, optional): Updated comment content
  • author_name (string, optional): Updated author display name
  • author_email (string, optional): Updated author email
  • author_url (string, optional): Updated author URL
  • status (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 ID
  • post (integer): Associated post ID
  • author_name (string): Comment author
  • date (string): Comment date
  • status (string): Updated status
  • content (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 update
  • title (object, optional): Updated media title
  • caption (object, optional): Updated caption — use { "raw": "..." }
  • alt_text (string, optional): Alternative text for accessibility
  • description (object, optional): Updated description — use { "raw": "..." }
  • post (integer, optional): Associated parent post ID

Outputs:

  • id (integer): Media item ID
  • date (string): Upload date
  • status (string): Media status
  • type (string): Content type
  • mime_type (string): MIME type (e.g., image/jpeg)
  • source_url (string): Direct URL to the file
  • alt_text (string): Alternative text
  • media_type (string): Media type (image/video/audio/application)
  • media_details (object): Dimensions, file size, and available image sizes with URLs
  • author (integer): Uploader’s user ID
  • post (integer): Parent post ID
  • title (object): Rendered title
  • caption (object): Rendered caption
  • description (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 ID
  • status (string): Updated status
  • type (string): Content type
  • mime_type (string): MIME type
  • source_url (string): Direct URL to the file
  • title (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 name
  • slug (string, optional): URL-safe identifier (auto-generated from name if omitted)
  • description (string, optional): Category description
  • parent (integer, optional): Parent category ID for hierarchy

Outputs:

  • id (integer): The created category’s ID
  • name (string): Category name
  • slug (string): URL slug
  • description (string): Category description
  • parent (integer): Parent category ID (0 if top-level)
  • count (integer): Number of posts in this category
  • link (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 update
  • name (string, optional): Updated category name
  • slug (string, optional): Updated URL slug
  • description (string, optional): Updated description
  • parent (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 delete
  • force (boolean, required): Must be true — categories do not support trashing

Outputs:

  • id (integer): The deleted category’s ID
  • name (string): Category name
  • slug (string): URL slug
  • description (string): Category description
  • parent (integer): Parent category ID
  • count (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 name
  • slug (string, optional): URL-safe identifier (auto-generated from name if omitted)
  • description (string, optional): Tag description

Outputs:

  • id (integer): The created tag’s ID
  • name (string): Tag name
  • slug (string): URL slug
  • description (string): Tag description
  • count (integer): Number of posts with this tag
  • link (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 update
  • name (string, optional): Updated tag name
  • slug (string, optional): Updated URL slug
  • description (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 delete
  • force (boolean, required): Must be true — tags do not support trashing

Outputs:

  • id (integer): The deleted tag’s ID
  • name (string): Tag name
  • slug (string): URL slug
  • description (string): Tag description
  • count (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:

BehaviorCreateUpdateDelete (trash)Delete (permanent)
Confirmation required
ReversibleN/APartially (previous values lost)✅ Within 30 daysPermanent
Default statusdraftNo changetrashRemoved entirely
Applies toPosts, pages, comments, categories, tagsPosts, pages, comments, media, categories, tagsPosts, pages, comments, mediaCategories, 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.activetheme.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 URL
  • action (enum: list/describe/get, required): The action to perform
  • operation (string, required for describe/get): The operation name in resource.action format (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 identifier
  • name (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 omitted
  • include_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 with name, slug, and color (hex value)
  • default_colors (array): Default/core color palette entries with name, slug, and color
  • gradients (array): Available gradient presets with name, slug, and gradient (CSS value)
  • font_sizes (array): Font size presets with name, slug, size (CSS value), and optional fluid settings
  • font_families (array): Font family presets with name, slug, and fontFamily (CSS font stack)
  • spacing (object): Spacing scale configuration and available spacing presets
  • content_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 omitted
  • include_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 settings
  • element_styles (object): Per-element style rules for HTML elements (e.g., headings, links, buttons, captions), including typography, color, and text decoration
  • spacing (object): Global spacing styles — padding, margin, and block gap values
  • color (object): Global color styles — background, text, and gradient defaults
  • typography (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 name
  • description (string): Block description
  • category (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 block
  • styles (array): Available style variations with name and label (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 pagination
  • per_page (integer, min: 1, max: 100, default: 10): Number of sites per page
  • filters (object, optional):
  • search (string): Search in site names and URLs
  • status (enum: active/suspended/archived): Filter by site status
  • is_private (boolean): Filter by privacy setting
  • has_custom_domain (boolean): Filter by custom domain presence
  • sort (object, optional):
  • field (enum: name/url/created/updated, default: updated): Field to sort by
  • order (enum: asc/desc, default: desc): Sort order
  • include_metrics (boolean, default: false): Include site metrics in response

Outputs:

  • success (boolean): Operation success status
  • sites (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_page
  • summary (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 perform
  • achievement_type (enum: all/achievements/feats, default: all): Type of achievements to retrieve
  • limit (integer, min: 1, max: 100, default: 20): Number of items to return
  • blog_id (integer, optional): Site-specific achievements

Outputs:

  • success (boolean): Operation success status
  • achievements (array): Achievement objects with id, name, badge_type, level, achieved_at, blog_id, description
  • feats (array): Feat objects with id, name, level, best_level, achieved_at, blog_id
  • progress (object): total_achievements, total_feats, highest_level, recent_activity
  • trophy_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 from
  • page (integer, min: 1, default: 1): Page number for pagination
  • per_page (integer, min: 1, max: 50, default: 10): Number of users per page
  • role (string, optional): Filter by user role (admin, editor, author, etc.)
  • search (string, optional): Search in user names, emails, display names
  • status (enum: active/inactive, optional): Filter by user status
  • registration_after (string, date format, optional): Filter by registration date
  • registration_before (string, date format, optional): Filter by registration date
  • orderby (enum: registered/display_name/email/login, default: registered): Sort field
  • order (enum: asc/desc, default: desc): Sort direction
  • include_contact_info (boolean, default: false): Include email/contact information
  • include_activity_metrics (boolean, default: false): Include last login, post counts

Outputs:

  • success (boolean): Operation success status
  • users (array): User details with user_id, login, display_name, roles, capabilities, registration_date, optional email/last_login/post_count/comment_count
  • pagination (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 retrieve
  • include_preferences (boolean, default: false): Include user preferences and settings
  • include_stats (boolean, default: false): Include basic account statistics
  • include_account (boolean, default: false): Include account and subscription information
  • include_social (boolean, default: false): Include social and community engagement data
  • include_activity (boolean, default: false): Include activity and engagement metrics

Outputs:

  • success (boolean): Operation success status
  • profile (object): Basic user profile (id, username, email, display_name, avatar_url, locale, timezone)
  • preferences (object, optional): Language, color_scheme, admin_interface, notifications, privacy_settings
  • stats (object, optional): Total sites/posts/pages/comments, member_since, last_active
  • account (object, optional): Plan, subscriptions, storage, bandwidth, is_paying_customer
  • social (object, optional): Following/followers counts, reader subscriptions, likes, comments
  • activity (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 perform
  • connection_id (integer, optional): Connection ID for get/test actions
  • service (string, optional): Filter connections by service name
  • status (enum: active/inactive/error, optional): Filter connections by status
  • force_refresh (boolean, default: false): Force refresh connection data from external services
  • include_capabilities (boolean, default: false): Include detailed capability information

Outputs:

  • success (boolean): Operation success status
  • connections (array): Connection objects with id, service, external_id/name/display, status, connected_date, last_tested, capabilities, health info
  • total (integer): Total connections count
  • summary (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 perform
  • channel (enum: email/timeline/push/all, optional): Notification channel to query
  • blog_id (integer, optional): Site-specific settings
  • setting_type (enum: blogs/other/wpcom, optional): Type of notification settings
  • device_id (string, optional): Device ID for push notifications

Outputs:

  • success (boolean): Operation success status
  • notification_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_seen
  • summary (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 perform
  • limit (integer, min: 1, max: 100, default: 20): Number of notifications to return
  • unread_only (boolean, default: false): Return only unread notifications
  • type (enum: like/follow/comment/mention/achievement/store_order/reblog/trophy, optional): Filter by notification type
  • since (integer, optional): Get notifications after this timestamp
  • before (integer, optional): Get notifications before this timestamp

Outputs:

  • success (boolean): Operation success status
  • notifications (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 breakdown
  • total (integer): Total notifications
  • has_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 perform
  • limit (integer, min: 1, max: 100, default: 10): Number of items to return for lists
  • days (integer, min: 1, max: 90, default: 30): Number of days for login history

Outputs:

  • success (boolean): Operation success status
  • security_status (object): Two factor enabled, enhanced security, application passwords count, active sessions, last login, account age, security score
  • two_factor (object): Enabled status, methods, backup codes count, enhanced security
  • sessions (array): Session details with session_id, ip_address, user_agent, location, last_seen, is_current
  • app_passwords (array): Application password details with uuid, app_id, name, created/last_used dates, last_ip
  • login_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 perform
  • subscription_id (integer, optional): Subscription ID for detailed queries
  • limit (integer, min: 1, max: 100, default: 10): Number of items to return
  • status (enum: active/cancelled/expired/all, default: active): Filter subscriptions by status

Outputs:

  • success (boolean): Operation success status
  • subscriptions (array): Subscription details with id, product_name/slug, site_id/url, status, cost/currency, billing_period, payment dates, auto_renew, features
  • billing_history (array): Transaction history with transaction_id, date, amount/currency, description, status, payment_method, receipt_url
  • payment_methods (array): Payment method details with id, type, last4, brand, expiry dates, is_default
  • usage_data (object): Storage/bandwidth used/limits, sites count/limit
  • summary (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 excerpt
  • post_type (enum: post/page/attachment/any, default: post): Post type to search
  • posts_per_page (integer, min: 1, max: 50, default: 10): Number of posts to return
  • paged (integer, min: 1, default: 1): Page number for pagination
  • order (enum: ASC/DESC, default: DESC): Sort order
  • orderby (enum: date/title/menu_order/modified/ID/relevance, default: date): Sort field
  • category (string, optional): Category slug or ID to filter posts
  • tag (string, optional): Tag slug or ID to filter posts
  • post_status (enum: publish/private/draft/pending/future, default: publish): Post status filter
  • author (integer, optional): Author ID to filter posts by
  • meta_key (string, optional): Custom field key to filter by
  • meta_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, tags
  • found_posts (integer): Total posts found
  • max_pages (integer): Maximum pages available
  • current_page (integer): Current page number
  • site_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 retrieve
  • post_url (string, optional): Post URL to retrieve
  • include_comments (boolean, default: false): Include post comments in response
  • Note: Either post_id or post_url must be provided

Outputs:

  • post (object): Complete post data with ID, title, content, excerpt, status, type, dates, permalink, author info, categories, tags, optional comments array
  • site_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 on
  • search (string, optional): Search comment content and author information
  • status (enum: approved/pending/spam/trash/all, default: approved): Comment status filter
  • post_id (integer, optional): Filter comments by specific post ID
  • author (integer, optional): Author ID to filter comments by
  • comments_per_page (integer, min: 1, max: 50, default: 10): Number of comments to return
  • paged (integer, min: 1, default: 1): Page number for pagination
  • order (enum: ASC/DESC, default: DESC): Sort order
  • orderby (enum: date/author/post, default: date): Sort field
  • date_after (string, date format, optional): Filter comments after this date
  • date_before (string, date format, optional): Filter comments before this date
  • meta_key (string, optional): Custom field key to filter by
  • meta_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_title
  • found_comments (integer): Total comments found
  • max_pages (integer): Maximum pages available
  • current_page (integer): Current page number
  • site_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 URL
  • status (enum: active/inactive/all, default: all): Filter plugins by status
  • include_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 info
  • summary (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 for
  • include_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 status
  • site_info (object): Blog ID, site URL, site name, privacy status
  • general (object, optional): Admin email, blog name/description, comment registration, date/time formats, GMT offset, timezone, user registration settings
  • writing (object, optional): Default categories, email/link categories, app/xmlrpc settings, balance tags, smilies
  • reading (object, optional): Blog charset, compression, front page settings, posts per page/RSS, RSS language/excerpt settings
  • discussion (object, optional): Avatar settings, comment moderation, notification settings, threading, pagination, approval requirements
  • media (object, optional): Embed settings, image size dimensions (thumbnail, medium, large), crop settings
  • permalinks (object, optional): Permalink structure, category base, tag base
  • privacy (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 URL
  • period (enum: day/week/month/year, default: day): Time period for statistics
  • num_periods (integer, min: 1, max: 365, default: 30): Number of periods to include
  • include_views (boolean, default: true): Include views and visitors data
  • include_top_content (boolean, default: true): Include top posts and pages
  • include_referrers (boolean, default: false): Include top referrers data
  • include_geographic (boolean, default: false): Include geographic data
  • include_devices (boolean, default: false): Include device and browser breakdown
  • include_all_time (boolean, default: false): Include all-time statistics
  • max_items (integer, min: 1, max: 50, default: 10): Maximum items for lists

Outputs:

  • success (boolean): Operation success status
  • site_info (object): Blog ID, site URL, site name
  • period_stats (object): Period, num_periods, start/end dates
  • views_data (object, optional): Total views/visitors, daily average, trend, daily data array
  • top_content (object, optional): Top posts/pages arrays with title, URL, views, post_id
  • referrers (array, optional): Referrer and views data
  • geographic (object, optional): Top countries/cities with views
  • devices (object, optional): Device types and browsers breakdown
  • all_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