MCP server

Pro Vantage SEO Pro includes an MCP server. AI agents such as Claude Code can use it to read and change the SEO of your site. This page tells you how to create a token, connect a client, and what each of the 20 tools does.

Overview

  • The plugin serves the MCP endpoint itself. You do not install a separate server.
  • The transport is Streamable HTTP in stateless JSON mode. Each request is one HTTP POST with one JSON-RPC message, and the answer is one JSON response. The server does not use server-sent events.
  • The server supports MCP protocol version 2025-06-18. It does not accept JSON-RPC batches.
  • The server name is vantage-seo.
  • The endpoint needs an active Pro license. Without one, every request gets HTTP 403 with a message that tells you to activate or renew the license.

Instatic has its own MCP server for content and page editing, at /_instatic/mcp. The Vantage SEO server is separate. It covers SEO data only, and it uses its own tokens.

Endpoint

https://your-site.example/admin/api/cms/plugins/monkeywebs.seo/runtime/mcp

The Connections tab of SEO Settings shows the full endpoint URL for your site. The URL is absolute only after you save a site URL. The endpoint accepts POST only. Other methods get HTTP 405.

Create a token

Each client needs a bearer token.

  1. Open SEO Settings, Connections tab.
  2. Under New token, enter a label, for example claude-code-laptop. A label can have up to 64 characters.
  3. Select the scope: read or read-write.
  4. Select the expiry: 30 days, 90 days, 365 days or never. The default is 90 days.
  5. Click Create token. Copy the token at once with Copy token. The token starts with vseo_. The plugin shows it one time only.

Your browser creates the token and computes its SHA-256 hash. Only the hash goes to the server. The plugin cannot show you the token again. If you lose it, revoke it and create a new one.

Scopes

ScopeWhat the client can do
readCall the 10 read tools. The write tools do not appear in the tool list.
read-writeCall all 20 tools.

Write tools use the same validation as the admin screens. The MCP server never returns secrets, such as API keys or Search Console credentials.

Revoke a token

On the Connections tab, under Tokens, click the revoke button next to the token and confirm. The token stops working at once. The plugin removes revoked and expired tokens from the list after 30 days.

Limits and errors

HTTP statusCause
401The token is missing, wrong, revoked or expired.
403The Pro license is not active.
405The request is not a POST.
406The Accept header does not allow application/json.
413The request body is too large.
429The token made more than 60 calls in one minute.

The server reads the token only from the Authorization header. It never reads a token from the URL.

Audit log

The plugin records every call in an audit log. Each entry has the time, the tool or method name, the token label, a short hash of the arguments and the result: ok, error or denied. The log does not store the arguments. The Connections tab shows recent activity. The plugin keeps the newest 500 entries.

Connect Claude Code

Run this command. Replace the URL with your endpoint and <TOKEN> with your token. The Connections tab shows the same command with your URL.

claude mcp add --transport http vantage-seo https://your-site.example/admin/api/cms/plugins/monkeywebs.seo/runtime/mcp --header "Authorization: Bearer <TOKEN>"

Other MCP clients use the same URL and the same Authorization header.

Test the endpoint with curl

curl -X POST https://your-site.example/admin/api/cms/plugins/monkeywebs.seo/runtime/mcp \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The server supports the methods initialize, ping, tools/list, tools/call, resources/list and resources/read.

Resources

URIContent
seo://configThe stored SEO settings as JSON. These settings hold no secrets.
seo://audit-reportThe latest site audit report.

Tools

All tool names start with seo_. "Writes" means the tool needs a read-write token. The table input is a table slug, for example pages. The entryId input is the id of a row in that table.

ToolWhat it doesMain inputsWrites?
seo_get_entry_metaReturns the final SEO values of one entry (override plus site and table defaults) and the stored override.table, entryIdNo
seo_set_entry_metaReplaces the stored SEO override of one entry: title, description, canonical, robots, Open Graph fields, Twitter card, focus keywords, schema type, custom JSON-LD.table, entryId, metaYes
seo_list_entries_seo_statusLists the entries of a table with their SEO status: override present, missing description, noindex.table, optional filter (missing_description, noindex, no_override), limit up to 100No
seo_analyze_entryRuns the content analysis on the stored content of an entry and returns the checks and the score.table, entryId, optional keywordNo
seo_get_site_issuesReturns a site-wide report: pages without a description, noindex overrides, image findings and 404 totals.NoneNo
seo_regenerate_sitemapClears the cached sitemap and builds it again from the page list. Returns the URL count.NoneYes
seo_bulk_set_metaQueues a background job that writes SEO overrides for up to 200 entries. The plugin checks the whole batch first and rejects it if one entry is not valid. Returns a job id.table, entries (each with entryId and meta)Yes
seo_get_job_statusReturns the state, progress, result and error of a background job.jobIdNo
seo_list_redirectsLists all stored redirect rules.NoneNo
seo_get_404_logReturns the 404 paths with their hit counts, highest first.Optional limitNo
seo_create_redirectCreates a redirect rule: 301 or 302 to a target, or 410 gone. The source can be an exact path or a regular expression.fromPath, status, toPath (not for 410), optional isRegex, note, enabledYes
seo_update_redirectChanges some fields of a redirect rule.key, then any of fromPath, toPath, status, isRegex, note, enabledYes
seo_delete_redirectDeletes a redirect rule.keyYes
seo_list_schema_templatesLists the stored schema templates.NoneNo
seo_set_schema_templateCreates a schema template (no key) or replaces one (with key). Type custom needs rawJson.name, targetTable, schemaType, optional key, fields, rawJson, enabledYes
seo_delete_schema_templateDeletes a schema template.keyYes
seo_set_entry_schemaSets the page type and the custom JSON-LD of one entry. null clears a field.table, entry, schemaType and/or customSchemaJsonYes
seo_get_audit_reportReturns the latest site audit report: a score from 0 to 100 and the findings. Returns null before the first audit.NoneNo
seo_run_auditRuns the site audit now, stores the report and returns it.NoneYes
seo_get_gsc_summaryReturns the cached Search Console data for each page (clicks, impressions, CTR, position over 28 days) and the sync status. It does not call Google.Optional limit up to 500No

Things to know about the tools

  • Publish after a change. The plugin writes tags into HTML at publish time. A tool that changes meta, schema or templates does not change pages that Instatic already published. Publish the pages to apply the change. The Vantage SEO server has no publish tool.
  • Redirects need your proxy. Instatic has no redirect feature for plugins. A stored rule changes nothing on the server until you install an export on your reverse proxy. With Pro, the 404 page also forwards visitors with a small script. See Redirects.
  • Background jobs are slow on purpose. A bulk job runs in steps of 10 entries on the 15-minute maintenance task. Poll seo_get_job_status. At most 5 bulk jobs can wait or run at the same time.
  • The audit reads the last publish. The audit does not crawl your live site. It uses facts that the plugin recorded when each page was published. Publish first, then run the audit.
  • Per-entry values apply to regular pages. Entries of other tables render through a template page, and the plugin skips per-entry values there.