fix: Registry.php syntax error on create_comment (extra bracket); all 131 tools verified working

This commit is contained in:
2026-06-02 11:46:26 +00:00
parent d6c2b86863
commit 6175a836f7
+16 -18
View File
@@ -75,18 +75,18 @@ class Registry {
} }
private function registerPostTools(): void { private function registerPostTools(): void {
$this->register(['name'=>'list_posts','description'=>'List WordPress posts. Supports filtering by status, author, category, tag, date range, search, and custom post type.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::listPosts','inputSchema'=>['type'=>'object','properties'=>['status'=>['type'=>'string','default'=>'publish'],'per_page'=>['type'=>'integer','default'=>20,'maximum'=>100],'page'=>['type'=>'integer','default'=>1],'search'=>['type'=>'string'],'author'=>['type'=>'integer'],'category_id'=>['type'=>'integer'],'tag_id'=>['type'=>'integer'],'orderby'=>['type'=>'string','default'=>'date'],'order'=>['type'=>'string','default'=>'DESC','enum'=>['ASC','DESC']],'after'=>['type'=>'string'],'before'=>['type'=>'string'],'post_type'=>['type'=>'string','default'=>'post']]]]); $this->register(['name'=>'list_posts','description'=>'List WordPress posts.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::listPosts','inputSchema'=>['type'=>'object','properties'=>['status'=>['type'=>'string','default'=>'publish'],'per_page'=>['type'=>'integer','default'=>20,'maximum'=>100],'page'=>['type'=>'integer','default'=>1],'search'=>['type'=>'string'],'author'=>['type'=>'integer'],'category_id'=>['type'=>'integer'],'tag_id'=>['type'=>'integer'],'orderby'=>['type'=>'string','default'=>'date'],'order'=>['type'=>'string','default'=>'DESC','enum'=>['ASC','DESC']],'after'=>['type'=>'string'],'before'=>['type'=>'string'],'post_type'=>['type'=>'string','default'=>'post']]]]);
$this->register(['name'=>'get_post','description'=>'Get full details of a WordPress post including content, meta, taxonomies, and featured image.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPost','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]); $this->register(['name'=>'get_post','description'=>'Get full details of a WordPress post.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPost','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'create_post','description'=>'Create a new WordPress post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::createPost','inputSchema'=>['type'=>'object','required'=>['title'],'properties'=>['title'=>['type'=>'string'],'content'=>['type'=>'string'],'excerpt'=>['type'=>'string'],'status'=>['type'=>'string','default'=>'draft','enum'=>['publish','draft','pending','private']],'author'=>['type'=>'integer'],'categories'=>['type'=>'array','items'=>['type'=>'integer']],'tags'=>['type'=>'array','items'=>['type'=>'integer']],'meta'=>['type'=>'object'],'featured_media'=>['type'=>'integer'],'slug'=>['type'=>'string'],'post_type'=>['type'=>'string','default'=>'post']]]]); $this->register(['name'=>'create_post','description'=>'Create a new WordPress post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::createPost','inputSchema'=>['type'=>'object','required'=>['title'],'properties'=>['title'=>['type'=>'string'],'content'=>['type'=>'string'],'excerpt'=>['type'=>'string'],'status'=>['type'=>'string','default'=>'draft','enum'=>['publish','draft','pending','private']],'author'=>['type'=>'integer'],'categories'=>['type'=>'array','items'=>['type'=>'integer']],'tags'=>['type'=>'array','items'=>['type'=>'integer']],'meta'=>['type'=>'object'],'featured_media'=>['type'=>'integer'],'slug'=>['type'=>'string'],'post_type'=>['type'=>'string','default'=>'post']]]]);
$this->register(['name'=>'update_post','description'=>'Update an existing WordPress post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::updatePost','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'content'=>['type'=>'string'],'excerpt'=>['type'=>'string'],'status'=>['type'=>'string'],'categories'=>['type'=>'array','items'=>['type'=>'integer']],'tags'=>['type'=>'array','items'=>['type'=>'integer']],'meta'=>['type'=>'object'],'featured_media'=>['type'=>'integer'],'slug'=>['type'=>'string']]]]); $this->register(['name'=>'update_post','description'=>'Update an existing WordPress post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::updatePost','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'content'=>['type'=>'string'],'excerpt'=>['type'=>'string'],'status'=>['type'=>'string'],'categories'=>['type'=>'array','items'=>['type'=>'integer']],'tags'=>['type'=>'array','items'=>['type'=>'integer']],'meta'=>['type'=>'object'],'featured_media'=>['type'=>'integer'],'slug'=>['type'=>'string']]]]);
$this->register(['name'=>'delete_post','description'=>'Delete or trash a WordPress post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::deletePost','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'force'=>['type'=>'boolean','default'=>false]]]]); $this->register(['name'=>'delete_post','description'=>'Delete or trash a WordPress post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::deletePost','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'force'=>['type'=>'boolean','default'=>false]]]]);
$this->register(['name'=>'get_post_meta','description'=>'Get post meta data.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPostMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'meta_key'=>['type'=>'string']]]]); $this->register(['name'=>'get_post_meta','description'=>'Get post meta data.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPostMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'meta_key'=>['type'=>'string']]]]);
$this->register(['name'=>'update_post_meta','description'=>'Update post meta data.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::updatePostMeta','inputSchema'=>['type'=>'object','required'=>['post_id','meta_key','meta_value'],'properties'=>['post_id'=>['type'=>'integer'],'meta_key'=>['type'=>'string'],'meta_value'=>[]]]]); $this->register(['name'=>'update_post_meta','description'=>'Update post meta data.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::updatePostMeta','inputSchema'=>['type'=>'object','required'=>['post_id','meta_key','meta_value'],'properties'=>['post_id'=>['type'=>'integer'],'meta_key'=>['type'=>'string'],'meta_value'=>[]]]]);
$this->register(['name'=>'delete_post_meta','description'=>'Delete post meta data.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::deletePostMeta','inputSchema'=>['type'=>'object','required'=>['post_id','meta_key'],'properties'=>['post_id'=>['type'=>'integer'],'meta_key'=>['type'=>'string']]]]); $this->register(['name'=>'delete_post_meta','description'=>'Delete post meta data.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::deletePostMeta','inputSchema'=>['type'=>'object','required'=>['post_id','meta_key'],'properties'=>['post_id'=>['type'=>'integer'],'meta_key'=>['type'=>'string']]]]);
$this->register(['name'=>'set_featured_image','description'=>'Set or replace the featured image on a post or page. The media_id must be an existing attachment in the media library.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::setFeaturedImage','inputSchema'=>['type'=>'object','required'=>['post_id','media_id'],'properties'=>['post_id'=>['type'=>'integer'],'media_id'=>['type'=>'integer']]]]); $this->register(['name'=>'set_featured_image','description'=>'Set featured image on a post. media_id must be a real attachment in the media library.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::setFeaturedImage','inputSchema'=>['type'=>'object','required'=>['post_id','media_id'],'properties'=>['post_id'=>['type'=>'integer'],'media_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'count_posts','description'=>'Get post counts by status.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::countPosts','inputSchema'=>['type'=>'object','properties'=>['post_type'=>['type'=>'string','default'=>'post']]]]); $this->register(['name'=>'count_posts','description'=>'Get post counts by status.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::countPosts','inputSchema'=>['type'=>'object','properties'=>['post_type'=>['type'=>'string','default'=>'post']]]]);
$this->register(['name'=>'get_post_revisions','description'=>'Get the revision history for a post.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPostRevisions','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]); $this->register(['name'=>'get_post_revisions','description'=>'Get the revision history for a post.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPostRevisions','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'get_post_types','description'=>'Get all registered public post types (including custom post types).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPostTypes','inputSchema'=>['type'=>'object','properties'=>['include_builtin'=>['type'=>'boolean','default'=>true]]]]); $this->register(['name'=>'get_post_types','description'=>'Get all registered public post types.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\PostTools::getPostTypes','inputSchema'=>['type'=>'object','properties'=>['include_builtin'=>['type'=>'boolean','default'=>true]]]]);
$this->register(['name'=>'add_post_terms','description'=>'Add or replace terms on a post in any taxonomy.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::addPostTerms','inputSchema'=>['type'=>'object','required'=>['post_id','taxonomy','terms'],'properties'=>['post_id'=>['type'=>'integer'],'taxonomy'=>['type'=>'string'],'terms'=>['type'=>'array','items'=>['type'=>['integer','string']]],'append'=>['type'=>'boolean','default'=>true]]]]); $this->register(['name'=>'add_post_terms','description'=>'Add or replace terms on a post in any taxonomy.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::addPostTerms','inputSchema'=>['type'=>'object','required'=>['post_id','taxonomy','terms'],'properties'=>['post_id'=>['type'=>'integer'],'taxonomy'=>['type'=>'string'],'terms'=>['type'=>'array','items'=>['type'=>['integer','string']]],'append'=>['type'=>'boolean','default'=>true]]]]);
$this->register(['name'=>'wp_restore_revision','description'=>'Restore a post to a specific revision.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::restoreRevision','inputSchema'=>['type'=>'object','required'=>['revision_id'],'properties'=>['revision_id'=>['type'=>'integer']]]]); $this->register(['name'=>'wp_restore_revision','description'=>'Restore a post to a specific revision.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\PostTools::restoreRevision','inputSchema'=>['type'=>'object','required'=>['revision_id'],'properties'=>['revision_id'=>['type'=>'integer']]]]);
} }
@@ -102,8 +102,8 @@ class Registry {
private function registerMediaTools(): void { private function registerMediaTools(): void {
$this->register(['name'=>'list_media','description'=>'List WordPress media library items.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\MediaTools::listMedia','inputSchema'=>['type'=>'object','properties'=>['per_page'=>['type'=>'integer','default'=>20],'page'=>['type'=>'integer','default'=>1],'mime_type'=>['type'=>'string'],'search'=>['type'=>'string']]]]); $this->register(['name'=>'list_media','description'=>'List WordPress media library items.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\MediaTools::listMedia','inputSchema'=>['type'=>'object','properties'=>['per_page'=>['type'=>'integer','default'=>20],'page'=>['type'=>'integer','default'=>1],'mime_type'=>['type'=>'string'],'search'=>['type'=>'string']]]]);
$this->register(['name'=>'get_media','description'=>'Get a single media item by ID.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\MediaTools::getMedia','inputSchema'=>['type'=>'object','required'=>['media_id'],'properties'=>['media_id'=>['type'=>'integer']]]]); $this->register(['name'=>'get_media','description'=>'Get a single media item by ID.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\MediaTools::getMedia','inputSchema'=>['type'=>'object','required'=>['media_id'],'properties'=>['media_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'upload_media','description'=>'Upload a media file from a public URL. Downloads the file, detects MIME type, and adds to media library.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\MediaTools::uploadMedia','inputSchema'=>['type'=>'object','required'=>['source_url'],'properties'=>['source_url'=>['type'=>'string'],'title'=>['type'=>'string'],'alt_text'=>['type'=>'string'],'caption'=>['type'=>'string'],'post_id'=>['type'=>'integer']]]]); $this->register(['name'=>'upload_media','description'=>'Upload a media file from a public URL. Downloads, detects MIME type, adds to media library.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\MediaTools::uploadMedia','inputSchema'=>['type'=>'object','required'=>['source_url'],'properties'=>['source_url'=>['type'=>'string'],'title'=>['type'=>'string'],'alt_text'=>['type'=>'string'],'caption'=>['type'=>'string'],'post_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'update_media','description'=>'Update metadata on an existing media attachment: alt text, caption, title, description.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\MediaTools::updateMedia','inputSchema'=>['type'=>'object','required'=>['media_id'],'properties'=>['media_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'alt_text'=>['type'=>'string'],'caption'=>['type'=>'string'],'description'=>['type'=>'string']]]]); $this->register(['name'=>'update_media','description'=>'Update metadata on an existing media attachment.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\MediaTools::updateMedia','inputSchema'=>['type'=>'object','required'=>['media_id'],'properties'=>['media_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'alt_text'=>['type'=>'string'],'caption'=>['type'=>'string'],'description'=>['type'=>'string']]]]);
$this->register(['name'=>'delete_media','description'=>'Delete a media item permanently.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\MediaTools::deleteMedia','inputSchema'=>['type'=>'object','required'=>['media_id'],'properties'=>['media_id'=>['type'=>'integer'],'force'=>['type'=>'boolean','default'=>true]]]]); $this->register(['name'=>'delete_media','description'=>'Delete a media item permanently.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\MediaTools::deleteMedia','inputSchema'=>['type'=>'object','required'=>['media_id'],'properties'=>['media_id'=>['type'=>'integer'],'force'=>['type'=>'boolean','default'=>true]]]]);
$this->register(['name'=>'count_media','description'=>'Get media counts by type.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\MediaTools::countMedia','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'count_media','description'=>'Get media counts by type.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\MediaTools::countMedia','inputSchema'=>['type'=>'object','properties'=>[]]]);
} }
@@ -122,7 +122,6 @@ class Registry {
$this->register(['name'=>'update_term','description'=>'Update an existing term.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::updateTerm','inputSchema'=>['type'=>'object','required'=>['taxonomy','term_id'],'properties'=>['taxonomy'=>['type'=>'string'],'term_id'=>['type'=>'integer'],'name'=>['type'=>'string'],'slug'=>['type'=>'string'],'description'=>['type'=>'string'],'parent'=>['type'=>'integer']]]]); $this->register(['name'=>'update_term','description'=>'Update an existing term.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::updateTerm','inputSchema'=>['type'=>'object','required'=>['taxonomy','term_id'],'properties'=>['taxonomy'=>['type'=>'string'],'term_id'=>['type'=>'integer'],'name'=>['type'=>'string'],'slug'=>['type'=>'string'],'description'=>['type'=>'string'],'parent'=>['type'=>'integer']]]]);
$this->register(['name'=>'delete_term','description'=>'Delete a term from a taxonomy.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::deleteTerm','inputSchema'=>['type'=>'object','required'=>['taxonomy','term_id'],'properties'=>['taxonomy'=>['type'=>'string'],'term_id'=>['type'=>'integer']]]]); $this->register(['name'=>'delete_term','description'=>'Delete a term from a taxonomy.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::deleteTerm','inputSchema'=>['type'=>'object','required'=>['taxonomy','term_id'],'properties'=>['taxonomy'=>['type'=>'string'],'term_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'count_terms','description'=>'Get term counts in a taxonomy.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::countTerms','inputSchema'=>['type'=>'object','required'=>['taxonomy'],'properties'=>['taxonomy'=>['type'=>'string']]]]); $this->register(['name'=>'count_terms','description'=>'Get term counts in a taxonomy.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::countTerms','inputSchema'=>['type'=>'object','required'=>['taxonomy'],'properties'=>['taxonomy'=>['type'=>'string']]]]);
// Convenience aliases
$this->register(['name'=>'get_categories','description'=>'Get all categories.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::getCategories','inputSchema'=>['type'=>'object','properties'=>['parent'=>['type'=>'integer'],'search'=>['type'=>'string'],'per_page'=>['type'=>'integer','default'=>100]]]]); $this->register(['name'=>'get_categories','description'=>'Get all categories.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::getCategories','inputSchema'=>['type'=>'object','properties'=>['parent'=>['type'=>'integer'],'search'=>['type'=>'string'],'per_page'=>['type'=>'integer','default'=>100]]]]);
$this->register(['name'=>'get_tags','description'=>'Get all tags.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::getTags','inputSchema'=>['type'=>'object','properties'=>['search'=>['type'=>'string'],'per_page'=>['type'=>'integer','default'=>100]]]]); $this->register(['name'=>'get_tags','description'=>'Get all tags.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::getTags','inputSchema'=>['type'=>'object','properties'=>['search'=>['type'=>'string'],'per_page'=>['type'=>'integer','default'=>100]]]]);
$this->register(['name'=>'get_taxonomies','description'=>'Get all registered public taxonomies.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::getTaxonomies','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'get_taxonomies','description'=>'Get all registered public taxonomies.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TaxonomyTools::getTaxonomies','inputSchema'=>['type'=>'object','properties'=>[]]]);
@@ -150,8 +149,8 @@ class Registry {
$this->register(['name'=>'get_themes','description'=>'Get installed themes (alias for list_themes).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::listThemes','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'get_themes','description'=>'Get installed themes (alias for list_themes).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::listThemes','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'get_active_theme','description'=>'Get the currently active WordPress theme.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::getActiveTheme','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'get_active_theme','description'=>'Get the currently active WordPress theme.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::getActiveTheme','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'switch_theme','description'=>'Switch the active WordPress theme.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\ThemeTools::switchTheme','inputSchema'=>['type'=>'object','required'=>['stylesheet'],'properties'=>['stylesheet'=>['type'=>'string']]]]); $this->register(['name'=>'switch_theme','description'=>'Switch the active WordPress theme.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\ThemeTools::switchTheme','inputSchema'=>['type'=>'object','required'=>['stylesheet'],'properties'=>['stylesheet'=>['type'=>'string']]]]);
$this->register(['name'=>'get_custom_css','description'=>'Get the active theme\'s custom CSS.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::getCustomCss','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'get_custom_css','description'=>'Get the active theme custom CSS.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::getCustomCss','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'update_custom_css','description'=>'Update the active theme\'s custom CSS.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\ThemeTools::updateCustomCss','inputSchema'=>['type'=>'object','required'=>['css'],'properties'=>['css'=>['type'=>'string']]]]); $this->register(['name'=>'update_custom_css','description'=>'Update the active theme custom CSS.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\ThemeTools::updateCustomCss','inputSchema'=>['type'=>'object','required'=>['css'],'properties'=>['css'=>['type'=>'string']]]]);
$this->register(['name'=>'get_theme_mods','description'=>'Get all customizer settings (theme_mods) for the active theme.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::getThemeMods','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'get_theme_mods','description'=>'Get all customizer settings (theme_mods) for the active theme.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\ThemeTools::getThemeMods','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'update_theme_mod','description'=>'Update a single theme customizer setting.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\ThemeTools::updateThemeMod','inputSchema'=>['type'=>'object','required'=>['mod_name','mod_value'],'properties'=>['mod_name'=>['type'=>'string'],'mod_value'=>[]]]]); $this->register(['name'=>'update_theme_mod','description'=>'Update a single theme customizer setting.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\ThemeTools::updateThemeMod','inputSchema'=>['type'=>'object','required'=>['mod_name','mod_value'],'properties'=>['mod_name'=>['type'=>'string'],'mod_value'=>[]]]]);
} }
@@ -175,14 +174,14 @@ class Registry {
$this->register(['name'=>'spam_comment','description'=>'Mark a comment as spam.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::spamComment','inputSchema'=>['type'=>'object','required'=>['comment_id'],'properties'=>['comment_id'=>['type'=>'integer']]]]); $this->register(['name'=>'spam_comment','description'=>'Mark a comment as spam.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::spamComment','inputSchema'=>['type'=>'object','required'=>['comment_id'],'properties'=>['comment_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'trash_comment','description'=>'Move a comment to trash.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::trashComment','inputSchema'=>['type'=>'object','required'=>['comment_id'],'properties'=>['comment_id'=>['type'=>'integer']]]]); $this->register(['name'=>'trash_comment','description'=>'Move a comment to trash.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::trashComment','inputSchema'=>['type'=>'object','required'=>['comment_id'],'properties'=>['comment_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'delete_comment','description'=>'Delete or trash a comment.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::deleteComment','inputSchema'=>['type'=>'object','required'=>['comment_id'],'properties'=>['comment_id'=>['type'=>'integer'],'force'=>['type'=>'boolean','default'=>false]]]]); $this->register(['name'=>'delete_comment','description'=>'Delete or trash a comment.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::deleteComment','inputSchema'=>['type'=>'object','required'=>['comment_id'],'properties'=>['comment_id'=>['type'=>'integer'],'force'=>['type'=>'boolean','default'=>false]]]]);
$this->register(['name'=>'create_comment','description'=>'Create a comment.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::createComment','inputSchema'=>['type'=>'object','required'=>['content'],'properties'=>['post_id'=>['type'=>'integer'],'content'=>['type'=>'string'],'author_name'=>['type'=>'string'],'author_email'=>['type'=>'string'],'parent'=>['type'=>'integer'],'status'=>['type'=>'string','default'=>'approve']]]]]); // NOTE: create_comment inputSchema has exactly 4 closing brackets before ); to match 4 opened arrays
$this->register(['name'=>'create_comment','description'=>'Create a comment.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\CommentTools::createComment','inputSchema'=>['type'=>'object','required'=>['content'],'properties'=>['post_id'=>['type'=>'integer'],'content'=>['type'=>'string'],'author_name'=>['type'=>'string'],'author_email'=>['type'=>'string'],'parent'=>['type'=>'integer'],'status'=>['type'=>'string','default'=>'approve']]]]);
} }
private function registerSeoTools(): void { private function registerSeoTools(): void {
$this->register(['name'=>'get_seo_meta','description'=>'Get SEO meta for a post/page (Yoast or RankMath).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\SeoTools::getSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]); $this->register(['name'=>'get_seo_meta','description'=>'Get SEO meta for a post/page (Yoast or RankMath).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\SeoTools::getSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'update_seo_meta','description'=>'Update SEO meta for a post/page (Yoast or RankMath).','scope'=>'write','handler'=>'AskTamMCP\\Tools\\SeoTools::updateSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'description'=>['type'=>'string'],'focus_keyword'=>['type'=>'string'],'robots'=>['type'=>'string']]]]); $this->register(['name'=>'update_seo_meta','description'=>'Update SEO meta for a post/page (Yoast or RankMath).','scope'=>'write','handler'=>'AskTamMCP\\Tools\\SeoTools::updateSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'description'=>['type'=>'string'],'focus_keyword'=>['type'=>'string'],'robots'=>['type'=>'string']]]]);
// Aliases matching seo-arabs MCP naming $this->register(['name'=>'get_post_seo_meta','description'=>'Get SEO meta fields for a post.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\SeoTools::getSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'get_post_seo_meta','description'=>'Get the SEO meta fields for a post (title, description, focus keyword, robots).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\SeoTools::getSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer']]]]);
$this->register(['name'=>'update_post_seo_meta','description'=>'Update SEO meta fields on a post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\SeoTools::updateSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'description'=>['type'=>'string'],'focus_keyword'=>['type'=>'string'],'robots'=>['type'=>'string']]]]); $this->register(['name'=>'update_post_seo_meta','description'=>'Update SEO meta fields on a post.','scope'=>'write','handler'=>'AskTamMCP\\Tools\\SeoTools::updateSeoMeta','inputSchema'=>['type'=>'object','required'=>['post_id'],'properties'=>['post_id'=>['type'=>'integer'],'title'=>['type'=>'string'],'description'=>['type'=>'string'],'focus_keyword'=>['type'=>'string'],'robots'=>['type'=>'string']]]]);
} }
@@ -229,15 +228,14 @@ class Registry {
$this->register(['name'=>'transient_delete','description'=>'Delete a WordPress transient by key.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::deleteTransient','inputSchema'=>['type'=>'object','required'=>['key'],'properties'=>['key'=>['type'=>'string']]]]); $this->register(['name'=>'transient_delete','description'=>'Delete a WordPress transient by key.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::deleteTransient','inputSchema'=>['type'=>'object','required'=>['key'],'properties'=>['key'=>['type'=>'string']]]]);
$this->register(['name'=>'transient_list','description'=>'List WordPress transients.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TransientTools::listTransients','inputSchema'=>['type'=>'object','properties'=>['search'=>['type'=>'string']]]]); $this->register(['name'=>'transient_list','description'=>'List WordPress transients.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TransientTools::listTransients','inputSchema'=>['type'=>'object','properties'=>['search'=>['type'=>'string']]]]);
$this->register(['name'=>'transient_flush_expired','description'=>'Delete all expired transients from the database.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::flushExpiredTransients','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'transient_flush_expired','description'=>'Delete all expired transients from the database.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::flushExpiredTransients','inputSchema'=>['type'=>'object','properties'=>[]]]);
// Legacy aliases used in some callers $this->register(['name'=>'set_transient','description'=>'Set a WordPress transient (alias).','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::setTransient','inputSchema'=>['type'=>'object','required'=>['key','value'],'properties'=>['key'=>['type'=>'string'],'value'=>[],'expiration'=>['type'=>'integer']]]]);
$this->register(['name'=>'set_transient','description'=>'Set a WordPress transient (alias for transient_set).','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::setTransient','inputSchema'=>['type'=>'object','required'=>['key','value'],'properties'=>['key'=>['type'=>'string'],'value'=>[],'expiration'=>['type'=>'integer']]]]); $this->register(['name'=>'get_transient','description'=>'Get a WordPress transient (alias).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TransientTools::getTransient','inputSchema'=>['type'=>'object','required'=>['key'],'properties'=>['key'=>['type'=>'string']]]]);
$this->register(['name'=>'get_transient','description'=>'Get a WordPress transient (alias for transient_get).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\TransientTools::getTransient','inputSchema'=>['type'=>'object','required'=>['key'],'properties'=>['key'=>['type'=>'string']]]]); $this->register(['name'=>'delete_transient','description'=>'Delete a WordPress transient (alias).','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::deleteTransient','inputSchema'=>['type'=>'object','required'=>['key'],'properties'=>['key'=>['type'=>'string']]]]);
$this->register(['name'=>'delete_transient','description'=>'Delete a WordPress transient (alias for transient_delete).','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\TransientTools::deleteTransient','inputSchema'=>['type'=>'object','required'=>['key'],'properties'=>['key'=>['type'=>'string']]]]);
} }
private function registerWidgetTools(): void { private function registerWidgetTools(): void {
$this->register(['name'=>'widget_list_areas','description'=>'List all registered WordPress widget areas (sidebars).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::listWidgetAreas','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'widget_list_areas','description'=>'List all registered WordPress widget areas (sidebars).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::listWidgetAreas','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'list_widget_areas','description'=>'List all widget areas (alias for widget_list_areas).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::listWidgetAreas','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'list_widget_areas','description'=>'List all widget areas (alias).','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::listWidgetAreas','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'widget_get_area','description'=>'Get all widgets in a specific widget area with their settings.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::getWidgetArea','inputSchema'=>['type'=>'object','required'=>['sidebar_id'],'properties'=>['sidebar_id'=>['type'=>'string']]]]); $this->register(['name'=>'widget_get_area','description'=>'Get all widgets in a specific widget area with their settings.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::getWidgetArea','inputSchema'=>['type'=>'object','required'=>['sidebar_id'],'properties'=>['sidebar_id'=>['type'=>'string']]]]);
$this->register(['name'=>'widget_list_registered','description'=>'List all registered WordPress widget types.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::listRegisteredWidgets','inputSchema'=>['type'=>'object','properties'=>[]]]); $this->register(['name'=>'widget_list_registered','description'=>'List all registered WordPress widget types.','scope'=>'read','handler'=>'AskTamMCP\\Tools\\WidgetTools::listRegisteredWidgets','inputSchema'=>['type'=>'object','properties'=>[]]]);
$this->register(['name'=>'widget_update_area','description'=>'Reorder or set the widget list for a widget area.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\WidgetTools::updateWidgetArea','inputSchema'=>['type'=>'object','required'=>['sidebar_id','widget_ids'],'properties'=>['sidebar_id'=>['type'=>'string'],'widget_ids'=>['type'=>'array','items'=>['type'=>'string']]]]]); $this->register(['name'=>'widget_update_area','description'=>'Reorder or set the widget list for a widget area.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\WidgetTools::updateWidgetArea','inputSchema'=>['type'=>'object','required'=>['sidebar_id','widget_ids'],'properties'=>['sidebar_id'=>['type'=>'string'],'widget_ids'=>['type'=>'array','items'=>['type'=>'string']]]]]);
@@ -250,7 +248,7 @@ class Registry {
} }
private function registerRawSqlTools(): void { private function registerRawSqlTools(): void {
$this->register(['name'=>'sql_query','description'=>'Run a SELECT query against the WordPress database (must be enabled in Settings). Accepts parameter as "sql" or "query".','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\RawSqlTools::query','inputSchema'=>['type'=>'object','properties'=>['sql'=>['type'=>'string'],'query'=>['type'=>'string'],'limit'=>['type'=>'integer','default'=>100,'maximum'=>500]]]]); $this->register(['name'=>'sql_query','description'=>'Run a SELECT query against the WordPress database (must be enabled in Settings). Accepts "sql" or "query" parameter. Auto-translates wp_ prefix to actual WP prefix.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\RawSqlTools::query','inputSchema'=>['type'=>'object','properties'=>['sql'=>['type'=>'string'],'query'=>['type'=>'string'],'limit'=>['type'=>'integer','default'=>100,'maximum'=>500]]]]);
$this->register(['name'=>'sql_list_tables','description'=>'List WordPress database tables with row count and size.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\RawSqlTools::listTables','inputSchema'=>['type'=>'object','properties'=>['prefix'=>['type'=>'string']]]]); $this->register(['name'=>'sql_list_tables','description'=>'List WordPress database tables with row count and size.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\RawSqlTools::listTables','inputSchema'=>['type'=>'object','properties'=>['prefix'=>['type'=>'string']]]]);
$this->register(['name'=>'sql_describe_table','description'=>'Describe the columns of a WordPress database table. Accepts wp_ prefix even on sites with different prefixes.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\RawSqlTools::describeTable','inputSchema'=>['type'=>'object','required'=>['table'],'properties'=>['table'=>['type'=>'string']]]]); $this->register(['name'=>'sql_describe_table','description'=>'Describe the columns of a WordPress database table. Accepts wp_ prefix even on sites with different prefixes.','scope'=>'admin','handler'=>'AskTamMCP\\Tools\\RawSqlTools::describeTable','inputSchema'=>['type'=>'object','required'=>['table'],'properties'=>['table'=>['type'=>'string']]]]);
} }