Files
advanced-mcp-plugin/SKILLS.md
T

15 KiB
Raw Blame History

Advanced MCP Plugin by AskTam — Tool Skills Reference

Auto-generated from the live tool registry on 2026-10-16. Plugin: colorlink/advanced-mcp-plugin · GPL-2.0-or-later · namespace AskTamMCP\. Total tools: 267. Of these, 60 are net-new merge additions (batches b1–b12); the rest are the core/baseline set.

How tools are defined

Each tool: name, scope (read|write), a JSON input schema, and a static handler Class::method(array $args): array. Handlers throw \RuntimeException on error. Empty PHP arrays are cast to new \stdClass() so they serialize as {} not [].

Architecture / adding tools

Add a batch = drop one file includes/Extensions/BatchN.php that registers on the asktam_mcp_register_tools hook. The main file glob-auto-discovers Batch*.php (priority 20, class_exists + try/catch per batch), so no core edits are needed and a broken batch cannot fatal the plugin. Guard families for absent plugins with defined() / class_exists() / theme checks so they stay inert where the dependency is missing and auto-activate where present.


Net-new merge additions (b1–b12)

b1 — Elementor structure (net-new gaps)

Guard: defined('ELEMENTOR_VERSION'). Fills gaps the base Elementor set missed. Writes to _elementor_data; CSS is regenerated on save.

elementor_add_section Add a classic Elementor section (legacy row layout). Optional parent_id nests it; settings accepts gap, content_width, background_color, padding, etc. Args: post_id:integer (req), parent_id:string, position:integer, settings:object

elementor_add_column Add a column inside a section. size is the column width in percent (1-100, default 100). Args: post_id:integer (req), section_id:string (req), size:integer, position:integer, settings:object

elementor_set_global_font Add or update a typography entry in the Elementor global font palette (system_typography). Args: id:string, title:string (req), font_family:string (req), font_weight:string

elementor_delete_global_color Remove a colour from the Elementor global palette by its id. Args: id:string (req)

elementor_delete_template Delete a saved Elementor library template permanently. Args: template_id:integer (req)

b2 — SEO (extended) + text extraction

Guard: none (SEO plugin auto-detected). seo_* auto-detect Yoast / RankMath / SEOPress and map each one's meta keys. On a site with no SEO plugin they report plugin=none (not an error). extract_page_text walks post content + Elementor data.

seo_detect Detect which SEO plugin is active (Yoast, RankMath, SEOPress, AIOSEO) and whether extended meta read/write is supported. Args: (no args)

seo_get_extended Get extended SEO meta for a post: title, description, canonical, OG title/description/image, Twitter title, robots. Supports Yoast, RankMath, SEOPress. Args: post_id:integer (req)

seo_update_extended Update extended SEO meta on a post. Only supplied fields change. Supports Yoast, RankMath, SEOPress. Args: post_id:integer (req), title:string, description:string, canonical:string, og_title:string, og_description:string, og_image:string, twitter_title:string, noindex:boolean, nofollow:boolean

seo_bulk_audit Scan posts/pages for missing SEO title or meta description. Returns the offenders. Args: post_types:array, per_page:integer

extract_page_text Extract all human-readable text from a page: title, excerpt, post content, and every Elementor text node (with element_id + field) — for translation, audit, or rewriting. Args: post_id:integer (req)

b3 — Accessibility audit (read-only)

