MCP reference
import { Aside, Tabs, TabItem } from ‘@astrojs/starlight/components’;
Install in your MCP client
Section titled “Install in your MCP client”{ "mcpServers": { "vantage": { "command": "npx", "args": ["-y", "@vantageconnections/mcp"], "env": { "VANTAGE_TOKEN": "vc_pat_..." } } }}In Cursor → Settings → MCP → Add Server:
{ "command": "npx", "args": ["-y", "@vantageconnections/mcp"], "env": { "VANTAGE_TOKEN": "vc_pat_..." }}// ~/Library/Application Support/Claude/claude_desktop_config.json (Mac)// %APPDATA%\Claude\claude_desktop_config.json (Windows){ "mcpServers": { "vantage": { "command": "npx", "args": ["-y", "@vantageconnections/mcp"], "env": { "VANTAGE_TOKEN": "vc_pat_..." } } }}See Set up MCP for the full walkthrough including troubleshooting.
Tools (88)
Section titled “Tools (88)”vantage_whoami
Section titled “vantage_whoami”Confirm authentication. Returns the email + role + websiteId scope of the currently active API key. Use this first if there’s any doubt about credentials.
No parameters.
vantage_websites_list
Section titled “vantage_websites_list”List every website on the platform you have access to. Returns id, name, slug, status, owner, and creation date for each.
No parameters.
vantage_websites_get
Section titled “vantage_websites_get”Get a single website by id with full record.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_repo
Section titled “vantage_websites_repo”Get the website’s editable GitHub repo — the fork of the Melbora Next.js template that the site deploys from. Call this whenever the user wants to change ANYTHING visual or structural that vantage_content_save can’t reach: colors, fonts, layout, components, page structure, new routes, custom JSX, Tailwind/CSS, images, OG card design, anything in the codebase. Returns the repo full name, https + ssh clone URLs, default branch, the Vercel project URL, and a short workflow note. After cloning + editing + pushing, Vercel auto-redeploys; you can confirm with vantage_websites_deployment.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_workspace_detect
Section titled “vantage_workspace_detect”Figure out which Melbora website (if any) the agent’s current working directory belongs to. Reads the directory’s git remote (origin) and matches it against every website the active token can see. Returns { matched: true, websiteId, slug, repoFullName, liveUrl, isVantageRepo: true } on a match, or { matched: false, reason, suggestedAction } otherwise. Call this at the start of any session where the user mentions a specific site or seems to expect Claude to already know which site they’re on — saves the agent from having to ask. If you can’t determine the cwd, ask the user to run pwd in the shell and pass its output as dir, OR pass the output of git remote get-url origin as gitRemote.
| Parameter | Type | Required | Description |
|---|---|---|---|
dir | string | no | Absolute path to the directory to inspect. Defaults to the MCP server’s process.cwd() (typically the directory Claude Code was launched in). Pass explicitly when you know Claude has cd’d elsewhere. |
gitRemote | string | no | Skip the file read — pass the origin URL directly (e.g. ‘https://github.com/Vantage-Connections-Org/client-us-sweets.git’). Useful when dir isn’t accurate or the agent already has the remote in hand. |
vantage_workspace_init
Section titled “vantage_workspace_init”Close the loop after vantage_websites_create: given a websiteId (or slug), polls the GitHub provisioning step until the repo is reachable, then returns a ready-to-paste git clone shell command + workflow notes. Use this immediately after creating a new site, OR when the user wants to start coding on an existing site and isn’t in its repo yet. The tool itself doesn’t run shell commands — it gives the agent the exact command + recommended target directory so Claude can invoke Bash and land inside the repo. Default timeout 60s (provisioning is usually <30s); pass timeoutSeconds to extend.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | no | Either websiteId (UUID) or slug. The tool resolves the slug if needed. |
slug | string | no | Alternative to websiteId — resolve by slug instead. |
targetDir | string | no | Optional. Local path where the repo should be cloned. Defaults to . (clone into the cwd). Use a path like ./client-foo to clone into a subfolder. |
timeoutSeconds | number | no |
vantage_websites_create
Section titled “vantage_websites_create”Provision a new website. Creates a brand-new GitHub repo forked from the Melbora Next.js template, a Vercel project that builds it, a CMS content document, and optional integrations. Returns the new websiteId immediately; the GitHub + Vercel jobs finish in the background (typically <30s). Next step after this returns: call vantage_workspace_init with the returned websiteId to wait for the repo to come online and get a clone command — then Bash-clone into the agent’s current directory so you can immediately start coding. Do NOT try to edit the live site via CMS content alone if the user asked for design/layout changes; the repo is the editable surface. Optional clientId attaches it to a specific client at creation.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Display name (e.g. ‘Joe’s Plumbing’). |
slug | string | yes | Lowercase URL-safe slug (e.g. ‘joes-plumbing’). Becomes the GitHub repo + Vercel project name. |
clientId | string | no |
vantage_websites_delete
Section titled “vantage_websites_delete”Tear down a website: cancel Stripe subscription, delete the GitHub repo + Vercel project, revoke per-site OpenRouter keys, drop all platform rows. Destructive and irreversible — only call after explicit confirmation.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_content_get
Section titled “vantage_content_get”Read the website’s CMS content document — the JSON that drives the live site’s copy (hero text, service descriptions, FAQ answers, business info). Does NOT include visual design, layout, fonts, colors, or component structure — those live in the website’s GitHub repo (use vantage_websites_repo to get the clone URL).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_content_save
Section titled “vantage_content_save”Replace the website’s CMS content document (a commit to the site’s GitHub repo). Use this for copy/text changes only — headings, service descriptions, contact info, FAQ entries. For visual changes (colors, fonts, layout, components, new pages) DO NOT use this — call vantage_websites_repo to get the GitHub repo URL and edit the Next.js template directly. Pass the new content object as content; optional sha enables optimistic-concurrency (pass the sha from the most recent get).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
content | object | yes | |
sha | string | no |
vantage_blueprint_get
Section titled “vantage_blueprint_get”Return the website’s blueprint graph — the nodes (github/vercel/openrouter/etc.) + edges between them + their canvas positions.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_bookings_enable
Section titled “vantage_bookings_enable”Turn on Cal.com appointment bookings for a website. Pushes NEXT_PUBLIC_CAL_USERNAME to Vercel and redeploys.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
calUsername | string | yes | |
brandColor | string | no | Optional #RRGGBB. |
vantage_bookings_disable
Section titled “vantage_bookings_disable”Turn off Cal.com bookings. Removes env vars, deletes the service row, redeploys.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_seo_set_tier
Section titled “vantage_seo_set_tier”Set or change the SEO/GEO automation tier. Pushes NEXT_PUBLIC_SEO_TIER to Vercel and redeploys.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
tier | essentials | growth | premium | premium_plus | yes |
vantage_seo_disable
Section titled “vantage_seo_disable”Turn off SEO automation for a website.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_seo_scan
Section titled “vantage_seo_scan”Run an immediate SEO health scan against the live site. Returns score 0-100 + the issue list (missing title, no JSON-LD, etc.).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_seo_geo_probe
Section titled “vantage_seo_geo_probe”Send a prompt to an AI search engine (Perplexity Sonar by default) and report whether the website’s primary domain shows up in the citations.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
prompt | string | yes | |
model | string | no |
vantage_seo_get
Section titled “vantage_seo_get”Read everything we know about the website’s SEO state — current tier, capabilities, last scan, GEO probes, citations checklist, competitor URLs, Search Console metrics.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_domains_list
Section titled “vantage_domains_list”List domains attached to a website (site + email).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_domains_add
Section titled “vantage_domains_add”Attach a new domain to a website. Returns the DNS records the client needs to set at their registrar.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
domain | string | yes | |
kind | site | email | yes |
vantage_domains_remove
Section titled “vantage_domains_remove”Detach a domain from a website. Removes it from Vercel + Resend as appropriate; the registrar record is the client’s to manage.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
domain | string | yes |
vantage_websites_deployment
Section titled “vantage_websites_deployment”Get the most recent Vercel deployment for a website: state (READY/ERROR/BUILDING), the commit SHA + message that built it, the inspector URL, and — when state is ERROR — the errorMessage explaining why the build failed. The first thing to check when a site isn’t updating or just stopped working.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_redeploy
Section titled “vantage_websites_redeploy”Force a fresh Vercel deploy of the website’s current main branch. Use after fixing a config or env-var issue Vercel doesn’t auto-detect. Returns the new deployment id; poll vantage_websites_deployment to see its status.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_logs
Section titled “vantage_websites_logs”Per-service recent activity for a website. service is one of: github, vercel, openrouter, resend, bookings, seo, cms, stripe, cognito, domain. Useful for diagnosing what a specific integration just did or why it failed.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
service | string | yes |
vantage_websites_services
Section titled “vantage_websites_services”List the integrations actually provisioned for a website (GitHub repo, Vercel project, OpenRouter key, Resend domain, etc.), with their external ids + metadata. Useful to confirm a feature is wired up before debugging it.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_jobs
Section titled “vantage_websites_jobs”Provisioning job history for a website (newest first). Each entry shows what step the orchestrator ran, completedSteps, and any errors. Use when the initial provision seems stuck or partially failed.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_set_features
Section titled “vantage_websites_set_features”Toggle individual feature flags on a website (openrouter for the AI assistant, resend for transactional email). Bookings + SEO have their own dedicated tools because they need extra config; this is just the simple booleans.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
openrouter | boolean | no | |
resend | boolean | no |
vantage_seo_ai_alt_text
Section titled “vantage_seo_ai_alt_text”Generate alt text for an image given a short description + business context. Quota-gated by tier.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
imageDescription | string | yes | What’s actually in the image (e.g. ‘owner standing in front of the storefront’). |
context | string | no | Business context (e.g. ‘Acme Plumbing in Irvine, CA’). Optional but improves quality. |
vantage_seo_ai_meta_description
Section titled “vantage_seo_ai_meta_description”Generate a 140-160 char meta description for a page given its title + a body excerpt. Quota-gated by tier.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
pagePath | string | no | |
pageTitle | string | yes | |
pageBodyExcerpt | string | no |
vantage_seo_ai_blog_draft
Section titled “vantage_seo_ai_blog_draft”Generate a Markdown blog post draft for a topic (~700 words by default, includes an FAQ section). Returns the Markdown ready to paste into the CMS. Quota-gated.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
topic | string | yes | |
audience | string | no | |
lengthWords | number | no |
vantage_seo_ai_local_page
Section titled “vantage_seo_ai_local_page”Generate a Markdown city-specific landing page. The CMS stores it under localPages so the template renders it at /areas/[slug] with Service+City JSON-LD. Quota-gated; Premium+ tier.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
city | string | yes | |
focusService | string | no | |
businessSummary | string | no |
vantage_seo_ai_content_audit
Section titled “vantage_seo_ai_content_audit”Audit the website’s CMS content document with a fast LLM and return a structured 8-dimension rubric: title, tagline, about, services, faq, business, contact, localPages. Each finding has severity (info/warn/error), score (0-100), one-line summary, and a concrete suggestion. Returns overallScore (weighted average). Content-hashed cache: re-running on unchanged content returns cached:true and does NOT consume a quota slot. Growth+ tier. Pass the full site.json document body as siteContent — typically what vantage_content_get returns under .content.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
siteContent | object | yes | The content document. Pass the parsed JSON object — do not stringify. |
vantage_seo_set_competitors
Section titled “vantage_seo_set_competitors”Replace the list of competitor URLs the nightly scraper diffs. Pass an array of full https URLs (max 10).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
urls | string[] | yes |
vantage_seo_gsc_connect
Section titled “vantage_seo_gsc_connect”Start a Google Search Console OAuth flow for the website. Returns an authUrl the admin sends the client through; after consent Google redirects back to our callback and stores the token. Until the client completes the consent, GSC pulls are skipped.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_seo_gsc_refresh
Section titled “vantage_seo_gsc_refresh”Force an immediate Search Console metrics pull (the cron normally does this on cadence). Requires GSC to already be connected.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_seo_gsc_disconnect
Section titled “vantage_seo_gsc_disconnect”Revoke the stored Google Search Console token + clear cached metrics for a website.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_clients_list
Section titled “vantage_clients_list”List every client account on the platform. Returns id, name, email, contact phone, GitHub username, Stripe customer id. Admin-only.
No parameters.
vantage_clients_get
Section titled “vantage_clients_get”Get one client by id.
| Parameter | Type | Required | Description |
|---|---|---|---|
clientId | string | yes |
vantage_clients_websites
Section titled “vantage_clients_websites”List every website owned by a given client.
| Parameter | Type | Required | Description |
|---|---|---|---|
clientId | string | yes |
vantage_websites_transfer
Section titled “vantage_websites_transfer”Hand a website over to an existing client. Sets pendingClientId on the website; the client then pays via Stripe Checkout in their portal to finalize. For a brand-new client without a Melbora account yet, use vantage_websites_invite_client instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
clientId | string | yes |
vantage_websites_cancel_transfer
Section titled “vantage_websites_cancel_transfer”Revoke a pending transfer before the client pays.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_resend_transfer
Section titled “vantage_websites_resend_transfer”Re-send the magic-link transfer claim email to the client (when status is pending_acceptance). The original link is valid for 7 days; use this if the client missed the email, it expired, or it got filtered to spam. The previous link still works if not expired — re-sending mints a fresh one.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_unassign
Section titled “vantage_websites_unassign”Release a website from its current owning client. Cancels the Stripe subscription + clears clientId. Use when a client churns or you want to re-park the site under house ownership. Destructive on the billing side — confirm first.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_set_price
Section titled “vantage_websites_set_price”Set the monthly subscription price (whole USD). If a Stripe subscription is active, the change applies on the next cycle with proration. If not, just updates the product price for future Checkout sessions.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
monthlyPriceUsd | number | yes | Whole USD (e.g. 79). |
vantage_websites_invite_client
Section titled “vantage_websites_invite_client”Invite a brand-new client (no Melbora account yet) to claim a website. Sends a magic-link email. When the recipient signs up + claims the invitation, the platform sets pendingClientId on the website and the Stripe Checkout flow kicks off automatically. Refuses if the email already belongs to an existing client (use vantage_websites_transfer for those).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
email | string | yes |
vantage_websites_cancel_invite
Section titled “vantage_websites_cancel_invite”Revoke an open invitation (or an accepted-but-unpaid one) for a website.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_invitations
Section titled “vantage_websites_invitations”Invitation history for a website, newest first. Includes pending / accepted / revoked / expired entries.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_invite_collaborator
Section titled “vantage_websites_invite_collaborator”Invite the website’s owning client as a GitHub repo collaborator (requires client.githubUsername set). Use this when a client asks to edit their site’s code directly — gives them push access to the per-website repo.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_invoices
Section titled “vantage_websites_invoices”List recent Stripe invoices for a website (up to 50, newest first). Each invoice carries amountDue/amountPaid in minor units (cents), status (paid|open|uncollectible|void|draft), period dates, and a hostedInvoiceUrl that’s a one-click pay page. Returns an empty list for sites without an active subscription. Use when the user asks about billing history, unpaid invoices, or wants the pay link to send a client.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_invoice_one_off
Section titled “vantage_websites_invoice_one_off”Admin-only: charge the owning client a one-off amount (custom work, extra setup, etc.) outside the recurring subscription. Stripe auto-charges the card on file; if that fails the invoice stays open and the returned hostedInvoiceUrl is where the client can pay manually. Requires the site to already have an owning client + Stripe customer (i.e. they completed the subscription Checkout). Amount is in whole/decimal USD; description is shown on the invoice.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
amountUsd | number | yes | Positive amount in USD, e.g. 250 or 49.99 |
description | string | yes | Line-item description shown on the invoice |
currency | string | no | ISO-4217 lowercase, defaults to usd |
vantage_websites_billing_portal
Section titled “vantage_websites_billing_portal”Mint a Stripe Customer Portal session for this website’s subscription. Returns { url }. Send the URL to the client (or admin) — they land on Stripe’s self-serve page where they can update card on file, view all invoices, download receipts, pause/cancel, etc. Admin or the owning client can call.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_media_upload
Section titled “vantage_media_upload”Upload an image to the website’s GitHub repo at public/uploads/{timestamp}-{filename}. Max 8 MB. Returns the public URL the live site serves it at + the in-repo path you can reference from CMS fields (e.g. as a hero image). Pass contentBase64 as the raw base64 string (no data URI prefix).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
filename | string | yes | |
contentBase64 | string | yes | |
contentType | string | no | e.g. image/jpeg, image/png, image/webp |
vantage_media_delete
Section titled “vantage_media_delete”Delete a previously-uploaded image from the website’s repo. path must be under public/uploads/ (the API refuses anything else).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
path | string | yes |
vantage_domains_check_availability
Section titled “vantage_domains_check_availability”Check whether a domain can be registered through Vercel + what it costs. Returns price + period. Does NOT buy — use vantage_domains_buy for that.
| Parameter | Type | Required | Description |
|---|---|---|---|
domain | string | yes |
vantage_domains_buy
Section titled “vantage_domains_buy”Buy a domain through Vercel and attach it to the website. The call polls until registration is final (30–60s typical) and automatically delegates nameservers to Vercel. The domain must currently be available; expectedPrice must match the price returned by vantage_domains_check_availability.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
domain | string | yes | |
years | number | yes | |
expectedPrice | number | yes | |
autoRenew | boolean | no | |
contactInformation | object | yes |
vantage_domains_verify
Section titled “vantage_domains_verify”Re-check DNS propagation for a domain. Vercel and Resend verify lazily — call this to nudge them and refresh the stored status + remaining DNS records the client still needs to add.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
domain | string | yes |
vantage_seo_citations_get
Section titled “vantage_seo_citations_get”Read the citations checklist — the directory-submission progress (Google Business Profile, Yelp, BBB, industry-specific listings, etc.). Each entry has a directoryId, status (pending|submitted|live|failed), optional listingUrl + note.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_seo_set_citations
Section titled “vantage_seo_set_citations”Replace the citations checklist. Pass an array of entries with directoryId + status (+ optional listingUrl, note). Use vantage_seo_citations_get first to read the current state if you want to patch.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
citations | object[] | yes |
vantage_seo_run_cron
Section titled “vantage_seo_run_cron”Trigger the same tier-cadence work the 6-hourly SEO cron does, on demand for a single site. Pass force: true to bypass cadence gating (otherwise essentials = monthly, growth = weekly, premium+ = daily). Use after fixing a content issue and wanting an immediate re-scan.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
force | boolean | no |
vantage_newsletter_status
Section titled “vantage_newsletter_status”Read the website’s newsletter status — whether it’s enabled, the audience id, current subscriber + unsubscribed counts, and the default from-address. One provider call when enabled; none when disabled.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_newsletter_enable
Section titled “vantage_newsletter_enable”Enable the newsletter feature for a website. Mints a Resend audience, pushes env vars to the per-client Vercel project, redeploys so the template’s subscribe form + unsubscribe page come online. Idempotent — running on an already-enabled site refreshes env + redeploys.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_newsletter_disable
Section titled “vantage_newsletter_disable”DESTRUCTIVE — deletes the website’s Resend audience (and every subscriber in it), removes env vars, redeploys to hide the subscribe form. Use only when the operator is sure they’re done with newsletter for this site.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_newsletter_subscribers
Section titled “vantage_newsletter_subscribers”List subscribers for the website’s audience. Returns the full list in one page today (Resend doesn’t paginate yet). Use vantage_newsletter_remove_subscriber to drop a specific contact by id or email.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_newsletter_remove_subscriber
Section titled “vantage_newsletter_remove_subscriber”Hard-delete a subscriber from the website’s audience. Use for admin cleanup (e.g. removing a test address). NOT the user-facing unsubscribe flow — that goes through the per-tenant site’s /unsubscribe page.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
contactIdOrEmail | string | yes |
vantage_newsletter_campaigns
Section titled “vantage_newsletter_campaigns”List all campaigns (drafts + sent) for the website. Per-campaign stats are NOT included — call vantage_newsletter_campaign for one campaign + its latest stats snapshot.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_newsletter_create_campaign
Section titled “vantage_newsletter_create_campaign”Create a draft campaign. Subject + Markdown body required; the platform renders Markdown → HTML before handing off to the provider. The from field defaults to the website’s verified Resend domain (newsletter@
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
subject | string | yes | |
body | string | yes | Markdown body — supports headings, bold/italic, lists, links. |
from | string | no |
vantage_newsletter_campaign
Section titled “vantage_newsletter_campaign”Read one campaign + the provider’s latest stats snapshot (sent/delivered/opened/clicked/bounced/unsubscribed counts). Use after a campaign has been sent to track engagement.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes |
vantage_newsletter_send_campaign
Section titled “vantage_newsletter_send_campaign”Send a previously-drafted campaign. Default fires immediately to every subscribed contact (unsubscribed contacts auto-skipped). Pass scheduledAt (ISO-8601 future timestamp) to defer — the provider queues it and releases at that time. Returns the campaign in its new status (typically queued). Sending is async — call vantage_newsletter_campaign later to see delivery progress.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes | |
scheduledAt | string | no | Optional ISO-8601 future timestamp for scheduled send. Omit for immediate. |
vantage_newsletter_unsubscribe_url
Section titled “vantage_newsletter_unsubscribe_url”Admin helper: mint a signed unsubscribe URL pointing at the per-tenant site’s /unsubscribe page. Useful for QA without sending a real campaign — paste the URL in a browser to test the unsubscribe flow end-to-end.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
email | string | yes |
vantage_newsletter_update_campaign
Section titled “vantage_newsletter_update_campaign”Update a draft campaign. Only works while status === ‘draft’ (Resend rejects updates on sent/queued). Pass only the fields you want to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes | |
subject | string | no | |
body | string | no | |
from | string | no | |
templateId | string | no | |
templateVars | object | no |
vantage_newsletter_delete_campaign
Section titled “vantage_newsletter_delete_campaign”Hard-delete a draft campaign. Resend rejects DELETE on sent/queued — use archive instead for those. Destructive; confirm at the call site.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes |
vantage_newsletter_test_campaign
Section titled “vantage_newsletter_test_campaign”Send the rendered campaign to a single test address (NOT a broadcast — doesn’t touch the audience). Subject is prefixed [TEST]. Useful for preview-in-inbox before the real send.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes | |
to | string | yes |
vantage_newsletter_archive_campaign
Section titled “vantage_newsletter_archive_campaign”Hide a sent campaign from the default list. Only sent campaigns can be archived; drafts should be deleted instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes |
vantage_newsletter_unarchive_campaign
Section titled “vantage_newsletter_unarchive_campaign”Restore a previously-archived sent campaign to the default list.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
campaignId | string | yes |
vantage_newsletter_set_subscriber_unsubscribed
Section titled “vantage_newsletter_set_subscriber_unsubscribed”Operator-initiated flip of a subscriber’s unsubscribed flag. Useful for resubscribe (false) or for marking opted-out (true) when the user opted out by other channels.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
contactId | string | yes | |
unsubscribed | boolean | yes |
vantage_newsletter_list_templates
Section titled “vantage_newsletter_list_templates”List available newsletter templates + each one’s field schema. Operator uses these in the composer to pick a pre-styled layout instead of freeform Markdown.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_analytics_seo
Section titled “vantage_analytics_seo”Composed SEO / GEO performance analytics for a website — health-scan score + issues, GEO citation rate (how often the site shows up in AI-search probes), Google Search Console totals + top queries, citation-checklist progress, competitor diff activity, and AI quota usage. Use this when the user asks ‘how is the site performing?’ or wants a numeric snapshot of search visibility. The response is read-only (no side effects) and composes data already collected by the platform — no separate analytics ingest needed.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
range | 7d | 30d | 90d | all | no | Lookback window for GEO probes + competitor diffs. Default 30d. |
vantage_analytics_traffic
Section titled “vantage_analytics_traffic”First-party traffic analytics for a website — pageviews, sessions, average dwell time, bounce rate, daily timeline, top pages, top referrers, country and device breakdown. Powered by the privacy-friendly cookieless tracker installed in the Melbora Next.js template. Returns empty: true when the tracker hasn’t recorded any events yet (e.g. a freshly-provisioned site, or one that hasn’t been redeployed since the tracker was added to the template). Bots are excluded from the human KPIs but visible under the bots sub-object.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
range | 7d | 30d | 90d | all | no | Lookback window. Default 30d. |
vantage_me_list_api_keys
Section titled “vantage_me_list_api_keys”List the caller’s own API keys (the token currently in use is one of them). Returns id, name, prefix, lastUsedAt, revokedAt — never the secret.
No parameters.
vantage_me_create_api_key
Section titled “vantage_me_create_api_key”Mint a new API key. The full token is in the response and ONLY in the response. Use sparingly (and revoke when no longer needed).
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes |
vantage_me_revoke_api_key
Section titled “vantage_me_revoke_api_key”Revoke an API key by keyId. Any session using it will start failing immediately. IMPORTANT: if you revoke the keyId that THIS MCP is currently authenticated with, every subsequent vantage_* call in this session will 401 until the user manually swaps credentials. The server refuses this by default — pass confirm: true only if you genuinely intend to rotate the active token (e.g. after a leak), and warn the user explicitly first.
| Parameter | Type | Required | Description |
|---|---|---|---|
keyId | string | yes | |
confirm | boolean | no | Set to true to bypass the self-revoke safety check. Only needed when revoking the active session’s own token. |
vantage_websites_delivery_get
Section titled “vantage_websites_delivery_get”Read the website’s project-delivery block: estimatedCompletionAt (the promised ship date), showPreviewUrl gating, optional previewUrlOverride, and the ordered checkpoints array (each with id, label, status pending|in_progress|done, optional completedAt, optional dueAt, order). Also returns the resolved previewUrl (null when the toggle is off or no URL is available). Returns delivery: null when the admin hasn’t set up tracking yet — call vantage_websites_delivery_update with at least estimatedCompletionAt + showPreviewUrl to seed it (omit checkpoints to get the default template).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_delivery_update
Section titled “vantage_websites_delivery_update”Replace the website’s delivery block (admin only). Lower-level escape hatch — use vantage_websites_delivery_set_checkpoint for single-checkpoint tweaks. Pass estimatedCompletionAt (ISO timestamp) and showPreviewUrl (boolean) at minimum; optional previewUrlOverride sets a custom preview URL; optional checkpoints array does a full replace (omit to seed defaults on first call). Each checkpoint needs id, label, status, order; completedAt + dueAt are optional ISO timestamps. This is the only path that can set dueAt (the set_checkpoint helper covers status + dueAt only).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
estimatedCompletionAt | string | yes | ISO timestamp of the promised completion date. |
showPreviewUrl | boolean | yes | When true, the client portal surfaces the preview URL on the Status tab. Off by default. |
previewUrlOverride | string | no | Optional admin-supplied URL to surface instead of the runtime Vercel lookup. |
checkpoints | object[] | no | Full ordered list. Omit on the very first call to seed the default template. |
vantage_websites_delivery_set_checkpoint
Section titled “vantage_websites_delivery_set_checkpoint”Convenience: patch a single checkpoint’s status and/or dueAt without rebuilding the whole checkpoints array. Pass status (pending|in_progress|done) to flip status, dueAt (ISO timestamp) to set a deadline, or dueAt: null to clear an existing deadline. When only status is provided, dispatches to the dedicated single-checkpoint endpoint; when dueAt is touched, reads the current block, patches the one checkpoint in place, and PUTs the whole thing back. At least one of status/dueAt must be provided.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
checkpointId | string | yes | |
status | pending | in_progress | done | no | |
dueAt | string | no | ISO timestamp to set the checkpoint’s deadline. Pass null (JSON null) to clear an existing deadline; omit the field entirely to leave it untouched. |
vantage_websites_documents_list
Section titled “vantage_websites_documents_list”List admin-uploaded project documents attached to a website (contracts, invoices, assets, etc.). Each entry has documentId, name (display), fileName (original), mimeType, sizeBytes, uploadedAt, uploadedByCognitoSub, category (contract|invoice|asset|other), and finalized flag. Use vantage_websites_documents_download_url to get a short-TTL URL the client can click.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes |
vantage_websites_documents_download_url
Section titled “vantage_websites_documents_download_url”Mint a short-TTL presigned S3 GET URL for a single document. Returns { url, expiresInSeconds } — pass the URL to the client to download. Default disposition is attachment (forces a save dialog); pass inline for a URL the browser will render in-tab (used by the in-app PDF/image viewer).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
documentId | string | yes | |
disposition | inline | attachment | no | Defaults to attachment if omitted. |
vantage_websites_documents_rename
Section titled “vantage_websites_documents_rename”Rename a document (display name only — fileName, S3 key, and on-disk filename are untouched).
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
documentId | string | yes | |
name | string | yes |
vantage_websites_documents_delete
Section titled “vantage_websites_documents_delete”Delete a project document. Removes both the DDB metadata row and the S3 object — irreversible. Confirm with the user before calling.
| Parameter | Type | Required | Description |
|---|---|---|---|
websiteId | string | yes | |
documentId | string | yes |
See also
Section titled “See also”- Set up MCP — install + troubleshooting
- Reference → CLI — same surface as a shell
- Reference → SDK — same surface as TypeScript
- MCP specification — the open standard