Bỏ qua để đến nội dung

All MCP tools

Nội dung này hiện chưa có sẵn bằng ngôn ngữ của bạn.

Generated from a live tools/list call on https://seo-navigator-mcp.autumn-recipe-cac7.workers.dev/mcp, last hand-updated 2026-06-19.

Total surface: 76 built-in tools plus proxy tools from wp-mcp-adapter (WordPress) and gohighlevel (HighLevel CRM) on linked sites. Some are conditionally hidden or refuse at runtime — see legend below.

See Tokens & scoping for how to control what a token can call, and Account safety below for the risk-tier cap and write-confirm gate that every write tool now passes through.

Account safety: risk tiers & the write-confirm gate

Section titled “Account safety: risk tiers & the write-confirm gate”

Every built-in tool carries a risk tier. Two independent controls read it:

TierMeaningExamples
T0read-only, no state changelist_sites, get_post, get_ga4_report, clarity_get_metrics
T1reversible content / draft write — never publishes or deletescreate_draft, set_seo_meta, write_astro_file
T2external write (CRM / Drive), also super-admin flag-gateddrive_save_audit
T3production publish / push, also flag-gatedpublish_post, publish_page
T4destructive / admin, super-admin onlydelete_astro_route
  • Write-confirm gate — any tool at tier ≥ T1 must be called with confirm: true. Without it the tool returns a needs_confirmation preview (what it would do) and changes nothing. This protects against a tool being invoked by mistake. The confirm parameter is auto-added to every built-in write tool’s input schema. A token with skip_write_confirm set (super-admin only — for trusted automation) bypasses this gate.
  • Per-account risk cap — a token or user can carry a max_risk ceiling. A call to a tool above the ceiling is refused (audited risk_capped) before it runs. Use it to contain a leaked automation token to read-only (max_risk = 0) or drafts-only (max_risk = 1).

Dynamic proxy tools are tiered by action verb: a GoHighLevel / wp-mcp-adapter write is treated as T2, a read as T0. See Tokens & scoping.

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).

ToolDescription
list_sitesList sites this token can access. Each row carries project_id plus an integrations object — config-presence flags for gohighlevel, clarity, ga4, gsc, google_ads, meta_ads, drive, github, rankmath (project defaults honoured for the Google/GitHub fields). Presence means configured, not probed — diagnose_site does live checks.
list_projectsList projects visible to this token (a project shows when the token can reach at least one of its sites; wildcard tokens see all). Each row: id, name, site_count, sites[], and integration flags OR-rolled-up across member sites. Use list_sites for per-site detail.
get_siteGet one site’s full configuration: platform, base URL, builders, MCP backend, and any linked GitHub repo (with branch + path prefix).
ping_siteVerify auth + connectivity to a site.
diagnose_siteReport the install state of a site. WordPress: WP REST OK, Elementor active+version, functions.php snippet applied, WP MCP Adapter + msrbuilds/elementor-mcp installed, seo-navigator-code-page installed, RankMath bridge installed + active, saswp bridge installed + active (+ entry count). GoHighLevel: Drive folder reachable + Clarity token works + super-admin gates. Use this BEFORE asking the user to install plugins.
list_builders_for_siteList 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.
list_wp_usersList WordPress users with their roles (read-only, WordPress only). Goes straight to WP core REST GET /wp/v2/users — does NOT depend on the wordpress/mcp-adapter plugin registering a users ability. Returns id, name, slug, email, roles, url. Email + roles only come back when the site’s app-password user has the list_users capability (admin). Optional filters: roles, search, page, per_page (max 100).
ToolDescription
get_postFetch one post (any status).
list_draftsList drafts and scheduled posts (never published).
ToolDescription
create_draftCreate a new draft post on the given site.
update_draftUpdate fields of an existing draft.
schedule_draftSchedule a draft to publish at a future ISO8601 time (>= 60s lead).
unscheduleReturn a scheduled post to draft state.
upload_mediaUpload an image to a site (WordPress only currently).
list_taxonomiesList tags or categories on a site (WordPress only).
create_taxonomyCreate a new tag or category (WordPress only).
ToolDescription
create_page_draftCreate 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_draftUpdate 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_pageSchedule 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_templatesList Elementor page templates available for duplicate-and-fill. Returns id, title, and placeholders (e.g. {{HERO_H1}}) for each template. Gutenberg + Duda sites return [].
ToolDescription
duplicate_pageDuplicate 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_sectionAppend 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.