Guard: none. WCAG 2.1 relative-luminance math (verified #777/#fff = 4.48:1). Walks post content via DOMDocument + Elementor data. All read-only.

a11y_contrast_check Compute the WCAG 2.1 contrast ratio between two hex colours and report AA/AAA pass for normal and large text. Args: foreground:string (req), background:string (req)

a11y_audit_page Accessibility audit of one page: images missing alt text, heading-order skips, and empty links/buttons. Scans post content and Elementor data. Args: post_id:integer (req)

a11y_heading_outline Return the ordered heading outline (level + text) of a page and flag skipped heading levels. Args: post_id:integer (req)

a11y_images_missing_alt List media-library image attachments that have no alt text. Args: per_page:integer

a11y_audit_site Run the page accessibility audit across published pages/posts and return per-page issue counts. Args: post_types:array, per_page:integer

b4 — WPML translation audit

Guard: defined('ICL_SITEPRESS_VERSION'). Uses the WPML filter API (apply_filters wpml_*). Inert unless WPML is active.

wpml_list_languages List all WPML languages: code, name, native name, active flag, and which is the default. Args: (no args)

wpml_get_post_language Get the WPML language code of a post. Args: post_id:integer (req)

wpml_get_translations Get the full translation group of a post: for each language, the translated post id, title, status, and whether it exists. Args: post_id:integer (req)

wpml_missing_translations List the WPML languages a post is NOT yet translated into. Args: post_id:integer (req)

wpml_audit Audit published posts/pages for missing translations across all active WPML languages. Returns per-language missing counts and the offenders. Args: post_types:array, per_page:integer

b5 — Media & content utilities

Guard: none. Alt-text writers + link/image hygiene. bulk_set_alt_from_title derives alt from attachment title; find_broken_internal_links checks same-host links only.

set_image_alt Set (or clear) the alt text of a media-library image attachment. Args: attachment_id:integer (req), alt:string (req)

bulk_set_alt_from_title Backfill alt text for image attachments from their title (or a humanized filename). By default only fills images that have no alt; set overwrite=true to replace existing alts. Args: per_page:integer, overwrite:boolean

find_broken_internal_links Scan published posts/pages for internal links whose target slug does not resolve to a post/page (candidate broken links). Heuristic: term/archive URLs may appear as false positives. Args: post_types:array, per_page:integer

list_large_images List media-library images whose file size exceeds a threshold (KB), largest first. Args: min_kb:integer, per_page:integer

duplicate_title_finder Find published posts/pages that share an identical title. Args: post_types:array, per_page:integer

b6 — Gutenberg blocks

Guard: none. insert_blocks/create_reusable_block build block markup server-side. render_shortcode runs do_shortcode. list_block_types enumerates the registered block registry.

list_block_types List registered Gutenberg block types (name, title, category). Optional category filter. Args: category:string, per_page:integer

insert_blocks Insert Gutenberg blocks into a post from a simple spec. Each block: {type, content, level?, items?, url?, alt?, id?}. Types: paragraph, heading, list, image, quote, html. mode=append (default) or replace. Args: post_id:integer (req), blocks:array (req), mode:string(append|replace)

create_reusable_block Create a reusable block (wp_block) from a block spec or raw block markup. Args: title:string (req), blocks:array, markup:string

list_reusable_blocks List reusable blocks (wp_block posts). Args: per_page:integer

render_shortcode Render a shortcode string to HTML via do_shortcode, optionally in the context of a post. Args: shortcode:string (req), post_id:integer

b7 — WPBakery (js_composer)

Guard: defined('WPB_VC_VERSION'). Elements enumerated via WPBMap::getAllShortCodes(). Inert on sites without WPBakery (verified GUARD_OK on mainwp). FUNCTIONAL TEST STILL PENDING on a js_composer site.

wpbakery_detect — (guarded off where WPBakery absent — not in the live mainwp registry; activates on js_composer sites)

wpbakery_list_elements — (guarded off where WPBakery absent)

wpbakery_get_content — (guarded off where WPBakery absent)

wpbakery_add_element — (guarded off where WPBakery absent)

wpbakery_replace_text — (guarded off where WPBakery absent)

b8 — Remote-data presets

Guard: none (outbound HTTP). wp_remote_get + transient cache (prefix amp_rd_). API keys are passed per-call and NEVER stored. remote_weather=OpenWeather, remote_place_reviews=Google Places.

remote_fetch_json Fetch a JSON URL (GET) with transient caching. Optional dot-path (e.g. "data.0.name") extracts part of the response. cache_minutes default 15. Args: url:string (req), cache_minutes:integer, path:string, headers:object

remote_weather Current weather from OpenWeather. Provide api_key and either city or lat+lon. units=metric (default) or imperial. Cached 30 min. Args: api_key:string (req), city:string, lat:number, lon:number, units:string(metric|imperial)

remote_place_reviews Google Place rating + reviews via Places Details API. Provide api_key and place_id. Cached 60 min. Args: api_key:string (req), place_id:string (req)

remote_list_cache List cached remote-data entries (key + size). Args: (no args)

remote_clear_cache Clear cached remote-data. Provide key to clear one, or omit to clear all remote-data cache. Args: key:string

b9 — Backup / export (Elementor)

Guard: defined('ELEMENTOR_VERSION'). export/import round-trips _elementor_data as JSON; import uses wp_slash(wp_json_encode(...)) and regenerates element IDs to avoid collisions.

export_elementor_page Export a page's Elementor data: parsed elements, page settings, and template. Use as a backup or to clone into another page. Args: post_id:integer (req)

import_elementor_page Import Elementor data into a target post. Provide elementor_data (JSON string or array). regenerate_ids=true gives every element a fresh id. Args: post_id:integer (req), elementor_data:Array (req), regenerate_ids:boolean

export_global_styles Export the active Elementor kit's global styles (colors, typography, and other page settings). Args: (no args)

import_global_styles Write global styles into the active Elementor kit. merge=true (default) merges into existing settings; false replaces them. Args: settings:object (req), merge:boolean

duplicate_elementor_page Duplicate a page including its Elementor data into a new post (default draft). Args: source_id:integer (req), title:string, status:string

b10 — Memory layer (KV store)

Guard: none. Option-backed by default; ttl_minutes>0 switches to a transient. Keys sanitized to [a-z0-9_-] and prefixed ampmem_. Values are strings — JSON-encode structured data yourself. memory_append maintains a newline list.

memory_set Store a string value under a key. Optional ttl_minutes makes it expire (otherwise it persists). For structured data, pass JSON text as value. Args: key:string (req), value:string (req), ttl_minutes:integer

memory_get Retrieve a stored value by key. Args: key:string (req)

memory_list List stored memory keys, optionally filtered by prefix. Args: prefix:string

memory_delete Delete a stored value by key. Args: key:string (req)

memory_append Append an item to a newline-delimited list stored at key (created if absent). Args: key:string (req), item:string (req)

b11 — Motion / GSAP

Guard: defined('ELEMENTOR_VERSION'). Entrance animations (_animation/_animation_delay) + scroll motion-fx (translateY parallax / opacity). motion_apply_preset staggers delay across top-level elements. Recursive element walk by id.

motion_list_presets List available entrance animations, scroll motion-FX effects, and named preset bundles. Args: (no args)

motion_set_entrance Set an Elementor entrance animation (and optional delay in ms) on one element by its id within a post. Args: post_id:integer (req), element_id:string (req), animation:string (req), delay_ms:integer

motion_set_scroll_fx Apply a scroll motion-FX (translateY parallax or opacity fade) to one Elementor element by id. Args: post_id:integer (req), element_id:string (req), effect:string(translateY|opacity) (req), speed:integer

motion_apply_preset Apply a named motion preset bundle to all top-level elements of an Elementor post (staggered). Args: post_id:integer (req), preset:string (req)

motion_clear Remove entrance animation and scroll motion-FX settings from one element (or all top-level elements if element_id omitted). Args: post_id:integer (req), element_id:string

b12 — Woodmart theme helpers

Guard: active theme = Woodmart. Writes to the xts-woodmart-options store. set_option is JSON-aware and auto-backs-up the prior value into amp_wd_backup; restore_option reverts or removes. Fully functional on mainwp (Woodmart 8.4.1).

woodmart_detect Report whether the Woodmart theme is active and its version. Args: (no args)

woodmart_get_option Read one Woodmart theme option by key. Args: key:string (req)

woodmart_list_options List Woodmart theme option keys (and value types), optionally filtered by prefix. Args: prefix:string

woodmart_set_option Set one Woodmart theme option. value is parsed as JSON when valid (so arrays/booleans/numbers work), otherwise stored as a string. The prior value is auto-backed-up for woodmart_restore_option. Args: key:string (req), value:string (req)

woodmart_restore_option Restore one Woodmart option to the value saved before the last woodmart_set_option (or remove it if there was none). Args: key:string (req)


Core / baseline tools

The pre-existing plugin tools (Elementor base set, core WordPress CRUD, WooCommerce, media, menus, users, options, SEO base, etc.). Full definitions are the live registry; this section is a grouped index by name prefix. Regenerate the full listing any time with the dump + generator scripts noted at the foot of this file.

Counts by prefix (267 total = 212 core + 55 net-new live; b7's 5 WPBakery tools are guarded off on mainwp): activate 1 · add 1 · ai 1 · approve 1 · cli 2 · count 3 · create 6 · deactivate 1 · delete 11 · elementor 56 · email 3 · fs 5 · generate 2 · get 31 · list 13 · pexels 2 · read 1 · reorder 1 · run 1 · search 1 · send 1 · set 2 · spam 1 · sql 3 · switch 1 · theme 7 · transient 5 · trash 1 · update 13 · upload 1 · wc 27 · widget 5 · wp 1 · write 1

(The net-new families above — a11y, seo, wpml, memory, motion, remote, woodmart, plus the b1/b5/b6/b9 additions — are documented in full in the section above.)


Regenerating this file

Against the live registry on the target container:

  1. /tmp/dev_dump_defs.php — bootstraps wp-load, calls new \AskTamMCP\MCP\Registry()->getToolDefinitions(), writes amp_defs.json.
  2. /tmp/dev_gen_skills.js — formats that JSON into this grouped reference. Re-run both whenever a batch is added so the count and listings stay in sync.

End of reference.