@adsim/wordpress-mcp-server 4.6.0 → 5.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +18 -0
- package/README.md +867 -499
- package/companion/mcp-diagnostics.php +1184 -0
- package/dxt/manifest.json +715 -98
- package/index.js +166 -4786
- package/package.json +14 -6
- package/src/data/plugin-performance-data.json +59 -0
- package/src/plugins/adapters/acf/acfAdapter.js +55 -3
- package/src/shared/api.js +79 -0
- package/src/shared/audit.js +39 -0
- package/src/shared/context.js +15 -0
- package/src/shared/governance.js +98 -0
- package/src/shared/utils.js +148 -0
- package/src/tools/comments.js +50 -0
- package/src/tools/content.js +395 -0
- package/src/tools/core.js +114 -0
- package/src/tools/editorial.js +634 -0
- package/src/tools/fse.js +370 -0
- package/src/tools/health.js +160 -0
- package/src/tools/index.js +96 -0
- package/src/tools/intelligence.js +2082 -0
- package/src/tools/links.js +118 -0
- package/src/tools/media.js +71 -0
- package/src/tools/performance.js +219 -0
- package/src/tools/plugins.js +368 -0
- package/src/tools/schema.js +417 -0
- package/src/tools/security.js +590 -0
- package/src/tools/seo.js +1633 -0
- package/src/tools/taxonomy.js +115 -0
- package/src/tools/users.js +188 -0
- package/src/tools/woocommerce.js +1008 -0
- package/src/tools/workflow.js +409 -0
- package/src/transport/http.js +39 -0
- package/tests/unit/helpers/pagination.test.js +43 -0
- package/tests/unit/plugins/acf/acfAdapter.test.js +43 -5
- package/tests/unit/tools/bulkUpdate.test.js +188 -0
- package/tests/unit/tools/diagnostics.test.js +397 -0
- package/tests/unit/tools/dynamicFiltering.test.js +100 -8
- package/tests/unit/tools/editorialIntelligence.test.js +817 -0
- package/tests/unit/tools/fse.test.js +548 -0
- package/tests/unit/tools/multilingual.test.js +653 -0
- package/tests/unit/tools/performance.test.js +351 -0
- package/tests/unit/tools/postMeta.test.js +105 -0
- package/tests/unit/tools/runWorkflow.test.js +150 -0
- package/tests/unit/tools/schema.test.js +477 -0
- package/tests/unit/tools/security.test.js +695 -0
- package/tests/unit/tools/site.test.js +1 -1
- package/tests/unit/tools/users.crud.test.js +399 -0
- package/tests/unit/tools/validateBlocks.test.js +186 -0
- package/tests/unit/tools/visualStaging.test.js +271 -0
- package/tests/unit/tools/woocommerce.advanced.test.js +679 -0
package/dxt/manifest.json
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "wordpress-mcp-server",
|
|
4
4
|
"display_name": "WordPress MCP Server",
|
|
5
|
-
"version": "4.
|
|
6
|
-
"description": "
|
|
7
|
-
"long_description": "
|
|
5
|
+
"version": "4.14.0",
|
|
6
|
+
"description": "Enterprise WordPress MCP server — 173 tools for content, SEO, schema, editorial intelligence, multilingual, security, performance, WooCommerce, FSE, and more. Governance controls, audit trail, multi-site. No WordPress plugin required.",
|
|
7
|
+
"long_description": "Enterprise WordPress MCP server with 173 tools across 18 categories — all from Claude Desktop or Claude Code.\n\nNo WordPress plugin required. Uses the built-in WordPress REST API with Application Passwords for secure authentication.\n\nFeatures:\n- Content management: CRUD for posts, pages, media, taxonomies, comments, users\n- SEO: auto-detects Yoast, RankMath, SEOPress, AIOSEO. 10-tool audit suite + 3 metadata tools\n- Schema.org Intelligence: generate, inject, validate JSON-LD (Article, FAQ, HowTo, LocalBusiness, Breadcrumb)\n- Content Intelligence: 16 analysis tools (readability, TF-IDF duplicates, entities, structure, link maps)\n- Editorial Intelligence: 6 tools (content updates, author consistency, editorial calendar, pillar gaps, link equity, clusters)\n- Multilingual (EU): WPML, Polylang Pro/Free, TranslatePress. Translation coverage, SEO sync\n- Performance & Core Web Vitals: PageSpeed Insights, render-blocking, image optimization, caching, database bloat\n- Security Audit: user risks, file permissions, plugin vulnerabilities (WPScan), SSL, login security\n- Full Site Editing: 26 tools for templates, template parts, global styles, patterns, navigation, widgets\n- Plugin Intelligence: rendered head analysis, schema validation, SEO scoring (RankMath/Yoast)\n- Plugin Layer: ACF and Elementor adapters, auto-detected via REST namespace discovery\n- WooCommerce: 20 tools (read, intelligence, advanced analytics, write with price guardrail)\n- Enterprise controls: read-only, draft-only, disable-delete, require-approval, confirm-destructive\n- WP_TOOL_CATEGORIES: load only the categories you need (~4-9k tokens vs ~20k)\n- Multi-site: target multiple WordPress installations with per-target controls\n- HTTP Streamable transport + stdio, audit trail, rate limiting",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "AdSim",
|
|
10
10
|
"email": "georges@adsim.be",
|
|
@@ -34,99 +34,702 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"tools": [
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
{
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
{
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
{
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
{
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
{
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
{
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
{
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
{
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
{
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
{
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
{
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
{
|
|
37
|
+
{
|
|
38
|
+
"name": "wp_list_posts",
|
|
39
|
+
"description": "browse/filter posts by status, category, tag, author, or search"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "wp_get_post",
|
|
43
|
+
"description": "read a single post with full content and meta"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "wp_create_post",
|
|
47
|
+
"description": "create a post (defaults to draft)"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "wp_update_post",
|
|
51
|
+
"description": "modify any post field — only provided fields change"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "wp_delete_post",
|
|
55
|
+
"description": "trash or permanently delete a post"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "wp_search",
|
|
59
|
+
"description": "full-text search across all content types"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "wp_submit_for_review",
|
|
63
|
+
"description": "transition a draft post to pending status for editorial review"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "wp_approve_post",
|
|
67
|
+
"description": "transition a pending post to published (editor/admin action)"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "wp_reject_post",
|
|
71
|
+
"description": "return a pending post to draft with a mandatory rejection reason"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "wp_list_pages",
|
|
75
|
+
"description": "browse pages with hierarchy and templates"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "wp_get_page",
|
|
79
|
+
"description": "read a single page with content and template"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "wp_create_page",
|
|
83
|
+
"description": "create a page (defaults to draft)"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "wp_update_page",
|
|
87
|
+
"description": "modify any page field"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "wp_list_media",
|
|
91
|
+
"description": "browse media library by type (image/video/audio)"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "wp_get_media",
|
|
95
|
+
"description": "get full media details with all available sizes"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "wp_upload_media",
|
|
99
|
+
"description": "upload a file from a public URL to the media library"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "wp_list_categories",
|
|
103
|
+
"description": "list categories with hierarchy, post count, and descriptions"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "wp_list_tags",
|
|
107
|
+
"description": "list tags with post count"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "wp_create_taxonomy_term",
|
|
111
|
+
"description": "create a new category or tag"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "wp_list_comments",
|
|
115
|
+
"description": "list comments filtered by post or status (approved/hold/spam)"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "wp_create_comment",
|
|
119
|
+
"description": "post a comment or reply on any post"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "wp_list_post_types",
|
|
123
|
+
"description": "discover all registered post types including custom ones (products, portfolio, events)"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"name": "wp_list_custom_posts",
|
|
127
|
+
"description": "list any custom post type (products, portfolio, events)"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "wp_list_users",
|
|
131
|
+
"description": "list site users with roles"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "wp_get_user",
|
|
135
|
+
"description": "get a user profile by ID"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "wp_create_user",
|
|
139
|
+
"description": "create a new WordPress user"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "wp_update_user",
|
|
143
|
+
"description": "update a user profile"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "wp_delete_user",
|
|
147
|
+
"description": "delete a user permanently"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "wp_list_user_roles",
|
|
151
|
+
"description": "list all available WordPress user roles with their capabilities"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "wp_get_user_capabilities",
|
|
155
|
+
"description": "get the capabilities of a specific user (can_publish, manage_options, etc.)"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "wp_reset_user_password",
|
|
159
|
+
"description": "trigger a password reset email for a user"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "wp_list_user_application_passwords",
|
|
163
|
+
"description": "list application passwords for a user"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"name": "wp_revoke_application_password",
|
|
167
|
+
"description": "revoke (delete) an application password by UUID"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "wp_set_target",
|
|
171
|
+
"description": "switch active WordPress site in multi-target mode"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"name": "wp_site_info",
|
|
175
|
+
"description": "discover site config, user, post types, governance flags, and available targets"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "wp_get_site_options",
|
|
179
|
+
"description": "read WordPress site settings (title, tagline, language, timezone, etc.) via /wp/v2/settings"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "wp_get_seo_meta",
|
|
183
|
+
"description": "read SEO title, description, focus keyword, canonical, robots, OG for one post"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"name": "wp_update_seo_meta",
|
|
187
|
+
"description": "update SEO title, description, focus keyword, canonical, or robots"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "wp_audit_seo",
|
|
191
|
+
"description": "quick bulk SEO scoring (0-100) across posts or pages"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name": "wp_list_plugins",
|
|
195
|
+
"description": "list installed plugins with status and version"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"name": "wp_activate_plugin",
|
|
199
|
+
"description": "activate a plugin"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "wp_deactivate_plugin",
|
|
203
|
+
"description": "deactivate a plugin"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"name": "wp_list_themes",
|
|
207
|
+
"description": "list installed themes with active theme detection"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "wp_get_theme",
|
|
211
|
+
"description": "get theme details by stylesheet slug"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "wp_list_revisions",
|
|
215
|
+
"description": "list revisions of a post or page (metadata only)"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"name": "wp_get_revision",
|
|
219
|
+
"description": "read a specific revision with full content"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "wp_restore_revision",
|
|
223
|
+
"description": "restore a post to a previous revision"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"name": "wp_delete_revision",
|
|
227
|
+
"description": "permanently delete a revision"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "wp_analyze_links",
|
|
231
|
+
"description": "audit all internal and external links in a single post via HEAD requests"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "wp_suggest_internal_links",
|
|
235
|
+
"description": "get scored internal link suggestions for a post based on keyword relevance, categories, and freshness"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "wc_list_products",
|
|
239
|
+
"description": "browse WooCommerce products"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"name": "wc_get_product",
|
|
243
|
+
"description": "get full product details including variations summary"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "wc_list_orders",
|
|
247
|
+
"description": "browse WooCommerce orders"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"name": "wc_get_order",
|
|
251
|
+
"description": "get order details with line items, shipping, billing, and payment info"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "wc_list_customers",
|
|
255
|
+
"description": "list WooCommerce customers with search and role filtering"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"name": "wc_price_guardrail",
|
|
259
|
+
"description": "Use BEFORE changing a product price"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "wc_inventory_alert",
|
|
263
|
+
"description": "identify low-stock and out-of-stock products below a threshold, sorted by urgency"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "wc_order_intelligence",
|
|
267
|
+
"description": "analyze a customer's purchase history: lifetime value, average order, favorite products, frequency"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"name": "wc_seo_product_audit",
|
|
271
|
+
"description": "audit WooCommerce product listings for SEO issues (missing descriptions, images, alt text, generic slugs)"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"name": "wc_suggest_product_links",
|
|
275
|
+
"description": "suggest WooCommerce products to link from a blog post based on keyword relevance"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"name": "wc_audit_product_seo",
|
|
279
|
+
"description": "audit WooCommerce product SEO: title length, description, slug quality, image alt, schema presence"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"name": "wc_find_abandoned_carts_pattern",
|
|
283
|
+
"description": "analyze abandoned cart patterns: hourly/daily trends, top abandoned products, estimated revenue loss"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "wc_audit_checkout_friction",
|
|
287
|
+
"description": "audit checkout friction: guest checkout, required fields count, coupon fields, multi-step, post-purchase redirect"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"name": "wc_get_product_performance",
|
|
291
|
+
"description": "get product performance metrics with period comparison: units sold, revenue, refund rate, trend direction"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"name": "wc_audit_stock_alerts",
|
|
295
|
+
"description": "audit stock levels: out-of-stock, low-stock with last sale date"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"name": "wc_find_duplicate_products",
|
|
299
|
+
"description": "find duplicate products by SKU, title similarity (Levenshtein), or slug similarity"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "wc_audit_pricing_consistency",
|
|
303
|
+
"description": "find pricing inconsistencies: sale >= regular, empty prices, expired sales, suspicious discounts"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"name": "wc_update_product",
|
|
307
|
+
"description": "update product fields (title, description, price, stock, status)"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"name": "wc_update_stock",
|
|
311
|
+
"description": "update stock quantity of a product or variation"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"name": "wc_update_order_status",
|
|
315
|
+
"description": "transition order status (e.g"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"name": "wp_audit_media_seo",
|
|
319
|
+
"description": "checking image SEO"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"name": "wp_find_orphan_pages",
|
|
323
|
+
"description": "find posts with zero inbound internal links, sorted by word count"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"name": "wp_audit_heading_structure",
|
|
327
|
+
"description": "check H1-H6 hierarchy in a single post"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"name": "wp_find_thin_content",
|
|
331
|
+
"description": "surface short/low-quality posts below a word count threshold"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"name": "wp_audit_canonicals",
|
|
335
|
+
"description": "validate canonical URLs across posts/pages"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"name": "wp_analyze_eeat_signals",
|
|
339
|
+
"description": "score E-E-A-T per post (0-100): author bio, dates, citations, word count, structured data"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"name": "wp_find_broken_internal_links",
|
|
343
|
+
"description": "check internal links via HEAD requests"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "wp_find_keyword_cannibalization",
|
|
347
|
+
"description": "detect posts competing on the same focus keyword"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"name": "wp_audit_taxonomies",
|
|
351
|
+
"description": "detect taxonomy bloat: empty/single-post terms, near-duplicates, missing descriptions"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"name": "wp_audit_outbound_links",
|
|
355
|
+
"description": "analyze external link profile per post"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "wp_get_content_brief",
|
|
359
|
+
"description": "get a compact content brief in 1 call: title, SEO meta, headings, word count, links, categories"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"name": "wp_extract_post_outline",
|
|
363
|
+
"description": "extract H1-H4 outline from N posts in a category as a reference template for new content"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"name": "wp_audit_readability",
|
|
367
|
+
"description": "score text readability (Flesch-Kincaid adapted)"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "wp_audit_update_frequency",
|
|
371
|
+
"description": "find stale posts not updated since N days, cross-referenced with SEO score"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "wp_build_link_map",
|
|
375
|
+
"description": "generate full internal link matrix with simplified PageRank scores per post"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"name": "wp_audit_anchor_texts",
|
|
379
|
+
"description": "check internal link anchor diversity"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "wp_audit_schema_markup",
|
|
383
|
+
"description": "detect and validate JSON-LD in post HTML content (Article, FAQ, HowTo, LocalBusiness)"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"name": "wp_audit_content_structure",
|
|
387
|
+
"description": "analyze post structure: intro/body/conclusion ratio, FAQ presence, TOC, lists, tables"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"name": "wp_find_duplicate_content",
|
|
391
|
+
"description": "detect near-duplicate posts via TF-IDF cosine similarity"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"name": "wp_find_content_gaps",
|
|
395
|
+
"description": "find under-represented taxonomy terms (< N posts) as content creation opportunities"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"name": "wp_extract_faq_blocks",
|
|
399
|
+
"description": "inventory all FAQ blocks (Gutenberg + schema JSON-LD) across the corpus"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"name": "wp_audit_cta_presence",
|
|
403
|
+
"description": "detect presence/absence of CTAs (contact links, forms, buttons) per post"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"name": "wp_extract_entities",
|
|
407
|
+
"description": "extract named entities (brands, places, people, organizations) from post content"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "wp_get_publishing_velocity",
|
|
411
|
+
"description": "measure publication cadence per author and category over 30/90/180 days"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"name": "wp_compare_revisions_diff",
|
|
415
|
+
"description": "diff two revisions and measure update amplitude"
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"name": "wp_list_posts_by_word_count",
|
|
419
|
+
"description": "rank posts by length with auto-segmentation (<500, 500-1k, 1k-2k, 2k+)"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"name": "wp_get_rendered_head",
|
|
423
|
+
"description": "fetch the real <head> HTML Google sees via RankMath/Yoast headless endpoint"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "wp_audit_rendered_seo",
|
|
427
|
+
"description": "bulk rendered-vs-stored SEO divergence detection with per-post scoring"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"name": "wp_get_pillar_content",
|
|
431
|
+
"description": "read or set RankMath cornerstone/pillar flag"
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"name": "wp_audit_schema_plugins",
|
|
435
|
+
"description": "validate JSON-LD from SEO plugin native fields (rank_math_schema or yoast_head_json)"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"name": "wp_get_seo_score",
|
|
439
|
+
"description": "read RankMath native SEO score (0-100)"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"name": "wp_get_twitter_meta",
|
|
443
|
+
"description": "read or update Twitter Card meta (title, description, image) for RankMath/Yoast/SEOPress"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"name": "wp_list_templates",
|
|
447
|
+
"description": "list all block templates"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"name": "wp_get_template",
|
|
451
|
+
"description": "get a single block template by ID"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "wp_create_template",
|
|
455
|
+
"description": "create a new block template"
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"name": "wp_update_template",
|
|
459
|
+
"description": "update an existing block template"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"name": "wp_delete_template",
|
|
463
|
+
"description": "delete a block template"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"name": "wp_list_template_parts",
|
|
467
|
+
"description": "list all template parts"
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"name": "wp_get_template_part",
|
|
471
|
+
"description": "get a single template part by ID"
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"name": "wp_create_template_part",
|
|
475
|
+
"description": "create a new template part"
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"name": "wp_update_template_part",
|
|
479
|
+
"description": "update an existing template part"
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"name": "wp_delete_template_part",
|
|
483
|
+
"description": "delete a template part"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"name": "wp_get_global_styles",
|
|
487
|
+
"description": "get global styles by ID"
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "wp_update_global_styles",
|
|
491
|
+
"description": "update global styles (colors, typography, spacing etc)"
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"name": "wp_get_global_styles_variations",
|
|
495
|
+
"description": "list available global style variations for a theme"
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"name": "wp_list_block_patterns",
|
|
499
|
+
"description": "list all registered block patterns"
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"name": "wp_get_block_pattern",
|
|
503
|
+
"description": "get a single block pattern by name"
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"name": "wp_create_block_pattern",
|
|
507
|
+
"description": "create a custom block pattern"
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "wp_delete_block_pattern",
|
|
511
|
+
"description": "delete a custom block pattern"
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"name": "wp_list_navigation_menus",
|
|
515
|
+
"description": "list navigation menus"
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"name": "wp_get_navigation_menu",
|
|
519
|
+
"description": "get a single navigation menu by ID"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"name": "wp_create_navigation_menu",
|
|
523
|
+
"description": "create a navigation menu"
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"name": "wp_update_navigation_menu",
|
|
527
|
+
"description": "update a navigation menu"
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"name": "wp_delete_navigation_menu",
|
|
531
|
+
"description": "delete a navigation menu"
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"name": "wp_list_widgets",
|
|
535
|
+
"description": "list all widgets"
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"name": "wp_get_widget",
|
|
539
|
+
"description": "get a single widget by ID"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"name": "wp_update_widget",
|
|
543
|
+
"description": "update a widget"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"name": "wp_delete_widget",
|
|
547
|
+
"description": "delete a widget"
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"name": "wp_get_site_health_status",
|
|
551
|
+
"description": "get overall site health score (good/recommended/critical) and issue counts by severity"
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"name": "wp_list_site_health_issues",
|
|
555
|
+
"description": "list all site health issues with label, description, severity, and type"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"name": "wp_get_site_health_info",
|
|
559
|
+
"description": "get system info: PHP version, MySQL version, memory limit, active extensions, WP constants"
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"name": "wp_get_debug_log",
|
|
563
|
+
"description": "read the last N lines of the WordPress debug.log"
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"name": "wp_get_cron_events",
|
|
567
|
+
"description": "list all scheduled WP-Cron events with hook, args, schedule, next run, and overdue status"
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"name": "wp_get_transients",
|
|
571
|
+
"description": "list database transients with key, expiration, and approximate size"
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"name": "wp_check_php_compatibility",
|
|
575
|
+
"description": "check each active plugin PHP version requirement vs current PHP"
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"name": "wp_get_active_hooks",
|
|
579
|
+
"description": "list registered WordPress actions and filters with callbacks and priorities"
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"name": "wp_audit_page_speed",
|
|
583
|
+
"description": "run a Google PageSpeed Insights audit"
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
"name": "wp_find_render_blocking_resources",
|
|
587
|
+
"description": "detect render-blocking CSS and JS in the <head> of a page"
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"name": "wp_audit_image_optimization",
|
|
591
|
+
"description": "audit media library images for optimization issues: non-WebP format, large file size (>100KB), missing alt text"
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"name": "wp_check_caching_status",
|
|
595
|
+
"description": "check if a caching plugin is active (WP Rocket, W3 Total Cache, LiteSpeed, WP Super Cache, Autoptimize) and detect cache-related HTTP headers on th..."
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"name": "wp_audit_database_bloat",
|
|
599
|
+
"description": "audit database for bloat: revision count, expired transients, auto-drafts, spam/trash, orphan postmeta, table sizes"
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"name": "wp_get_plugin_performance_impact",
|
|
603
|
+
"description": "estimate the performance impact of active plugins"
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"name": "wp_generate_schema_article",
|
|
607
|
+
"description": "generate JSON-LD Article schema for a post"
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"name": "wp_generate_schema_faq",
|
|
611
|
+
"description": "generate JSON-LD FAQPage schema from post content"
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"name": "wp_generate_schema_howto",
|
|
615
|
+
"description": "generate JSON-LD HowTo schema from post content"
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"name": "wp_generate_schema_localbusiness",
|
|
619
|
+
"description": "generate JSON-LD LocalBusiness schema"
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "wp_generate_schema_breadcrumb",
|
|
623
|
+
"description": "generate JSON-LD BreadcrumbList schema for a post or page"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"name": "wp_inject_schema",
|
|
627
|
+
"description": "inject generated JSON-LD schema into a post _custom_schema_jsonld meta field"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"name": "wp_validate_schema_live",
|
|
631
|
+
"description": "validate JSON-LD schema on a live URL"
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
"name": "wp_detect_multilingual_plugin",
|
|
635
|
+
"description": "detect active multilingual plugin: WPML, Polylang Pro, Polylang Free (hreflang fallback), TranslatePress, or none"
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "wp_list_languages",
|
|
639
|
+
"description": "list all configured site languages with code, name, native name, locale, URL prefix, and optional post counts"
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"name": "wp_get_post_translations",
|
|
643
|
+
"description": "get all translations of a post"
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
"name": "wp_audit_translation_coverage",
|
|
647
|
+
"description": "audit translation completeness across all languages and post types"
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
"name": "wp_find_missing_seo_translations",
|
|
651
|
+
"description": "find translated posts missing SEO metadata (title, description, OG)"
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
"name": "wp_sync_seo_meta_translations",
|
|
655
|
+
"description": "copy SEO metadata from a source post to its translations"
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"name": "wp_audit_user_security",
|
|
659
|
+
"description": "audit administrator accounts for security risks: default usernames, inactive accounts, generic emails, missing 2FA, enumerable display names"
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
"name": "wp_check_file_permissions",
|
|
663
|
+
"description": "check critical WordPress file/directory permissions via companion mu-plugin"
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"name": "wp_list_recently_modified_files",
|
|
667
|
+
"description": "list recently modified files in wp-content with suspicious file detection (random names, PHP in uploads, out-of-update-window changes)"
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"name": "wp_audit_plugin_vulnerabilities",
|
|
671
|
+
"description": "scan active plugins against WPScan vulnerability database"
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"name": "wp_check_ssl_certificate",
|
|
675
|
+
"description": "check SSL/TLS certificate validity, expiration, security headers (HSTS, X-Content-Type-Options, X-Frame-Options, CSP), and compute a security grade..."
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
"name": "wp_audit_login_security",
|
|
679
|
+
"description": "audit WordPress login security: XML-RPC exposure, user enumeration, login URL, 2FA plugins, brute force protection, admin username"
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"name": "wp_suggest_content_updates",
|
|
683
|
+
"description": "find stale posts that need updating"
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"name": "wp_audit_author_consistency",
|
|
687
|
+
"description": "profile each active author: post count, avg word count, publication frequency, readability score (Flesch-Kincaid), media usage"
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
"name": "wp_build_editorial_calendar",
|
|
691
|
+
"description": "generate a recommended editorial calendar"
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
"name": "wp_find_pillar_content_gaps",
|
|
695
|
+
"description": "identify topics covered by 3+ secondary posts without a dedicated pillar page"
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
"name": "wp_audit_internal_link_equity",
|
|
699
|
+
"description": "build the internal link graph and identify orphan pages (0 inbound), over-linked pages (>20 inbound), and important content with low link equity"
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
"name": "wp_suggest_content_cluster",
|
|
703
|
+
"description": "cluster existing content by semantic similarity using TF-IDF + cosine similarity"
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"name": "acf_get_fields",
|
|
707
|
+
"description": "Get ACF custom fields for a post/page with key filtering and raw/compact/summary modes. Requires ACF plugin"
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
"name": "acf_list_field_groups",
|
|
711
|
+
"description": "List all configured ACF field groups. Requires ACF plugin"
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
"name": "acf_get_field_group",
|
|
715
|
+
"description": "Get full detail of an ACF field group by ID. Requires ACF plugin"
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"name": "acf_update_fields",
|
|
719
|
+
"description": "Update ACF custom fields for a post/page. Write — blocked by WP_READ_ONLY. Requires ACF plugin"
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
"name": "elementor_list_templates",
|
|
723
|
+
"description": "List Elementor templates (page, section, block, popup) with type filtering. Requires Elementor"
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"name": "elementor_get_template",
|
|
727
|
+
"description": "Get full Elementor template content and elements. Context-guarded at 50k chars. Requires Elementor"
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"name": "elementor_get_page_data",
|
|
731
|
+
"description": "Get Elementor editor data for a post/page: widgets used, elements count. Requires Elementor"
|
|
732
|
+
}
|
|
130
733
|
],
|
|
131
734
|
"keywords": [
|
|
132
735
|
"wordpress",
|
|
@@ -144,10 +747,20 @@
|
|
|
144
747
|
"ecommerce",
|
|
145
748
|
"content-compression",
|
|
146
749
|
"content-intelligence",
|
|
750
|
+
"editorial-intelligence",
|
|
147
751
|
"plugin-intelligence",
|
|
148
752
|
"plugin-layer",
|
|
149
753
|
"acf",
|
|
150
|
-
"elementor"
|
|
754
|
+
"elementor",
|
|
755
|
+
"schema-org",
|
|
756
|
+
"multilingual",
|
|
757
|
+
"security-audit",
|
|
758
|
+
"performance",
|
|
759
|
+
"full-site-editing",
|
|
760
|
+
"enterprise",
|
|
761
|
+
"governance",
|
|
762
|
+
"audit-trail",
|
|
763
|
+
"multi-site"
|
|
151
764
|
],
|
|
152
765
|
"license": "MIT",
|
|
153
766
|
"user_config": {
|
|
@@ -199,7 +812,11 @@
|
|
|
199
812
|
},
|
|
200
813
|
"compatibility": {
|
|
201
814
|
"claude_desktop": ">=0.10.0",
|
|
202
|
-
"platforms": [
|
|
815
|
+
"platforms": [
|
|
816
|
+
"darwin",
|
|
817
|
+
"win32",
|
|
818
|
+
"linux"
|
|
819
|
+
],
|
|
203
820
|
"runtimes": {
|
|
204
821
|
"node": ">=18.0.0"
|
|
205
822
|
}
|