These tools refuse with E_PUBLISH_NOT_ALLOWED until a super-admin enables the allow_publish flag on the site. See Publishing & preview branches.

ToolDescription
publish_post ⚙ flaggedFlip a draft / scheduled post to published. WordPress + Duda. Audit-logged.
publish_page ⚙ flaggedFlip a draft page to published. Works for Gutenberg / Elementor / code-first (all use WP REST POST /pages/:id) and Duda Pages (PUT draft_status=PUBLISHED).
ToolDescription
create_page_from_codeCreate 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_codeUpdate 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.
ToolDescription
save_md_to_githubSave 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 @]. Used by the content team.
read_md_from_githubRead 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_githubList 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_statusPatch the frontmatter of an existing markdown file (vd: status=“deployed”, append to deployments array). Body is preserved verbatim. Returns new sha.
deploy_md_to_siteRead 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)”
ToolDescription
create_astro_routeCreate a new Astro page at a route in the linked Cloudflare Pages repo. Wraps the supplied HTML in an Astro template, writes src/pages/.astro on the configured branch, and Cloudflare auto-builds + deploys. Returns commit_sha — pass it to check_astro_deploy to poll build status. Refuses if the file already exists (use update_astro_route).
update_astro_routeOverwrite 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_routesList 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_routesuper-adminDelete 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 ⓞ optionalQuery 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.

Astro source files (components, styles, content)

