All MCP tools
Generated from a live
tools/listcall onhttps://seo-navigator-mcp.autumn-recipe-cac7.workers.dev/mcpat 2026-05-26.Total surface: 108 tools — 32 built-in + 76 proxy (from
wp-mcp-adapteron the linked WordPress site).See Tokens & scoping for how to control what a token can call.
Built-in tools
Section titled “Built-in tools”These tools are part of the SEO Navigator worker itself. They are always available regardless of which sites a token is scoped to (as long as the tool’s required platform credentials are configured).
Discovery
Section titled “Discovery”| Tool | Description |
|---|---|
list_sites | List sites this token can access. |
get_site | Get one site’s full configuration: platform, base URL, builders, MCP backend, and any linked GitHub repo (with branch + path prefix). |
ping_site | Verify auth + connectivity to a site. |
diagnose_site | Report the install state of a WordPress site: WP REST OK, Elementor active+version, functions.php snippet applied (meta._elementor_data exposed via REST), WP MCP Adapter + msrbuilds/elementor-mcp installed. Use this BEFORE asking the user to enable Elementor or wp-mcp-adapter mode. |
list_builders_for_site | List the page builders enabled for a WordPress site. Returns { available: [“gutenberg”, “elementor”], default: “gutenberg”, multiple: true }. Call this BEFORE create_page_draft when you have not yet asked the user which builder to use — if multiple is true, ask the user; if false, the only available builder is implied. |
Read (posts)
Section titled “Read (posts)”| Tool | Description |
|---|---|
get_post | Fetch one post (any status). |
list_drafts | List drafts and scheduled posts (never published). |
Write (posts, both WP + Duda)
Section titled “Write (posts, both WP + Duda)”| Tool | Description |
|---|---|
create_draft | Create a new draft post on the given site. |
update_draft | Update fields of an existing draft. |
schedule_draft | Schedule a draft to publish at a future ISO8601 time (>= 60s lead). |
unschedule | Return a scheduled post to draft state. |
upload_media | Upload an image to a site (WordPress only currently). |
list_taxonomies | List tags or categories on a site (WordPress only). |
create_taxonomy | Create a new tag or category (WordPress only). |
Pages (WordPress + Duda)
Section titled “Pages (WordPress + Duda)”| Tool | Description |
|---|---|
create_page_draft | Create a new draft Page. WordPress: per-request ‘page_builder’ overrides the site default (gutenberg|elementor); Elementor needs elementor_template_id + variables. Duda: pages are created with draft_status=DRAFT and never auto-publish. |
update_page_draft | Update fields of an existing Page draft. WordPress + Elementor: providing elementor_template_id + variables re-clones from template. Duda: set publish_on_next_site_publish=true to flip to STAGED_DRAFT (publishes on next site update); omit it to keep the page in DRAFT. |
schedule_page | Schedule a draft Page (WordPress only) to publish at a future ISO8601 time (>= 60s lead). Duda has no time-based page schedule — use update_page_draft with publish_on_next_site_publish=true instead. |
list_page_templates | List Elementor page templates available for duplicate-and-fill. Returns id, title, and placeholders (e.g. {{HERO_H1}}) for each template. Gutenberg + Duda sites return []. |
Pages (Duda extras)
Section titled “Pages (Duda extras)”| Tool | Description |
|---|---|
duplicate_page | Duplicate an existing Duda page into a new DRAFT page. Returns the new page’s uuid. Duda only — for WordPress + Elementor templates use create_page_draft with elementor_template_id instead. |
inject_page_section | Append a reusable SECTION element to a Duda page (Content Injection). element_source_id is the section’s site-alias as exposed by the Duda dashboard. Duda only. |
Code-first pages (WordPress only)
Section titled “Code-first pages (WordPress only)”| Tool | Description |
|---|---|
create_page_from_code | Create a WordPress page from raw HTML + CSS + JS files (a “code page”). Use this when the user has hand-built a design in Claude Code and wants to deploy it as a WP page. The server auto-scopes CSS to a deterministic class derived from (site_id, slug), wraps HTML in a Gutenberg block, and stores CSS/JS as page meta. Requires the WP plugin seo-navigator-code-page to be installed on the target site (check with diagnose_site). WordPress only. Pages are always created as drafts. |
update_page_from_code | Update an existing code page. Pass only the parts you want to change (html, css, js, title…). The scope class stays the same as long as slug is unchanged, so external CSS caches do not invalidate. WordPress only. |
GitHub markdown sync
Section titled “GitHub markdown sync”| Tool | Description |
|---|---|
save_md_to_github | Save a markdown document into the GitHub repo linked to a site. Creates or updates the file; pass sha when updating. Body MUST already include YAML frontmatter (use serializeMarkdown convention). Commit message is auto-prefixed with [content @ |
read_md_from_github | Read a single markdown file from the GitHub repo linked to a site. Returns frontmatter object, body string, and sha (needed for subsequent updates). Used by both content (re-edit) and design (deploy) teams. |
list_md_from_github | List markdown files in the GitHub repo linked to a site. Optional filter by status frontmatter (eg “ready-for-design”). Returns minimal records — call read_md_from_github for the body. |
update_md_status | Patch the frontmatter of an existing markdown file (vd: status=“deployed”, append to deployments array). Body is preserved verbatim. Returns new sha. |
deploy_md_to_site | Read a markdown file from GitHub and deploy it as a draft to a WordPress or Duda site. Dispatches by frontmatter.type (‘post’ → create_draft; ‘page’ → create_page_draft); body markdown is rendered to HTML. Optionally appends the new post_id to the file’s frontmatter.deployments array (use update_md_status afterwards to commit). Returns the new post/page ref. |
Astro routes (deploy via Cloudflare Pages)
Section titled “Astro routes (deploy via Cloudflare Pages)”| Tool | Description |
|---|---|
create_astro_route | Create a new Astro page at a route in the linked Cloudflare Pages repo. Wraps the supplied HTML in an Astro template, writes src/pages/ |
update_astro_route | Overwrite an existing Astro route. Same arg shape as create_astro_route plus an optional ‘sha’ for optimistic concurrency. The worker re-wraps the HTML and pushes a new commit. Refuses if the existing file was not generated by this server (no MCP marker), to avoid clobbering hand-written .astro files. |
list_astro_routes | List Astro pages in the linked Cloudflare Pages repo. Walks src/pages/**/*.astro from the configured branch and returns each route’s URL, file path, sha, and whether it was generated by this server. |
delete_astro_route ⚠ super-admin | Delete an Astro page file from the linked Cloudflare Pages repo. SUPER-ADMIN TOKENS ONLY — regular-user tokens cannot use this even if the scope includes it. Refuses by default if the file was not generated by this server (no MCP marker); pass force=true to delete any .astro file. The file is removed from the configured branch — git history preserves it, so recovery is via git revert. |
check_astro_deploy ⓞ optional | Query Cloudflare Pages for the status of the latest deployment of a site, or the deployment matching a specific commit_sha. Returns status (pending|building|success|failure|canceled), stage, optional preview URL, and a log_url that points to the Cloudflare dashboard for debugging. Call this after create_astro_route / update_astro_route — the build usually finishes in 30-90 seconds. Optional tool: requires CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID worker secrets; not visible if those are not set. |
Legend
- ⚠ super-admin — tool is filtered out of regular-user token creation UI + refused at runtime if invoked by a non-super-admin token (see delete_astro_route exception)
- ⓞ optional — tool is conditionally hidden from
tools/listunless the worker has the required env secrets set (egCLOUDFLARE_API_TOKEN+CLOUDFLARE_ACCOUNT_IDforcheck_astro_deploy)
Proxy tools (wp-mcp-adapter)
Section titled “Proxy tools (wp-mcp-adapter)”Sites with the wordpress/mcp-adapter plugin and one of its tool plugins (currently msrbuilds/elementor-mcp) installed expose their own MCP tool surface to the worker, which proxies it back to Claude. These tools change as you install new plugins on the site.
The list below is a snapshot — there are 76 proxy tools visible on this worker right now. Filtering happens in src/mcp/proxy-guardrails.ts — any delete-* or publish-* tool that targets a page/post/template is hidden from tools/list and refused at tools/call even if Claude tries to invoke it.
| Tool | Description |
|---|---|
elementor-mcp-add-accordion | Adds an accordion widget. Supports title/content colors, background, border, typography (set title_typography_typography=custom), spacing, icon color, and FAQ schema. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-alert | Adds an alert/notice widget with type, title, and description. (site: viper-template) |
elementor-mcp-add-atomic-button | Adds an Elementor 4.0 atomic button element. (site: viper-template) |
elementor-mcp-add-atomic-divider | Adds an Elementor 4.0 atomic divider element. (site: viper-template) |
elementor-mcp-add-atomic-heading | Adds an Elementor 4.0 atomic heading element. Accepts plain text and tag; $$type wrapping is handled automatically. (site: viper-template) |
elementor-mcp-add-atomic-image | Adds an Elementor 4.0 atomic image element. Provide either image_id (from media library) or image_url. (site: viper-template) |
elementor-mcp-add-atomic-paragraph | Adds an Elementor 4.0 atomic paragraph element. (site: viper-template) |
elementor-mcp-add-atomic-svg | Adds an Elementor 4.0 atomic SVG element. (site: viper-template) |
elementor-mcp-add-atomic-video | Adds an Elementor 4.0 atomic self-hosted video element. (site: viper-template) |
elementor-mcp-add-atomic-widget | Adds any Elementor 4.0+ atomic widget to a container. Settings must use the $$type prop format. For simpler usage, prefer the convenience tools (add-atomic-heading, etc.). (site: viper-template) |
elementor-mcp-add-atomic-youtube | Adds an Elementor 4.0 atomic YouTube video element. (site: viper-template) |
elementor-mcp-add-button | Adds a button widget. Supports typography (set typography_typography=custom), border, background, hover colors, box shadow, and text shadow. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-container | Adds a container to a page. Supports both flex (default) and grid layouts via container_type. Omit parent_id for top-level, or provide a parent container ID for nesting. Flex tips: Use flex_direction=row for side-by-side children, flex_wrap=wrap for wrapping, flex_justify_content for main-axis alignment (e.g. space-between, center), flex_align_items for cross-axis alignment. (The shorthand justify_content / align_items are also accepted and remapped to flex_justify_content / flex_align_items.) Grid tips: Set container_type=grid with grid_columns_grid, grid_rows_grid, grid_gaps. Background: set background_background=classic and background_color=#hex. Border: set border_border=solid, border_width, border_color. Also supports min_height, overflow, html_tag, padding, margin, position, z_index, animation. (site: viper-template) |
elementor-mcp-add-counter | Adds an animated counter widget that counts up to a number. (site: viper-template) |
elementor-mcp-add-custom-js | Adds a custom JavaScript snippet to a page by inserting an HTML widget containing a |
elementor-mcp-add-div-block | Adds an Elementor 4.0 div-block container (block flow layout). Use for non-flex containers. (site: viper-template) |
elementor-mcp-add-divider | Adds a horizontal divider/separator widget with style, weight, color, and width options. (site: viper-template) |
elementor-mcp-add-flexbox | Adds an Elementor 4.0 flexbox container. Layout properties (direction, justify, align, gap) are applied as local styles automatically. Use this instead of add-container for Elementor 4.0+ sites. (site: viper-template) |
elementor-mcp-add-google-maps | Adds an embedded Google Maps widget with address, zoom, and height. (site: viper-template) |
elementor-mcp-add-heading | Adds a heading widget. Supports full typography (set typography_typography=custom first), text stroke, text shadow, blend mode, hover color. Also accepts responsive suffixes (align_tablet, align_mobile) and common advanced controls (_margin, _padding, background, border, etc). (site: viper-template) |
elementor-mcp-add-html | Adds a custom HTML code widget. (site: viper-template) |
elementor-mcp-add-icon | Adds an icon widget. Supports Font Awesome and SVG icons, view modes (default/stacked/framed), hover colors, rotate, padding, border radius, and hover animation. For SVG, first use upload-svg-icon. (site: viper-template) |
elementor-mcp-add-icon-box | Adds an icon box widget. Supports icon position (top/left/right), title typography (set title_typography_typography=custom), description typography, icon spacing, hover colors, and hover animation. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-icon-list | Adds a list widget with icons and text. Great for feature lists, checklists, and contact info. (site: viper-template) |
elementor-mcp-add-image | Adds an image widget. Supports width, max-width, opacity, border, border-radius, box shadow, CSS filters (brightness, contrast, saturation, hue), and hover effects. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-image-box | Adds an image box widget with image, title, and description. Great for service cards. (site: viper-template) |
elementor-mcp-add-image-carousel | Adds a rotating image carousel/slider widget. (site: viper-template) |
elementor-mcp-add-menu-anchor | Adds a menu anchor for one-page navigation. (site: viper-template) |
elementor-mcp-add-progress | Adds an animated progress bar widget with label and percentage. (site: viper-template) |
elementor-mcp-add-rating | Adds a star/icon rating widget. (site: viper-template) |
elementor-mcp-add-shortcode | Adds a WordPress shortcode widget. (site: viper-template) |
elementor-mcp-add-social-icons | Adds social media icon links. Great for headers and footers. (site: viper-template) |
elementor-mcp-add-spacer | Adds a spacer widget for vertical spacing between elements. (site: viper-template) |
elementor-mcp-add-star-rating | Adds a star rating display widget. (site: viper-template) |
elementor-mcp-add-stock-image | Searches Openverse for an image, downloads it to the Media Library, and adds it as an image widget to the page — all in one step. Defaults to landscape (wide) images for consistent layouts. Combines search-images + sideload-image + add-image. (site: viper-template) |
elementor-mcp-add-tabs | Adds a tabbed content widget with horizontal or vertical layout. (site: viper-template) |
elementor-mcp-add-testimonial | Adds a testimonial widget with quote, author name, job title, and image. (site: viper-template) |
elementor-mcp-add-text-editor | Adds a rich text editor widget. Supports typography (set typography_typography=custom), drop cap, text columns, and text color. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-text-path | Adds curved/path text widget. (site: viper-template) |
elementor-mcp-add-toggle | Adds a toggle widget (multiple items can be open). Supports title/content colors, background, border, typography (set title_typography_typography=custom), spacing, and icon color. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-video | Adds a video widget. Supports YouTube, Vimeo, Dailymotion, self-hosted. Options: start/end time, lazy load, privacy mode, image overlay, play icon. Accepts responsive suffixes and advanced controls. (site: viper-template) |
elementor-mcp-add-widget | Adds any Elementor widget to a container. Use get-widget-schema to discover the available settings for each widget type. (site: viper-template) |
elementor-mcp-apply-template | Applies a saved Elementor template to a page at a given position, inserting its elements with fresh IDs. (site: viper-template) |
elementor-mcp-batch-update | Updates multiple elements in a single save operation. Each operation specifies an element_id and settings to merge. Much more efficient than calling update-element multiple times. (site: viper-template) |
elementor-mcp-build-page | Creates a complete Elementor page from a declarative structure in a single call. Supports nested containers and any widget types. IMPORTANT LAYOUT RULES: (1) For side-by-side columns, use a parent container with flex_direction=row — children are auto-set to content_width=full with equal percentage widths (e.g. 2 children = 50%, 3 = 33.33%). (2) NEVER set flex_wrap or _flex_size in settings — these cause layout overflow. The tool handles layout automatically. (3) Background colors: set background_background=classic and background_color=#hex on containers. (4) Background images: set background_background=classic, background_image={url,id}, background_size=cover. (5) Background overlay: background_overlay_background=classic, background_overlay_color=#hex, background_overlay_opacity={size:0.7,unit:px}. (6) Text alignment: text_align on text/heading widgets. (7) Use search-images and sideload-image tools to get real images before building. (site: viper-template) |
elementor-mcp-create-page | Creates a new WordPress page with Elementor enabled. Optionally provide initial element content. (site: viper-template) |
elementor-mcp-detect-elementor-version | Returns the Elementor version and whether atomic elements (v4.0+) are supported. Call this first to decide whether to use legacy tools (add-heading, add-container) or atomic tools (add-atomic-heading, add-flexbox). (site: viper-template) |
elementor-mcp-duplicate-element | Duplicates an element (including all children) with fresh IDs. The duplicate is placed immediately after the original. (site: viper-template) |
elementor-mcp-export-page | Exports a page’s full Elementor data as a JSON structure that can be imported elsewhere. (site: viper-template) |
elementor-mcp-find-element | Searches elements on a page by type, widget type, or settings content. Returns matching element IDs, types, and a settings preview. (site: viper-template) |
elementor-mcp-get-container-schema | Returns JSON Schema for all container controls (flex + grid), including flex_direction, justify_content, align_items, flex_wrap, gap, content_width, min_height, container_type, grid controls, background, border, padding, and more. (site: viper-template) |
elementor-mcp-get-element-settings | Returns the current settings for a specific element on a page. Provide the post ID and element ID to retrieve all control values for that element. (site: viper-template) |
elementor-mcp-get-global-settings | Returns the active Elementor kit/global settings including colors, typography, spacing, and breakpoints. These are the site-wide design tokens used across all pages. (site: viper-template) |
elementor-mcp-get-page-structure | Returns the element tree for an Elementor page, showing all containers, widgets, and their nesting structure. Each element includes its ID, type, widget type (for widgets), and child elements. (site: viper-template) |
elementor-mcp-get-widget-schema | Returns the full JSON Schema for a widget type’s settings, describing all available controls and their types. Use this to discover what settings a widget accepts before creating or updating it. (site: viper-template) |
elementor-mcp-import-template | Imports a JSON template structure into a page at an optional position. (site: viper-template) |
elementor-mcp-list-pages | Returns all WordPress pages and posts that are built with Elementor. Optionally filter by post type and status. (site: viper-template) |
elementor-mcp-list-templates | Returns all saved Elementor templates from the template library. Optionally filter by template type (page, section, container). (site: viper-template) |
elementor-mcp-list-widgets | Returns all registered Elementor widget types with their names, titles, icons, categories, and keywords. Optionally filter by widget category. (site: viper-template) |
elementor-mcp-move-element | Moves an element to a new parent container and/or position within the page tree. (site: viper-template) |
elementor-mcp-remove-element | Removes an element and all its children from a page. (site: viper-template) |
elementor-mcp-reorder-elements | Reorders the children of a container by providing an ordered array of element IDs. All IDs must be direct children of the specified container. (site: viper-template) |
elementor-mcp-save-as-template | Saves a page or a specific element as a reusable Elementor template. (site: viper-template) |
elementor-mcp-search-images | Searches Openverse (WordPress.org) for Creative Commons licensed images. Returns image URLs, thumbnails, licensing info, and attribution. Use the returned URLs with sideload-image or add-stock-image. (site: viper-template) |
elementor-mcp-sideload-image | Downloads an external image URL into the WordPress Media Library and returns the local attachment ID and URL. Use this after search-images to import a chosen image. (site: viper-template) |
elementor-mcp-update-atomic-widget | Updates settings on an existing Elementor 4.0+ atomic widget. Performs a partial merge — only provided keys are changed. (site: viper-template) |
elementor-mcp-update-container | Updates settings on an existing container. Settings are merged (partial update). Supports all container controls: flex_direction, flex_justify_content, flex_align_items, flex_wrap, flex_align_content, gap, content_width, min_height, overflow, html_tag, container_type, grid controls, background (set background_background=classic first), border (set border_border=solid first), border_radius, box_shadow, padding, margin, position, z_index, animation, shape dividers, etc. (The unprefixed justify_content / align_items / align_content are accepted and remapped to the flex_-prefixed keys.) (site: viper-template) |
elementor-mcp-update-element | Updates settings on any element (container or widget). Settings are merged (partial update). Works for all element types — no need to know if the target is a container or widget. (site: viper-template) |
elementor-mcp-update-global-colors | Updates the site-wide color palette in the Elementor kit. Provide an array of color objects with id, title, and color (hex). (site: viper-template) |
elementor-mcp-update-global-typography | Updates the site-wide typography settings in the Elementor kit. (site: viper-template) |
elementor-mcp-update-page-settings | Updates page-level Elementor settings such as background, padding, custom CSS, and layout options. (site: viper-template) |
elementor-mcp-update-widget | Updates settings on an existing widget. Settings are merged (partial update). (site: viper-template) |
elementor-mcp-upload-svg-icon | Uploads an SVG icon to the WordPress Media Library and returns an Elementor icon object ready to use with any widget that accepts icons (icon, icon-box, button, etc.). Accepts either an external SVG URL or raw SVG markup. The returned icon object has the format: { “value”: { “id”: 123, “url”: ”…” }, “library”: “svg” }. Use this value for the selected_icon setting in icon/icon-box widgets, or the selected_icon setting in button widgets. (site: viper-template) |
mcp-adapter-discover-abilities | Discover all available WordPress abilities in the system. Returns a list of all registered abilities with their basic information. (site: viper-template) |
mcp-adapter-execute-ability | Execute a WordPress ability with the provided parameters. This is the primary execution layer that can run any registered ability. (site: viper-template) |
mcp-adapter-get-ability-info | Get detailed information about a specific WordPress ability including its input/output schema, description, and usage examples. (site: viper-template) |
How to regenerate this page
Section titled “How to regenerate this page”This file is regenerated by running
node scripts/gen-tools-reference.mjs <bearer-token>from the seo-navigator-mcp repository. The script hits tools/list on the production worker and overwrites seo-navigator-docs/src/content/docs/reference/tools.md.