MCP Tool Reference
Complete reference for all 20 MCP plugins and their available tools
Plugin Overview
Your platform exposes 20 MCP plugins. Each plugin is a collection of tools (functions) and resources (data endpoints) that AI clients can call.
| # | Plugin | Purpose |
|---|---|---|
| 1 | agency | Agency MCP key meta-tools: switch client scope, view/rollout Affinity WordPress plugin updates for your fleet |
| 2 | core | Platform basics: time, SMS, calls, client info, notes, assets |
| 3 | ghl | GoHighLevel CRM: contacts, appointments, pipelines, SMS |
| 4 | ghl-social | GHL Social Planner: accounts, posts, analytics |
| 5 | ga4 | Google Analytics 4: reports, realtime, custom definitions |
| 6 | gbp | Google Business Profile: locations, reviews, posts, insights |
| 7 | github | GitHub repos: files, branches, change sets, PRs |
| 8 | google-ads | Google Ads: campaigns, keywords, landing pages, audits |
| 9 | meta-ads | Meta Ads: campaigns, audiences, creatives, audits, geo targeting, spend caps |
| 10 | reddit-ads | Reddit Ads: thread research, campaign drafts, audits |
| 11 | wordpress | WordPress sites: content, generic entities, SEO meta, Elementor |
| 12 | twilio | Twilio: numbers, SMS, call bindings |
| 13 | sendgrid | SendGrid: senders, email campaigns, domain auth |
| 14 | image-generation | AI image generation: create, edit, manage assets |
| 15 | cloudflare | Cloudflare: DNS, Pages deployments, bindings |
| 16 | verification | Operation verification: confirm writes succeeded |
| 17 | docs | Affinity Docs: search and read public help documentation |
| 18 | vercel | Vercel: deployments, build logs, website bindings |
| 19 | communications | Website forms & form receiver: scan, register, configure forms |
| 20 | website-offers | Website-Day offer funnel: provision GitHub/Cloudflare site infra for paid starter orders |
Agency
Meta-tools available only on sessions authenticated with an agency MCP key (X-API-Key starting with afa_).
Tools
| Tool | Description |
|---|---|
agency_list_clients | Search clients in scope for this agency key by name, domain, or phone |
agency_select_client | Scope the current session to a specific client |
agency_current_client | Report the client the session is currently scoped to |
agency_plugin_fleet_list | List Affinity WordPress plugin installations visible to this agency (tenant-scoped) |
agency_plugin_rollout_plan | Dry-run an agency-scoped Affinity WordPress plugin rollout — returns eligible/blocked sites |
agency_plugin_rollout_request | Request an agency-scoped plugin rollout within platform-allowed channels |
agency_plugin_rollout_rollback | Request rollback for an agency-owned plugin rollout |
Rollout requests and rollbacks are destructive-flagged tools — the platform enforces tenant scope, so an agency can only affect its own client sites. On an agency key, a destructive-flagged tool normally needs two calls: the first returns a confirmation token and a plain-language summary of what it would do, and only a second call that includes that token actually runs it. A tool can mark a specific call "plan-only" — a preview that changes nothing, such as meta_ads_launch_ad_set_from_assets called with preflightOnly: true — and that one call skips the confirmation step, since there's nothing to confirm.
Core
Platform-level tools available to all clients.
Tools
| Tool | Description |
|---|---|
get_time | Get current date or offset by days/weeks |
send_sms | Send SMS via Twilio to any E.164 number |
transfer_call | Transfer an active Twilio call to a number |
end_call | Hang up an active Twilio call by SID |
get_client_info | Return client metadata (name, timezone, phone, agents) |
log_note | Append a note to a call record |
knowledge_list_website_docs | List website knowledge docs (audits, design specs, skills) |
get_uploader_link | Generate a one-time 5-minute URL for a human to drop a file |
asset_create_upload_url | Mint a presigned upload URL so an agent can push a file to storage itself, with no human needed to open a link |
asset_finalize_upload | Register a file uploaded via asset_create_upload_url, returning its assetRef (fails if the upload never actually landed) |
search_client_assets | Semantically search the client's indexed asset library by natural language (logos, product shots, lifestyle photos, and more) |
If a client's asset index is still building, search_client_assets no longer reports that as "no assets exist." It flags the index as still catching up and tells the agent how many assets are indexed so far, instead of returning an empty result that looks final.
Resources
| Resource | Description |
|---|---|
asset://list | List 50 most recent client assets |
asset://{assetRef} | Metadata for a specific asset |
knowledge://website/{id}/audit | Website audit document |
knowledge://website/{id}/design | Website design system doc |
knowledge://website/{id}/skill | Website interaction skill doc |
knowledge://doc/{docId} | Generic knowledge document |
GHL
GoHighLevel CRM and calendar operations.
Tools
| Tool | Description |
|---|---|
ghl_get_availability | Query calendar free slots |
ghl_book_appointment | Create appointment + contact |
ghl_get_contact | Search contact by phone |
ghl_create_contact | Create new GHL contact |
ghl_update_contact | Update contact fields |
ghl_get_appointments | List appointments for a contact |
ghl_cancel_appointment | Cancel/delete appointment |
ghl_send_sms | Send SMS via GHL |
ghl_get_pipeline | Retrieve sales pipeline stages |
ghl_update_opportunity | Move opportunity through pipeline |
ghl_get_email_templates | List Email Builder templates |
ghl_get_email_campaigns | List scheduled campaigns |
ghl_create_email_campaign | Create/schedule newsletter |
Website & Funnel Tools
Command and agency MCP sessions can also read and edit a client's native GHL website, funnel, redirect, media, and blog surfaces directly — no WordPress or Cloudflare site required. This needs 14 specific Marketplace scopes; see GHL Marketplace OAuth scopes for the full list and the version-pin requirement.
| Tool | Description |
|---|---|
ghl_get_site_capabilities | Check whether this client's connection supports website/funnel/page editing and what the live operation catalog can do |
ghl_list_sites | List GHL websites and funnels for the client, with their pages/steps |
ghl_list_site_pages | List the pages/steps for one website or funnel |
ghl_link_site | Pair an Affinity Website record to the matching native GHL website/funnel ID |
ghl_list_redirects | List URL redirects for a location or site |
ghl_create_redirect | Destructive. Create a URL redirect |
ghl_update_redirect | Destructive. Update an existing redirect |
ghl_delete_redirect | Destructive. Delete a redirect |
ghl_list_site_media | List media already in the location's library, to reuse before uploading duplicates |
ghl_upload_site_asset | Destructive. Upload a client asset or hosted image URL into the GHL media library |
ghl_list_blogs | List GHL blog sites for the location |
ghl_list_blog_posts | List a blog's posts, including drafts |
ghl_list_blog_authors | List blog authors and IDs needed to publish a post |
ghl_list_blog_categories | List blog categories and IDs needed to publish a post |
ghl_create_blog_post | Destructive. Create a draft, scheduled, or published blog post |
ghl_update_blog_post | Destructive. Update an existing blog post's body, metadata, schedule, or status |
ghl_search_site_operations | Search HighLevel's live operation catalog for a website/funnel/page/blog change the tools above don't cover |
ghl_describe_site_operation | Get the exact schema for an operation found by ghl_search_site_operations — always call before executing |
ghl_execute_site_operation | Destructive. Run a sanctioned operation found by ghl_search_site_operations, after describing it |
HighLevel does not offer a page-builder write scope through its public REST
API. Full page-layout edits only work when ghl_get_site_capabilities finds a
matching write operation in HighLevel's live catalog — otherwise editing is
limited to redirects, media, and blog posts.
Resources
| Resource | Description |
|---|---|
ghl://contacts/{contactId} | Contact details |
ghl://calendar/{calId}/slots | Free slots (next 14 days) |
ghl://sites | Connected GHL websites/funnels and their page references |
ghl://sites/{siteId}/pages | Pages/steps for one GHL website or funnel |
GHL Social
GHL Social Planner operations.
Tools
| Tool | Description |
|---|---|
ghl_social_get_accounts | List connected social accounts |
ghl_social_get_posts | List scheduled/published posts |
ghl_social_get_post_status | Check status of a specific post |
ghl_social_create_post | Create and schedule a post |
ghl_social_edit_post | Edit an existing post |
ghl_social_delete_post | Remove a post |
ghl_social_get_media_library | Browse uploaded media |
ghl_social_get_tags | List available tags |
ghl_social_get_categories | List content categories |
ghl_social_get_account_analytics | Performance metrics per account |
GA4
Google Analytics 4 reporting.
Tools
| Tool | Description |
|---|---|
ga4_get_accounts | List GA4 accounts and properties |
ga4_get_property_details | Property info (timezone, currency, industry) |
ga4_run_report | Flexible Data API report with dimensions, metrics, filters |
ga4_run_realtime_report | Realtime metrics |
ga4_get_custom_definitions | Custom dimensions & metrics |
Resources
| Resource | Description |
|---|---|
ga4://property/{propertyId} | Property details |
ga4://property/{propertyId}/traffic-summary | 28-day traffic summary |
GBP
Google Business Profile management.
Tools
| Tool | Description |
|---|---|
gbp_list_locations | List connected GBP locations |
gbp_get_location | Full location data |
gbp_get_attributes | Current location attributes |
gbp_get_available_attributes | Attributes available for the category |
gbp_get_performance | 28-day performance metrics |
gbp_patch_location | Update description, hours, etc. |
gbp_update_attributes | Set/update attributes |
gbp_list_categories | Search GBP categories |
gbp_list_usable_images | List assets usable on GBP |
gbp_upload_client_images | Upload client assets to GBP media |
gbp_list_audits | Audit history |
gbp_get_audit | Specific audit with scores |
Resources
| Resource | Description |
|---|---|
gbp://locations | All connected locations |
gbp://location/{connectionId} | Location details |
gbp://location/{connectionId}/performance | 28-day performance |
GitHub
GitHub repository operations.
Tools
| Tool | Description |
|---|---|
github_list_sites | List connected GitHub repos for the client |
github_get_capabilities | GitHub execution capabilities, and repo metadata for a specific connection |
github_read_file | Read a repository file |
github_list_tree | List repo tree structure |
github_create_branch | Create a non-default branch from the default branch or another base branch |
github_apply_change_set | Apply a multi-file change set as one commit and one branch update |
github_stage_asset | Stage a stable client asset reference into the repo via the change-set workflow |
github_upload_image | Upload an image into the repo |
github_get_diff_summary | Compare-based diff summary between a base branch and a review branch |
github_create_pull_request | Open a PR from a review branch back to the default (or another explicit base) branch |
Google Ads
Google Ads campaign management.
Tools
| Tool | Description |
|---|---|
google_ads_list_connections | List connected Google Ads accounts |
google_ads_list_accessible_customers | Accessible customers via API |
google_ads_run_gaql | Run read-only GAQL query |
google_ads_get_campaigns | List campaigns |
google_ads_get_keywords | Keywords per campaign |
google_ads_get_landing_pages | Connected landing pages |
google_ads_create_landing_page | Build a new landing page draft |
google_ads_run_audit | Run account audit |
google_ads_commit_audit | Save audit results |
google_ads_get_agent_config | Read the autonomous agent's autonomy level, hard monthly spend cap, and per-dimension audit auto-commit flags |
google_ads_configure_agent | Set the autonomous agent's autonomy level, auto-commit dimensions, and/or hard monthly spend cap |
Meta Ads
Meta (Facebook/Instagram) Ads management.
Tools
| Tool | Description |
|---|---|
meta_ads_list_connections | List the client's Meta Ads connections, with the connectionId other tools need |
meta_ads_list_resources | List ad accounts, Pages, and Pixels available to the connection |
meta_ads_get_account_health | Connection health and assignment state |
meta_ads_setup_status | The setup wizard's readiness checklist: connection, assets, Brand Studio voice/visuals, website, pixel, industry, funnel, budget, and the recommended next step |
meta_ads_configure_setup | Write the setup fields meta_ads_setup_status reports (website, industry, funnel type, monthly budget) — brand voice and visual identity stay human-only |
meta_ads_configure_agent | Set the agent's autonomy level, hard monthly spend cap, and which decisions it may auto-apply |
meta_ads_run_audit | Run the fatigue, CPA, audience overlap, and pacing audit |
meta_ads_commit_gap | Apply an operator-approved audit finding (defaults to a dry run) |
meta_ads_resolve_service_area | Read-only: work out a local client's ad catchment (city, radius, Meta geo key) from their business type |
meta_ads_search_geo_locations | Resolve a place name to the Meta geo keys that radius targeting needs |
meta_ads_set_adset_geo_targeting | Set an ad set's geo targeting to a city radius, region, or country |
meta_ads_set_campaign_spend_cap | Set (or clear) a campaign's lifetime spend cap — the only ceiling on total spend, since daily budgets only limit the rate |
meta_ads_launch_ad_set_from_assets | Launch one ad set with one independent ad per supplied image or video, for clean per-creative testing. Supports a preview-only preflightOnly mode that validates and creates nothing |
meta_ads_upload_video_asset | Upload operator-supplied video into the ad account and get back a reusable video_id |
meta_ads_launch_carousel_variants | Launch one paused campaign with a budgeted ABO ad set and ordered carousel ad per variant, built from selected client assets |
meta_ads_launch_static_machine | Launch a static-image ad testing machine |
meta_ads_build_playbook_campaign | Build a full playbook campaign (defaults to a dry run) |
meta_ads_propose_campaign | Draft a brand-locked campaign creative from a playbook |
meta_ads_propose_retarget_campaign | Draft a retargeting campaign |
meta_ads_seed_audiences | Create base custom audiences from client brand context |
meta_ads_apply_lookalike | Create lookalike audiences from seed audience IDs |
meta_ads_boost_page_post | Run the Page post boost sequence, with rollback on failure |
meta_ads_score_ad | Score an ad's creative |
meta_ads_generate_creative_loop / meta_ads_evaluate_creative_loop | Start a creative test loop, then evaluate it — pausing losers and moving budget to the winner |
meta_ads_clone_winner | Clone a winning ad |
meta_ads_ramp_budget | Ramp a campaign's budget |
meta_ads_bind_landing_page / meta_ads_align_landing_page | Bind a landing page to a campaign and check it's aligned with the ad |
meta_ads_competitive_ads_extractor | Pull competitor ad examples |
meta_ads_run_insights | Fixture-safe performance insights for a connected account |
meta_ads_get_wordpress_context | Read WordPress site context for creative generation |
meta_ads_generate_recipes | Generate ad recipes |
meta_ads_subscribe_leads | Subscribe the connected Page to Lead Ads webhook delivery |
meta_ads_start_agent / meta_ads_stop_agent / meta_ads_run_agent_now | Start, stop, or immediately run the Meta Ads lifecycle agent (stopping the agent does not pause live campaigns) |
Autonomy gates. New connections ship with every auto-apply dimension denied. meta_ads_configure_agent is how an operator releases them — creativeReadiness and budgetPacing block entity creation and spend increases respectively until released, and spend increases also need autonomyLevel: "full", autoScaleEnabled: true, spendGuard: "released", and a non-zero hardMonthlyCap. If a call is blocked, the error names the exact gate and the call that releases it.
Geo targeting. Call meta_ads_search_geo_locations to resolve a place name, then meta_ads_set_adset_geo_targeting to apply it — or use meta_ads_resolve_service_area first for a local/service-business client, which infers the catchment from their business type automatically. For local and service-business clients, geo targeting is treated as required, not optional.
Shared Pages. One Facebook Page can now back more than one client's connection (useful when an agency runs a shared Page for several pixel-tracked clients). The one exception is Lead Ads: a Page's Lead Ads subscription must stay exclusive to a single client, because Meta only identifies an incoming lead by page_id.
Reddit Ads
Reddit Ads campaign research and management.
Tools
| Tool | Description |
|---|---|
reddit_ads_list_connections | List Reddit Ads account bindings for the active client |
reddit_ads_get_account_health | Connection health, promo setup, and API token state |
reddit_ads_run_insights | Fixture-safe performance metrics for a connected account |
reddit_ads_run_audit | Run the promo, tracking, community, creative, and budget audit |
reddit_ads_commit_audit | Mark operator-approved audit gaps (defaults to dry run) |
reddit_ads_run_thread_research | Scan public Reddit threads for prospect pains, objections, and a Reddit-native creative brief before drafting |
reddit_ads_create_campaign_draft | Create a campaign draft (does not start live spend); supports researchFirst to scan threads before filling creative, auto-generates a thumbnail unless one is supplied |
reddit_ads_start_agent | Start the Reddit Ads audit loop (does not start campaign spend) |
reddit_ads_stop_agent | Stop the Reddit Ads audit loop (does not pause live campaigns) |
reddit_ads_run_agent_now | Run the Reddit Ads agent loop immediately |
WordPress
WordPress site content management, generic REST entity CRUD, SEO metadata, and Elementor page editing.
Discovery & Media
| Tool | Description |
|---|---|
wordpress_list_sites | List connected WordPress sites for the client |
wordpress_get_capabilities | Supported connector capabilities, and connection details for a specific site |
wordpress_list_mcp_abilities | List enabled abilities from the connected WordPress MCP Adapter |
wordpress_execute_mcp_ability | Execute one allowlisted ability through the WordPress MCP Adapter |
wordpress_upload_image | Upload an image into the site's media library |
wordpress_upload_media_from_asset | Upload a stable client asset reference into the media library |
wordpress_reconfigure_plugin_updates | Destructive. Re-push the Affinity plugin's update configuration (API URL, install ID, site token, update channel, clientId pairing) to a connected site. Use after a plugin release adds a new pairing field so an already-updated plugin picks it up without waiting for the site's own refresh cycle. |
Posts & Pages
| Tool | Description |
|---|---|
wordpress_list_content | List posts or pages for a connected site |
wordpress_read_content | Read an existing post or page by slug |
wordpress_replace_content_text | Replace exact text inside a post/page without rewriting the whole page HTML |
wordpress_write_content | Update a post/page by slug, or create one if the slug doesn't exist |
wordpress_bulk_create_content | Create multiple content items from a template and entry list |
Generic Entities & Taxonomy
| Tool | Description |
|---|---|
wordpress_list_entity_types | Discover REST-exposed content types, including custom post types, and whether the route is writable |
wordpress_list_taxonomies | Discover REST-exposed taxonomies globally or for a specific post type |
wordpress_list_entities | List entities for a specific post type, including custom post types |
wordpress_read_entity | Read an entity by post type plus id or slug |
wordpress_write_entity | Create or update an entity with publish-state control |
wordpress_upsert_term | Create or update a taxonomy term |
wordpress_assign_terms | Assign taxonomy terms to an entity |
SEO & Sitemap
| Tool | Description |
|---|---|
wordpress_read_seo_meta | Read SEO meta fields (Yoast/Rank Math compatible where available) |
wordpress_write_seo_meta | Update supported SEO meta fields |
wordpress_read_sitemap | Read the sitemap index/XML, optionally expanding child sitemaps into a URL inventory |
wordpress_create_redirect | Create a Rank Math redirect |
Elementor
| Tool | Description |
|---|---|
wordpress_read_elementor_page | Read Elementor layout data for a post or page |
wordpress_list_elementor_elements | List Elementor elements so widget IDs can be identified before edits |
wordpress_get_elementor_widget | Read a single Elementor widget by widget ID |
wordpress_backup_elementor_page | Create a safe data backup before manual or automated edits |
wordpress_update_elementor_widget | Update a single Elementor widget |
wordpress_plan_elementor_change | Resolve likely widget targets for a bounded structured request, without a raw widget ID |
wordpress_preview_elementor_change | Preview a bounded smart plan: selected target, current data, merged changes, blocked reasons |
wordpress_apply_elementor_change | Apply a bounded smart plan through the widget-level edit path (backup-first, access-mode enforced) |
Twilio
Twilio number and messaging management.
Tools
| Tool | Description |
|---|---|
test_twilio_connection | Verify credentials |
twilio_list_numbers | List account phone numbers |
twilio_send_sms | Send SMS via Twilio (guarded by website binding) |
twilio_describe_resources | Show client Twilio resources |
twilio_bind_website | Bind number to website for SMS |
SendGrid
SendGrid email operations.
Tools
| Tool | Description |
|---|---|
sendgrid_list_senders | List sender identities/domains |
sendgrid_send_email | Send email (guarded by website binding) |
sendgrid_describe_resources | Show client SendGrid resources |
sendgrid_bind_website | Bind sender to website |
sendgrid_setup_domain_auth | Configure domain authentication |
sendgrid_verify_domain | Verify DNS records |
Image Generation
AI-powered image creation, vectorization, and branded social rendering.
Tools
| Tool | Description |
|---|---|
image_create_session | Start a persisted multi-turn image generation session and generate the first turn |
image_continue_session | Continue an existing image session; reuses the previous turn's assets by default |
image_vectorize_asset | Convert a stored raster asset into a true-vector SVG (Recraft) as a new asset |
image_get_session | Get one persisted image session, including turn history and asset refs |
image_list_sessions | List recent persisted image sessions for the current client |
social_brand_render | Run the branded social art-director and image compiler pipeline for a content brief |
social_design_ideate | Propose reusable branded social design recipes for review without saving them |
For a true vector SVG (logos, icons, scalable/print-ready graphics), pass model: "recraft-ai/recraft-v4.1-svg" (aliases svg/vector) to image_create_session/image_continue_session. To convert an existing raster asset instead of regenerating it, use image_vectorize_asset.
Cloudflare
Cloudflare infrastructure management.
Tools
| Tool | Description |
|---|---|
cloudflare_list_resources | List account inventory and bindings |
cloudflare_list_dns | DNS records for a zone |
cloudflare_update_dns | Modify DNS records |
cloudflare_get_deployments | Pages deployment history |
cloudflare_watch_deployment | Monitor deployment status |
cloudflare_bind_website | Bind site to Cloudflare project |
cloudflare_check_domain_availability | Check if a domain can be registered and what it costs |
cloudflare_connect_domain | Connect an existing domain to a website via a custom hostname (client keeps their registrar, adds one CNAME) |
cloudflare_purchase_domain | Buy a new domain for a client and start checkout for it |
cloudflare_get_domain_status | Read a website's current domain-connection status |
cloudflare_connect_domain and cloudflare_purchase_domain are destructive-flagged tools — they mutate live DNS/certificate state or spend real money. Both only work for websites hosted on Cloudflare Pages (v1 scope); other site types aren't eligible yet.
Verification
Post-operation validation.
Tools
| Tool | Description |
|---|---|
mcp_verify_operation | Verify a recent write succeeded before calling it done |
This tool normalizes checks across Cloudflare Pages, WordPress, GitHub-backed sites, and other public providers. If verification fails, inspect the logs, patch the issue, and verify again.
Docs
Affinity public documentation — search and read customer-facing help articles from within any AI session. The docs plugin connects to the public docs app at https://docs.affinitydesign.ca/api/mcp through the af-gemini-connect bridge, and prefixes upstream tool names before exposing them.
Tools
| Tool | Description |
|---|---|
docs_search | Search documentation pages by keyword or customer support question. Returns matching pages with titles, descriptions, URLs, and slugs. |
docs_get_page | Read the full MDX content for a documentation page slug (e.g. clients/getting-started). |
Configuration
No API key is required — the docs MCP endpoint is public and read-only. Optional environment overrides:
| Variable | Default | Description |
|---|---|---|
DOCS_MCP_URL | https://docs.affinitydesign.ca/api/mcp | Upstream MCP endpoint URL |
DOCS_MCP_TIMEOUT_MS | 10000 | Request timeout in milliseconds |
Enablement
For client-scoped MCP API keys or Command Center sessions, ensure docs is included in the enabled plugin list when the client has an explicit plugin allowlist.
Vercel
Vercel deployment management and GitHub-backed website verification.
Tools
| Tool | Description |
|---|---|
vercel_list_resources | List connected Vercel account inventory and website bindings for this client, including projects and deployment feedback status. |
vercel_bind_website | Bind a connected website to a Vercel project so MCP verification can poll deployments and build logs after GitHub-backed website changes. |
vercel_list_deployments | List recent Vercel deployments for a bound website or Vercel project. |
vercel_get_deployment_logs | Fetch Vercel deployment build logs for a bound website/project deployment. |
vercel_watch_deployment | Poll Vercel after a GitHub website change. Returns success, pending state, or failure with redacted build-log lines so the agent can debug and apply a follow-up fix. |
Binding a Website
After a client-level Vercel connection exists, bind the connected website to the project that deploys it:
POST /admin/clients/:clientId/websites/:websiteId/connections/bind
Content-Type: application/json
{
"serviceType": "vercel",
"sourceConnectionId": "connection_id",
"projectId": "prj_xxx",
"projectName": "client-site",
"teamId": "team_xxx"
}
App-Side Verification Token
The app-side verification loop uses one of these token sources (not passed through MCP tool arguments):
- Per-client connection: save a client-level
vercelconnection with a Vercel API token. - Deployment fallback: set
VERCEL_API_TOKENin the app environment. - Team-scoped accounts: set
VERCEL_TEAM_IDorVERCEL_TEAM_SLUGon the connection.
Never put the Vercel API token in committed files, MCP tool calls, screenshots, or deployment logs.
Official Vercel MCP for Codex
Vercel's official remote MCP endpoint (https://mcp.vercel.com) can be registered in Codex for interactive inspection, deployment details, logs, docs, and project context:
codex mcp add vercel --url https://mcp.vercel.com
codex mcp login vercel
codex mcp list
Communications
Website form management and form receiver configuration.
Tools
| Tool | Description |
|---|---|
communications_get_form_receiver | Return the platform form receiver for a website. Provisions a stable receiver token when missing unless provisionIfMissing is false. |
communications_scan_website_forms | Scan a public website for forms and map the observed forms into the website form registry. |
communications_update_website_form | Update one website form's registry settings such as displayName, status, destinations, validation, notification, or webhook routing. |
communications_register_website_form | Register or upsert a newly created website form directly into the Forms UI and platform receiver handling. |
communications_delete_website_form | Delete a stale or incorrect website form from the registry so a fresh scan can recreate the current live form. |
Form Delivery Destinations
Native capture — saving the submission on the platform — is always on. GHL, email, and webhook delivery are independent add-on destinations: any combination can be turned on for a form, not just one at a time. Set them with the destinations property:
| Destination | Description |
|---|---|
destinations.ghl | Sync each submission to the connected GoHighLevel location |
destinations.email | Send a notification email (mirrors notification.sendAdminEmail) |
destinations.webhook | Dispatch each submission to the saved webhook URL (mirrors routing.webhookEnabled, requires routing.webhookUrl) |
The older deliveryMode property (auto, native, ghl, email, webhook) still works on forms that have not been switched over — it treated the destinations as one exclusive choice. An explicit destinations.ghl value overrides deliveryMode for that form. New forms should use destinations instead of deliveryMode.
Website Offers
Provisions GitHub/Cloudflare infrastructure for paid Website-Day starter-site orders (the self-serve offer funnel), and validates generated builds before commit.
Tools
| Tool | Description |
|---|---|
website_offer_get_config | Read the offer funnel config: checkout capacity, starter credits, GitHub template status, Cloudflare target settings |
website_offer_get_order | Fetch an offer order by id with payment, intake, build, GitHub, Cloudflare, and delivery status |
website_offer_start_build | Start the controlled build lifecycle for a paid order after intake is complete |
website_offer_retry_build | Retry the build lifecycle for a recoverable failed or review-state order |
website_offer_nuke_and_restart | Wipe all generated artifacts (app/, components/, src/, checkpoint commits) and immediately start a fresh build — more destructive than retry |
website_offer_validate_build | Validate a generated file set before committing it |
github_create_site_from_template | Create a GitHub repo from the configured Website-Day template |
cloudflare_create_pages_project | Create or return a Cloudflare Pages project for a GitHub repo |
cloudflare_add_pages_domain | Associate an agency subdomain with a Cloudflare Pages project |
cloudflare_upsert_dns_record | Create or update the DNS record for an agency-owned Website-Day subdomain |
agency_ghl_upsert_waitlist_lead | Create or update a waitlist lead and push it to the agency GHL waitlist when configured |
Resource URIs Quick Reference
Use these URIs directly in prompts or tool arguments:
| Pattern | Example |
|---|---|
asset://list | All recent assets |
asset://asset_abc123 | Specific asset metadata |
knowledge://website/{id}/audit | Website audit |
knowledge://website/{id}/design | Design system |
knowledge://website/{id}/skill | Interaction skill |
ghl://contacts/{id} | GHL contact |
ghl://calendar/{id}/slots | Calendar availability |
ga4://property/{id} | GA4 property |
gbp://location/{id} | GBP location |