Section titled “Astro source files (components, styles, content)”
ToolDescription
read_astro_fileRead any source file from the linked Astro repo back into the chat. Blocks .env*, .github/**, node_modules/, dist/, and path traversal; config files are readable.
list_astro_filesList files in the repo, optionally filtered by path prefix + extension. Same blocklist as read.
write_astro_fileCreate / overwrite a file under src/components/, src/styles/, src/layouts/, src/content/, or public/. Refuses src/pages/ (use create_astro_route), config files, and secrets. allow_overwrite defaults to false. Honors target_branch (preview default). Capped at 900 KB per file.
bulk_write_astro_files ⚙ flaggedPush N files in ONE git commit (Git Data API). Requires allow_full_repo_write. Path whitelist is dropped (still blocks secrets). Handles empty repos. Limits: ≤1000 files / ≤100 MB total / ≤25 MB per file.
init_astro_project ⚙ flaggedScaffold Astro v5 boilerplate (package.json, astro.config, tsconfig, .gitignore, README, env.d.ts, global.css, favicon) + wrap homepage_html as src/pages/index.astro + optional extra_pages. ONE atomic commit. Refuses on cluttered repos (README/LICENSE/.gitignore/.gitattributes/.github OK). Requires allow_full_repo_write + allow_main_branch_push for the default main-branch init.
reset_astro_preview_branchForget the per-token cached Astro preview branch — the next write tool will mint a fresh one off the primary branch HEAD.

Astro target_branch semantics (applies to create_astro_route, update_astro_route, write_astro_file):

  • "preview" (default) — push to a per-session branch mcp/<token>/<unix>. Cloudflare Pages builds a preview deployment; call check_astro_deploy for the URL.
  • "main" — push directly to the site’s github_branch (production trigger). Requires allow_main_branch_push=1 on the site; else E_MAIN_BRANCH_LOCKED.

See Publishing & preview branches.

Enabled per site in the admin form. REST tools need only RankMath active; the plugin tools need the seo-navigator-rankmath bridge + the site’s channel set to plugin. SEO meta/schema is editable on drafts/scheduled only unless the super-admin opts the site in to allow_seo_on_published — when that flag is on, set_seo_meta / set_seo_schema write through on live posts and the audit log row carries _published: true. See Publishing & preview branches.

ToolDescription
get_seo_metaRead RankMath title, description, focus keyword, robots, canonical, OG off a post/page. Read-only.
set_seo_meta ⚙ flaggedSet any of those fields (rank_math_* via REST). Refuses with E_FORBIDDEN_OP on a published post unless the site has allow_seo_on_published=1.
set_seo_schema 🔌 plugin · ⚙ flaggedSet rank_math_schema_* structured data. Same published-post guard as set_seo_meta.
set_seo_redirect 🔌 pluginUpsert a redirect (source → destination, default 301). Never deletes.
get_sitemap_status 🔌 pluginRead the sitemap URL + module status; rebuild=true invalidates the cache.

Full setup + examples: RankMath SEO workflow.

saswp Custom Schema (WordPress only — bridge plugin)

Section titled “saswp Custom Schema (WordPress only — bridge plugin)”

Read/update saswp (“Schema & Structured Data for WP”) Custom Schema JSON-LD. saswp does not expose its custom-schema storage over core REST, so these tools talk to the bridge routes (/sn-saswp/v1/) shipped by seo-navigator-companion (or the standalone seo-navigator-saswp). No per-site toggle — the only requirement is the bridge + saswp active (E_SASWP_BRIDGE_REQUIRED otherwise). diagnose_site reports install state.

ToolDescription
get_saswp_schemaList every Custom Schema entry (post_id, type, status, title, value_type, value), one entry by id, or filter with needle (substring match inside the JSON-LD, eg AutomotiveBusiness). Read-only.
set_saswp_schemaUpdate one entry’s JSON-LD (write-confirm gated). value must match the value_type a prior read returned (string or array) so storage is never corrupted; string values are validated as JSON before writing. Never deletes, never touches saswp display/target conditions. Updating a GLOBAL entry propagates to every page its display rules target — review with get_saswp_schema first.

Google Analytics, Search Console, Sheets & Ads (any site — bound Google account)

Section titled “Google Analytics, Search Console, Sheets & Ads (any site — bound Google account)”

These read-only tools query Google APIs through the Google account bound to the site (google_user_id, with project-level fallback). The user connects Google once at /admin/users (same per-user OAuth as Drive); the site (or its project) sets ga4_property_id / gsc_site_url / google_ads_customer_id. Available on any platform, not just GoHighLevel. Refuse with E_GOOGLE_NOT_LINKED / E_GA4_NOT_LINKED / E_GSC_NOT_LINKED / E_GOOGLE_ADS_NOT_LINKED when the account or property isn’t configured.

ToolDescription
get_ga4_reportRun a Google Analytics 4 report (Analytics Data API runReport). Provide a date range, one or more metrics (eg activeUsers, sessions, screenPageViews, conversions) and optional dimensions (eg date, sessionDefaultChannelGroup, country, pagePath). Read-only.
get_gsc_search_analyticsQuery Search Console search analytics (clicks, impressions, CTR, average position). Date range + optional dimensions (query, page, country, device, date, searchAppearance). Read-only.
generate_seo_reportOne-shot composite report over a date range: GA4 (users/sessions/page views/conversions — totals + by channel) plus Search Console (clicks/impressions/CTR/position — totals + top queries). Pulls only the sources the site has configured; an unconfigured or erroring section is skipped and noted. Returns structured data and a ready-to-paste markdown summary. Read-only.
read_sheetRead a value range from a Google Sheet (content workbook) via the site’s bound Google account. Provide spreadsheet_id (from the sheet URL) and range in A1 notation (eg Content!A1:F200). Returns a 2-D array of cell values. Read-only (spreadsheets.readonly).
get_google_ads_reportRun a Google Ads report via a GAQL query (googleAds:search), eg SELECT campaign.name, metrics.cost_micros, metrics.clicks FROM campaign WHERE segments.date DURING LAST_30_DAYS. Cost fields are in micros (1,000,000 = 1 unit). Uses the site’s google_ads_customer_id (+ optional manager/MCC login-customer-id). Read-only. Prerequisites: the connected Google account must grant the adwords scope (reconnect once after this ships), and the Worker needs an app-level GOOGLE_ADS_DEVELOPER_TOKEN (Basic Access from a Google Ads Manager account) — else E_MISSING_SECRET.

Meta Marketing — Facebook / Instagram Ads (per-user OAuth)

Section titled “Meta Marketing — Facebook / Instagram Ads (per-user OAuth)”

Read-only ad insights via the Meta Graph API. Separate OAuth provider from Google: each worker user clicks Connect Meta at /admin/users once (Facebook Login, ads_read scope); the long-lived (~60-day) token is encrypted with MASTER_TOKEN. The site sets meta_ad_account_id in /admin/sites and binds the same worker user (via google_user_id). Available on any platform.

ToolDescription
get_meta_ads_insightsPull Meta Ads insights (act_{id}/insights) — spend, impressions, clicks, CTR, CPC, actions/conversions. Args: fields, date_preset (default last_30d) or time_range {since,until}, level (account/campaign/adset/ad), breakdowns, time_increment (daily rows), action_breakdowns, sort, action_attribution_windows, limit. Read-only. Refuses E_META_NOT_LINKED (no ad account / worker user), E_META_TOKEN_EXPIRED (reconnect needed), E_META_AUTH (missing ads_read / access). Prerequisites: a Meta App with Facebook Login + ads_read (App Review + Business Verification for production), and META_APP_ID / META_APP_SECRET worker secrets.
list_meta_ad_accountsList the ad accounts the bound worker user can reach (me/adaccounts) — id (act_…), name, currency, account_status, amount_spent. Works before meta_ad_account_id is set; use it to discover the id (the admin Sites form has a picker built on the same call).
get_meta_ad_accountMetadata for the linked ad account: name, currency, account_status, amount_spent, spend_cap, balance, timezone.
list_meta_campaignsCampaigns under the linked account — objective, status, effective_status, daily/lifetime budget (minor currency units), start/stop. Filter with effective_status.
list_meta_adsetsAd sets for the account, or one campaign via campaign_id — status, budgets, optimization_goal, billing_event, schedule.
list_meta_adsAds for the account, or one ad set via adset_id — status, adset/campaign ids, creative id+name.

Any site can link to one Drive folder owned by a worker user. The user clicks Connect Google at /admin/users once; the refresh token is encrypted with MASTER_TOKEN in D1. Scope is drive.file only (non-sensitive — files this app uploaded or files the user explicitly shared via Picker). The folder is configured per-site in /admin/sites (drive_user_id + drive_folder_id). See Drive + Clarity setup.

ToolDescription
drive_get_site_folderReturn metadata for the linked Drive folder (id, name, webViewLink). Read-only.
drive_list_site_filesList files in the linked folder (newest first). Read-only.
drive_save_audit ⚙ flaggedSave a CRM-audit document into the folder. Refused by default with E_DRIVE_WRITE_NOT_ALLOWED until a super-admin sets allow_drive_write=1 on the site (honours the SOP “read-only first 90 days” rule).
drive_read_fileDownload the text content of a file in the folder. Read-only.
drive_get_baselineConvenience wrapper: locate baseline.md in the folder and return its content. The weekly-audit workflow uses this to load the agreed KPI baseline before composing the diff. Read-only.

Microsoft Clarity (any site — per-site token)

Section titled “Microsoft Clarity (any site — per-site token)”

Any site (WordPress, Duda, Astro, or GoHighLevel) can link to one Microsoft Clarity project — Clarity is website analytics (heatmaps, session recordings, scroll depth), so it fits any platform. Configure clarity_project_id + the Data Export token per-site in /admin/sites; the token is encrypted with MASTER_TOKEN. All Clarity tools are read-only. A daily cron (01:30 UTC) snapshots a 1-day metric pull per linked site (any platform) so clarity_get_historical_metrics can read windows beyond the API’s 3-day cap.

ToolDescription
clarity_get_project_infoProbe the Data Export token (numOfDays=1, no dimensions). Returns whether the token works + how many metric blocks come back. Read-only.
clarity_get_metricsPull Clarity insights with up to 3 dimensions (Browser, Device, OS, Country, Source, Medium, Campaign, Channel, URL) over 1-3 days. Read-only.
clarity_get_session_recordingsAggregate session + traffic + engagement metric blocks + dashboard deep-link. Public Data Export API does not expose per-session URLs. Read-only.
clarity_get_heatmap_metricsAggregate rage/dead-click + scroll-depth metric blocks + heatmaps deep-link. Public Data Export API does not expose pixel-level heatmaps. Read-only.
clarity_get_historical_metricsRead Clarity metrics from D1 daily snapshots over a window larger than the 3-day API cap. The Worker runs a daily cron (01:30 UTC) that persists a 1-day snapshot per linked site; this tool reads from the snapshot table. Returns snapshot_count and days_missing so callers know when the window has gaps. Read-only.

These tools call GoHighLevel’s REST API directly to compute the metrics used by the CRM-audit workflow. All read-only — no writes (the GHL write gate stays enforced on the proxy tools, not here). See CRM-audit workflow for the end-to-end usage.

ToolDescription
ghl_compute_pipeline_funnelOpportunity counts + stage-to-stage conversion rates for every pipeline in the location, over a look-back window.
ghl_compute_no_show_rateAppointment status breakdown + no-show rate (also no-show rate excluding cancelled).
ghl_compute_sms_statsSMS reply rate from outbound vs inbound SMS counts. Caps conversations sampled (raise max_conversations for full coverage).
ghl_compute_tag_hygieneList tags with usage below the threshold (default 5 uses) — candidates to archive.
ghl_compute_reactivation_candidatesContacts with lastActivity older than N days, optional tag filter — pool for reactivation campaigns.
ghl_get_funnel_statsPer-page views + opt-ins + opt-in rate for every funnel in the location (closes the §1.5 metric GHL’s MCP server itself does NOT expose).
ghl_bootstrap_baselineCompose a draft baseline.md markdown from 30-day GHL data (funnel opt-in rates, pipeline funnel, no-show, reactivation pool size). Caller saves it via drive_save_audit.
ghl_list_workflowsList automation workflows for the location, with status + last-updated timestamp. Used by §3.2 monthly audit.
ghl_get_workflow_executionsExecution history for one workflow grouped by status (success / failed / error). Flag dead workflows (zero executions) + high-error workflows.
ghl_compute_window_compareCompare two adjacent windows (default 14d vs prior 14d) across opportunities, win rate, no-show rate. SOP §4 ad-hoc lead-drop diagnostic.
ghl_compute_opt_in_rateAggregate opt-in rate across all funnels (sums views + opt-ins per funnel, plus an overall sitewide rate).
ghl_compute_form_submission_rateShare of new contacts attributed to a form submission (inferred from tags + custom fields containing “form”).
ghl_get_campaign_a2p_statsBest-effort campaign + A2P deliverability surface. GHL public REST does NOT stably expose per-campaign delivery stats — this returns campaign metadata and points the caller at the dashboard for actual A2P numbers.
ghl_compute_missed_call_textbackMissed-call → text-back conversion rate. A missed call counts as “texted back” if there’s any outbound SMS to the same contact within the configurable window (default 5 minutes).
ghl_list_invoicesList invoices (GET /invoices/ — the endpoint HighLevel’s own MCP does NOT expose). Filters: status, start_at/end_at (YYYY-MM-DD), search. Returns invoice number, status, total, amount paid/due, currency, dates, contact. Requires invoices.readonly on the site’s Private Integration Token (add it under HighLevel → Settings → Private Integrations).
ghl_compute_revenue_statsRevenue stats from invoices over a window (days, default 30, or explicit start_at/end_at): revenue collected, total invoiced, outstanding, average invoice total (≈ average bill per vehicle/job), average collected per paid invoice, by-status counts, top 5 invoices. Needs invoices.readonly like above.
ghl_compute_lead_to_bookLead-to-book rate: new contacts created in the window vs how many of those booked a calendar appointment in the same window (lead_to_book_rate = new_leads_booked / new_leads), plus overall appointment volume.

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/list unless the worker has the required env secrets set (eg CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID for check_astro_deploy)
  • 🔌 plugin — requires the site’s RankMath channel set to plugin and the seo-navigator-rankmath bridge installed; else refused at runtime with E_RANKMATH_PLUGIN_REQUIRED
  • flagged — refused by default; needs a super-admin to flip the relevant site flag in /admin/sites: allow_publish (publish_post / publish_page), allow_seo_on_published (SEO on live posts), allow_main_branch_push (Astro production push), allow_full_repo_write (bulk + non-default Astro paths), allow_drive_write (drive_save_audit), allow_gohighlevel_write (the 12 mutating GoHighLevel proxy tools)

Sites with platform = gohighlevel proxy GoHighLevel’s hosted MCP server at services.leadconnectorhq.com/mcp/. The worker forwards JSON-RPC tools/list + tools/call over Bearer auth using each site’s Private Integration Token (encrypted in D1).

36 upstream tools as of writing — 24 read-only (always available) and 12 mutating (*_create-*, *_update-*, *_upsert-*, *_edit-*, *_add-*, *_remove-*, *_send-*). Mutating tools refuse with E_GOHIGHLEVEL_WRITE_NOT_ALLOWED until a super-admin enables allow_gohighlevel_write on the site. See GoHighLevel prerequisites for the full read/write table.

Naming note: code, DB, and admin UI use gohighlevel; tool descriptions surface “GoHighLevel / GHL / HighLevel” so Claude matches either alias from user prompts.

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.

ToolDescription
elementor-mcp-add-accordionAdds 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-alertAdds an alert/notice widget with type, title, and description. (site: viper-template)
elementor-mcp-add-atomic-buttonAdds an Elementor 4.0 atomic button element. (site: viper-template)
elementor-mcp-add-atomic-dividerAdds an Elementor 4.0 atomic divider element. (site: viper-template)
elementor-mcp-add-atomic-headingAdds an Elementor 4.0 atomic heading element. Accepts plain text and tag; $$type wrapping is handled automatically. (site: viper-template)
elementor-mcp-add-atomic-imageAdds an Elementor 4.0 atomic image element. Provide either image_id (from media library) or image_url. (site: viper-template)
elementor-mcp-add-atomic-paragraphAdds an Elementor 4.0 atomic paragraph element. (site: viper-template)
elementor-mcp-add-atomic-svgAdds an Elementor 4.0 atomic SVG element. (site: viper-template)
elementor-mcp-add-atomic-videoAdds an Elementor 4.0 atomic self-hosted video element. (site: viper-template)
elementor-mcp-add-atomic-widgetAdds 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-youtubeAdds an Elementor 4.0 atomic YouTube video element. (site: viper-template)
elementor-mcp-add-buttonAdds 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-containerAdds 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-counterAdds an animated counter widget that counts up to a number. (site: viper-template)
elementor-mcp-add-custom-jsAdds a custom JavaScript snippet to a page by inserting an HTML widget containing a
elementor-mcp-add-div-blockAdds an Elementor 4.0 div-block container (block flow layout). Use for non-flex containers. (site: viper-template)
elementor-mcp-add-dividerAdds a horizontal divider/separator widget with style, weight, color, and width options. (site: viper-template)
elementor-mcp-add-flexboxAdds 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-mapsAdds an embedded Google Maps widget with address, zoom, and height. (site: viper-template)
elementor-mcp-add-headingAdds 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-htmlAdds a custom HTML code widget. (site: viper-template)
elementor-mcp-add-iconAdds 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-boxAdds 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-listAdds a list widget with icons and text. Great for feature lists, checklists, and contact info. (site: viper-template)
elementor-mcp-add-imageAdds 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-boxAdds an image box widget with image, title, and description. Great for service cards. (site: viper-template)
elementor-mcp-add-image-carouselAdds a rotating image carousel/slider widget. (site: viper-template)
elementor-mcp-add-menu-anchorAdds a menu anchor for one-page navigation. (site: viper-template)
elementor-mcp-add-progressAdds an animated progress bar widget with label and percentage. (site: viper-template)
elementor-mcp-add-ratingAdds a star/icon rating widget. (site: viper-template)
elementor-mcp-add-shortcodeAdds a WordPress shortcode widget. (site: viper-template)
elementor-mcp-add-social-iconsAdds social media icon links. Great for headers and footers. (site: viper-template)
elementor-mcp-add-spacerAdds a spacer widget for vertical spacing between elements. (site: viper-template)
elementor-mcp-add-star-ratingAdds a star rating display widget. (site: viper-template)
elementor-mcp-add-stock-imageSearches 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-tabsAdds a tabbed content widget with horizontal or vertical layout. (site: viper-template)
elementor-mcp-add-testimonialAdds a testimonial widget with quote, author name, job title, and image. (site: viper-template)
elementor-mcp-add-text-editorAdds 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-pathAdds curved/path text widget. (site: viper-template)
elementor-mcp-add-toggleAdds 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-videoAdds 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-widgetAdds 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-templateApplies a saved Elementor template to a page at a given position, inserting its elements with fresh IDs. (site: viper-template)
elementor-mcp-batch-updateUpdates 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-pageCreates 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-pageCreates a new WordPress page with Elementor enabled. Optionally provide initial element content. (site: viper-template)
elementor-mcp-detect-elementor-versionReturns 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-elementDuplicates an element (including all children) with fresh IDs. The duplicate is placed immediately after the original. (site: viper-template)
elementor-mcp-export-pageExports a page’s full Elementor data as a JSON structure that can be imported elsewhere. (site: viper-template)
elementor-mcp-find-elementSearches 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-schemaReturns 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-settingsReturns 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-settingsReturns 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-structureReturns 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-schemaReturns 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-templateImports a JSON template structure into a page at an optional position. (site: viper-template)
elementor-mcp-list-pagesReturns all WordPress pages and posts that are built with Elementor. Optionally filter by post type and status. (site: viper-template)
elementor-mcp-list-templatesReturns all saved Elementor templates from the template library. Optionally filter by template type (page, section, container). (site: viper-template)
elementor-mcp-list-widgetsReturns all registered Elementor widget types with their names, titles, icons, categories, and keywords. Optionally filter by widget category. (site: viper-template)
elementor-mcp-move-elementMoves an element to a new parent container and/or position within the page tree. (site: viper-template)
elementor-mcp-remove-elementRemoves an element and all its children from a page. (site: viper-template)
elementor-mcp-reorder-elementsReorders 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-templateSaves a page or a specific element as a reusable Elementor template. (site: viper-template)
elementor-mcp-search-imagesSearches 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-imageDownloads 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-widgetUpdates settings on an existing Elementor 4.0+ atomic widget. Performs a partial merge — only provided keys are changed. (site: viper-template)
elementor-mcp-update-containerUpdates 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-elementUpdates 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-colorsUpdates 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-typographyUpdates the site-wide typography settings in the Elementor kit. (site: viper-template)
elementor-mcp-update-page-settingsUpdates page-level Elementor settings such as background, padding, custom CSS, and layout options. (site: viper-template)
elementor-mcp-update-widgetUpdates settings on an existing widget. Settings are merged (partial update). (site: viper-template)
elementor-mcp-upload-svg-iconUploads 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-abilitiesDiscover all available WordPress abilities in the system. Returns a list of all registered abilities with their basic information. (site: viper-template)
mcp-adapter-execute-abilityExecute 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-infoGet detailed information about a specific WordPress ability including its input/output schema, description, and usage examples. (site: viper-template)

This file is regenerated by running

Terminal window
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.