Surface AI
Server Details
Test and personalize your site's pages from Claude Code or Codex, and check results. Key required.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2026-07-28
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Most tools target distinct resources and actions: surface_get/list/update, variant_create/list/update, and status/control operations are clearly separated. Minor overlap exists between surface_setup (which creates a surface including variants) and variant_create (which adds variants to an existing surface), and surface_results vs surface_traffic both cover analytics, though descriptions explicitly cross-reference each other.
Names consistently use snake_case with resource prefixes (surface_*, variant_*), making grouping obvious. However, action naming is slightly mixed: most are verb-based (get, list, create, update) while surface_results, surface_traffic, and surface_setup are noun-oriented.
Eleven tools is well-scoped for an A/B testing surface and variant management server. Each tool corresponds to a meaningful operation, with no obvious filler or redundant tools.
The surface and variant lifecycle is largely covered: creation, listing, updates, status changes, control selection, and analytics. Minor gaps include no explicit delete operation (archiving via status is the workaround) and no dedicated tool for editing surface goals or content after creation, though variant tools cover content changes.
Available Tools
11 toolssurface_getGet a surfaceARead-onlyInspect
Full details for one surface, including its edge_url and dashboard_url. To open the surface in the dashboard, open dashboard_url.
Inputs: surface_id (required).
surface_listList surfacesARead-onlyInspect
List every surface in the caller's organization, with each one's id, name, page URL, status and live_state. Use surface_get for one surface's dashboard link.
Inputs: no named parameters.
surface_resultsGet a surface's resultsARead-onlyInspect
How a surface's test is doing: per variant, its sessions, sessions that reached the goal, conversion rate (rate_per_session) and win_probability — the bandit's estimated chance that variant is best. termination.should_terminate is the bandit's own signal that the test has a clear winner. Also all-time traffic per event. Results are recomputed hourly; before the first run, variants is empty and note says why. For sessions per day, use surface_traffic. Link the user to dashboard_url for charts.
Inputs: surface_id (required).
surface_setupSet up a surface on a pageAInspect
The way to add a surface to a page, in one step: the content fields it swaps, the goals it optimizes, and the variants — with the integration bundle deployed. Returns the install guide for adding the snippet to that page. Ask the user to choose the fields, goals and variants first; the new_surface prompt walks through it. Prefer data-attribute selectors such as [data-surface-field="headline"], added to the page source. Variants go live as soon as the snippet is deployed. Counts toward the plan's surface limit; a name already used in the organization is rejected.
Inputs: name (required), goals (required), fields (required), page_url (required), +2 more.
surface_trafficGet a surface's daily trafficARead-onlyInspect
Sessions per day for a surface, as {date, sessions}. With no dates, every recorded day. For conversion and winners, use surface_results.
Inputs: surface_id (required), end_date, start_date.
surface_updateUpdate a surfaceADestructiveIdempotentInspect
Change a surface's name, description, status, page URL or location; fields you leave out are unchanged. Returns the updated surface. ARCHIVED stops it serving; making it ACTIVE again counts toward the plan's surface limit. To change content, use the variant_ tools; to add a surface, surface_setup.
Inputs: surface_id (required), name, status, location, +2 more.
variant_createCreate variantsAInspect
Add variants to a surface, as DRAFT; activate them with variant_set_status. Returns the surface's full variant list.
Inputs: variants (required), surface_id (required).
variant_listList variantsARead-onlyInspect
List every variant of a surface, the control included: each one's id, status, is_control and raw_contents (a JSON object of field key to value).
Inputs: surface_id (required).
variant_set_controlSet the control variantADestructiveIdempotentInspect
Make a variant the control of its segment — the baseline the others are measured against — replacing the current control. An archived variant can't be the control. Status is unchanged; use variant_set_status for that.
Inputs: surface_id (required), variant_id (required).
variant_set_statusSet a variant's statusADestructiveIdempotentInspect
Activate, pause or archive a variant. Only active variants are served. To change which variant is the control, use variant_set_control.
Inputs: status (required), surface_id (required), variant_id (required).
variant_updateEdit a draft variantADestructiveIdempotentInspect
Replace a draft variant's contents with the given object. Only drafts can be edited; to change a live variant, create a new one and archive the old.
Inputs: contents (required), surface_id (required), variant_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Website checker for AI coding agents. Measures your site in a real browser, with evidence.
How ChatGPT, Claude, Gemini and Perplexity read a site: free check, fix plan, compare, history.
AI website builder: build, publish and edit websites from Claude, ChatGPT or Claude Code.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceTurn ChatGPT into Codex! OR Turn Claude Web into Claude Code!693 npm5,447MIT

Menso MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI clients to launch real purchase or signup test runs against a live public URL and then fetch run status, scored findings with friction points and suggested fixes, and a public replay of every step taken. It works over Streamable HTTP with an API key, so no installation is needed in Claude Code, Cursor, Windsurf or any compatible client.3 npmMIT- AlicenseNot gradedqualityAmaintenanceGives Claude Code a real browser so it can navigate, click, type, screenshot, and assert against web pages directly from the terminal. Enables multi-step test scenarios, visual regression checks, session recording, and console/network error monitoring with security controls.106 npmMIT
- AlicenseAqualityBmaintenanceLets AI agents like Claude capture website screenshots, check cache status, and monitor usage.113MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.