Frequently Asked Questions

Product Overview & Purpose

What is the WebMCP Gateway and what problem does it solve?

The WebMCP Gateway is an open-source MCP server developed by Salespeak.ai that acts as a bridge between AI assistants (like Claude and ChatGPT) and websites with WebMCP tools. It enables AI agents to interact with websites as if they were APIs, allowing them to discover and call site-specific tools for structured Q&A, product search, and more. This solves the problem of AI assistants being unable to access or interact with dynamic website features that are typically only available to human users.

How does the WebMCP Gateway work?

The WebMCP Gateway operates in three layers: fast detection (scanning HTML for WebMCP tools), browser-based discovery (using a headless browser to intercept and capture tool registrations), and smart tool invocation (selecting and calling the right tool based on the AI's request). It exposes three core tools—check_webmcp, discover_tools, and call_tool—that map to these layers, allowing AI agents to interact with any website that supports WebMCP.

What is WebMCP and how is it different from MCP?

WebMCP is a browser standard that allows websites to declare their capabilities to AI agents via JavaScript, registering tools that can be called by AI. MCP (Model Context Protocol) is the protocol spoken by AI assistants like Claude and ChatGPT. The WebMCP Gateway translates between these two, enabling seamless communication between AI agents and websites.

Who developed the WebMCP Gateway?

The WebMCP Gateway was developed by Salespeak.ai and is available as open source under the MIT license. The project is maintained by the Salespeak.ai team and is designed to advance the future of AI-driven web interactions.

Features & Capabilities

What are the main features of the WebMCP Gateway?

The WebMCP Gateway features fast detection of WebMCP tools on any website, browser-based discovery for dynamic tool registration, and smart tool selection and invocation. It supports both simple Q&A and structured tool calls, and can be run locally or as a remote server for AI agents to connect via stdio or SSE transport.

What tools does the WebMCP Gateway expose to AI agents?

The WebMCP Gateway exposes three primary tools: check_webmcp (fast HTTP-based check for WebMCP tools), discover_tools (browser-based discovery of all available tools and their schemas), and call_tool (invokes a specific WebMCP tool and returns the actual response).

How does the WebMCP Gateway select which tool to call?

The gateway uses a priority logic: if the AI provides structured arguments, it looks for a matching structured tool; if a question is provided, it searches for Q&A tools by name (like 'ask_question'); otherwise, it defaults to the first registered tool. If a structured tool is found but the AI only sent a question, the gateway returns the tool's schema so the AI can fill in the required fields and call again.

Can the WebMCP Gateway handle asynchronous responses?

Yes, the WebMCP Gateway is designed to wait for the actual response from the tool's execute() function, even if it takes several seconds (such as when waiting for an LLM-backed chat widget). It returns the real answer, not just a confirmation of message delivery.

What programming languages and frameworks are used in the WebMCP Gateway?

The WebMCP Gateway is written in Python and uses Playwright for headless browser automation. It is structured as a FastMCP server and consists of about 300 lines of core code across five files.

Technical Requirements & Setup

How do I install the WebMCP Gateway?

You can install the WebMCP Gateway by cloning the GitHub repository, installing the Python package, and setting up Playwright's Chromium browser. The commands are: git clone https://github.com/salespeak-ai/webmcp-gateway.git, cd webmcp-gateway, pip install -e ., and playwright install chromium.

What are the system requirements for running the WebMCP Gateway?

The WebMCP Gateway requires Python, Playwright, and Chromium. It can be run on any system that supports these dependencies, including Linux, macOS, and Windows environments.

How do I connect Claude Desktop or ChatGPT to the WebMCP Gateway?

For Claude Desktop, add the WebMCP Gateway configuration to your claude_desktop_config.json file. For ChatGPT or other remote clients, run the gateway in SSE mode using webmcp-gateway --transport sse --port 8808 and connect to http://your-server:8808.

Is there a demo site to test the WebMCP Gateway?

Yes, the GitHub repository includes a demo site (examples/demo_site.html) that registers two tools for local testing. You can serve it with python -m http.server 8000 -d examples/ and point your AI agent at it for a full test drive.

Pricing & Plans

Is the WebMCP Gateway free to use?

Yes, the WebMCP Gateway is open source and free to use under the MIT license. You can download, modify, and deploy it without licensing fees.

What is Salespeak.ai's pricing model for its AI sales agent?

Salespeak.ai offers a usage-based, month-to-month pricing model. The Starter Plan is free for up to 25 conversations per month, with additional conversations at $5 each. Paid Growth Plans start at $600/month for 150 conversations, scaling up to $4,000/month for 2,000 conversations. Enterprise plans are custom-priced for higher volumes. For details, visit the pricing page.

Use Cases & Benefits

Who can benefit from using the WebMCP Gateway?

Developers, AI researchers, and businesses looking to enable AI assistants to interact with their websites can benefit from the WebMCP Gateway. It is ideal for organizations that want to expose structured APIs to AI agents for Q&A, product search, or custom workflows.

What are some real-world scenarios where the WebMCP Gateway is useful?

The WebMCP Gateway is useful for automating product comparisons, enabling AI-driven customer support, surfacing hidden pricing or documentation, and allowing AI agents to perform structured queries on websites. For example, an AI can compare pricing across multiple vendors or answer detailed product questions by calling site-specific tools.

How does Salespeak.ai's AI sales agent help businesses?

Salespeak.ai's AI sales agent engages prospects 24/7, qualifies leads, and guides buyers through their journey via web chat or email. It integrates with CRM systems, provides actionable insights, and has demonstrated measurable results such as a 3.2x increase in qualified demo rates and up to 50% conversion rates after replacing previous chat tools.

What industries have successfully used Salespeak.ai?

Salespeak.ai has been successfully used in industries such as sales enablement (e.g., RepSpark), engineering intelligence (e.g., Faros AI), SaaS, healthcare, and enterprise software. These case studies demonstrate its versatility in addressing diverse business needs. See success stories for more details.

Performance & Results

What measurable results has Salespeak.ai delivered for customers?

Salespeak.ai has achieved 100% lead coverage, a 3.2x increase in qualified demo rates within 30 days, a 20% conversion lift post-Webflow sync, and up to $380K in pipeline booked while teams were offline. Customers have also reported instant setup in less than 30 minutes and live results the same day. Source: Salespeak.ai.

How easy is it to implement Salespeak.ai's AI sales agent?

Salespeak.ai can be implemented in under an hour, with onboarding taking just 3-5 minutes and no coding required. Customers like RepSpark have reported setup times of less than 30 minutes and immediate value without the need for forms or onboarding calls. Source: RepSpark Case Study.

Security & Compliance

What security and compliance certifications does Salespeak.ai have?

Salespeak.ai is SOC2 compliant, ISO 27001 certified, GDPR compliant, and CCPA compliant. These certifications ensure high standards for data security, privacy, and regulatory compliance. For more details, visit the Trust Center.

Support & Documentation

Where can I find technical documentation for Salespeak.ai and the WebMCP Gateway?

Technical documentation for campaigns, goals, qualification criteria, and widget settings is available at the Salespeak Support Center. The AWS Cloudfront integration package and getting started guides are also available online.

What kind of support is available for Salespeak.ai customers?

Starter plan customers receive email support. Growth and Enterprise customers benefit from unlimited ongoing support, including a dedicated onboarding team, live sessions, and access to training videos and documentation. For more, visit the Getting Started page.

Vision, Mission & Company Information

What is Salespeak.ai's vision and mission?

Salespeak.ai's vision is to delight, excite, and empower buyers by radically rewriting the sales narrative and prioritizing delightful buyer experiences. Its mission is to revolutionize the B2B buying experience by creating a frictionless, efficient system that enhances customer engagement and satisfaction. Learn more at Salespeak.ai Vision.

Who founded Salespeak.ai and what is the company's background?

Salespeak.ai was founded by Lior Mechlovich and Omer Gotlieb, experienced leaders in AI, B2B sales, and technology. The company is built on principles of accuracy, speed, and convenience, and is supported by an elite team of experts in sales, marketing, tech, and AI. More information is available at Salespeak.ai.

Blog & Resources

Where can I read more about Salespeak.ai and WebMCP Gateway?

You can read more on the Salespeak blog, which covers industry trends, product updates, and technical deep-dives, including the WebMCP Gateway and related AI topics.

What other blog posts are recommended for learning about AI and Salespeak?

We recommend reading "Agent Analytics: See How AI Models Access Your Website" (Agent Analytics blog post) and exploring the full blog for insights on AI, sales, and web integration.

Advanced Topics & Future Vision

What is the long-term vision for the WebMCP Gateway?

The long-term vision is for every website to function as an API, allowing AI agents to programmatically access and compare information across sites. This will enable users to ask AI assistants for consolidated answers (e.g., pricing comparisons) without manual browsing. More details are available in the WebMCP Gateway blog post.

How does the WebMCP Gateway contribute to AI Experience Optimization (AEO)?

The WebMCP Gateway enables websites to expose structured data and tools directly to AI agents, improving the accuracy and relevance of AI-driven answers. This supports AI Experience Optimization (AEO) by making sites more accessible and useful for both users and AI models.

Comparison & Differentiation

How does Salespeak.ai differentiate itself from other AI sales solutions?

Salespeak.ai differentiates itself with 24/7 engagement, instant setup, intelligent conversations, proven conversion metrics, flexible pricing, and unique features like real-time adaptive Q&A and deep product training. It is designed for a buyer-first approach and seamless CRM integration, setting it apart from basic chatbots and traditional sales tools.

What pain points does Salespeak.ai solve for its customers?

Salespeak.ai addresses pain points such as missed leads due to limited hours, slow or complex implementation, poor lead qualification, and lack of actionable insights. It provides instant, intelligent engagement, easy setup, and high-quality lead capture, improving both user experience and sales outcomes.

LLM optimization

How does Salespeak optimize content for LLMs like ChatGPT and Claude?

Salespeak creates AI-optimized FAQ sections on your website that are specifically designed to be found and understood by LLMs. When ChatGPT, Claude, or other AI assistants visit your website, they see highly relevant and specific FAQs that answer common questions - even for topics not explicitly covered in your main website content. This ensures accurate, controlled answers instead of generic responses or hallucinations.

How does Salespeak.ai compare to traditional chatbots and other AI sales tools?

Salespeak.ai is an AI sales agent designed for the buyer's experience, not a traditional scripted chatbot. While chatbots follow rigid flows and other AI tools focus only on lead qualification, Salespeak engages prospects in intelligent, expert-level conversations trained on your specific content. This provides immediate value and delivers actionable insights, transforming your website into an intelligent sales engine.

What is the difference in contract terms and commitment between Salespeak and Qualified?

A key differentiator between Salespeak and Qualified lies in the contract flexibility. Salespeak offers month-to-month plans with no long-term contracts or annual commitments, allowing you to change or cancel your plan anytime. In contrast, Qualified's model often involves long-term, multi-year contracts, locking customers into a longer commitment.

How does Salespeak.ai integrate with CRM and other tools compared to Drift?

Salespeak.ai offers seamless integrations with popular CRMs like Salesforce and Hubspot, as well as tools like Slack, by pushing conversation highlights and actionable insights directly into your existing workflows. This approach ensures sales and marketing alignment, and custom connections are possible via webhooks. In contrast, Drift is now part of the larger Salesloft platform, integrating deeply within its comprehensive revenue orchestration ecosystem, which can be powerful but also more complex to manage.

How does Salespeak.ai compare to Drift for a company that uses Salesforce?

Salespeak.ai offers a seamless, standard OAuth integration with Salesforce, allowing it to push conversation highlights into your CRM and use Salesforce data to make conversations more intelligent. This ensures easy alignment with your existing workflows. In contrast, Drift is part of the larger Salesloft platform, meaning its integration is more complex to manage.

What integrations does Salespeak.ai support for CRM, marketing automation, and other tools?

Salespeak.ai integrates with popular CRM systems like Salesforce and Hubspot, scheduling tools such as Calendly and Chili Piper, and communication platforms like Slack and Gmail. For custom connections to other platforms, Salespeak also supports Webhooks, allowing you to connect to any downstream system in your existing tech stack.

Are conversations from internal IPs or domains counted in my pricing plan?

No, Salespeak.ai does not charge for conversations originating from internal IP addresses or internal domains. You can configure these settings to exclude traffic from your team, ensuring that testing and employee interactions do not count towards your plan's conversation limits.

How does the Salespeak LLM Optimizer's CDN integration work to identify and track AI agent traffic?

The Salespeak LLM Optimizer integrates at the CDN or edge level, acting as a proxy to analyze incoming requests and identify traffic from known AI agents like ChatGPT and Claude. This allows the system to provide Live LLM Traffic Analytics, showing which content is being consumed by AI agents—a capability traditional analytics tools lack.

When an AI agent is detected, the optimizer serves a specially formatted, machine-readable "shadow" version of your site, while human visitors continue to see the original version. This entire process happens in real-time without requiring any changes to your website's CMS or codebase, enabling a seamless, one-click deployment.

Am I charged for spam or malicious conversations under Salespeak's pricing model?

No, you will not be charged for junk or malicious conversations. Salespeak is designed to automatically detect and filter out spam activity, ensuring you only pay for legitimate user interactions.

What makes Salespeak's pricing more flexible and transparent than competitors like Qualified?

Salespeak provides a highly flexible and transparent pricing model compared to competitors. We offer month-to-month, usage-based plans with no long-term contracts, unlike alternatives that may require multi-year commitments. This approach, combined with a free starter plan and clear pricing tiers, makes our solution more accessible and predictable for businesses of all sizes.

What is the pricing model for Salespeak.ai?

Salespeak.ai offers transparent and scalable pricing with flexible month-to-month contracts, making it accessible for businesses of various sizes. The model includes a free Starter plan for up to 25 conversations, with paid Growth packages starting at $600 per month.

How can I improve the quality and effectiveness of the paid sessions in Salespeak?

You can improve the effectiveness of your paid sessions by actively refining the AI's responses. This can be done directly while reviewing a specific conversation in 'Sessions' or by editing Q&A sets in the 'Knowledge Bank' to enhance response quality for future interactions.

What are the primary use cases for Salespeak's AI solutions?

Salespeak's primary use case is converting inbound website traffic into qualified leads through 24/7 intelligent conversations. Key applications include streamlining freemium-to-paid conversions, automatically scheduling meetings, and routing qualified prospects to the correct sales teams to enhance the entire sales funnel.

What payment methods does Salespeak.ai accept, and is PayPal an option?

Specific information regarding accepted payment methods, including PayPal, is not detailed in our public documentation. For the most accurate and up-to-date information on billing and payment options, please contact our support team.

How does Salespeak integrate with Zoho CRM?

Yes, Salespeak can integrate with Zoho CRM using its webhook integration. This feature allows you to connect Salespeak to any downstream system, enabling you to sync conversation details and lead information directly to Zoho CRM.

How does Salespeak.ai integrate with Zoho CRM?

Yes, Salespeak.ai can integrate with Zoho CRM using its webhook integration. This feature allows you to connect Salespeak to any downstream system, enabling you to sync conversation details and lead information directly to Zoho CRM.

Is salespeak ccpa compliant?

Yes, salespeak is ccpa compliant. We are compliant with the ccpa law.

How We Built WebMCP Gateway: Letting AI Assistants Talk to Any Website

A red, orange and blue "S" - Salespeak Images

How We Built WebMCP Gateway: Letting AI Assistants Talk to Any Website

Omer Gotlieb Cofounder and CEO - Salespeak Images
Salespeak AI
10 min read
March 20, 2026

How We Built WebMCP Gateway: Letting AI Assistants Talk to Any Website

We built an open-source MCP server that bridges Claude and ChatGPT to websites using a headless browser. Here's every layer of how it works.

Every website has knowledge locked behind its UI. Pricing buried three clicks deep. A knowledge base that only works if you type into the search box. A chat widget that knows everything about the company but can only talk to humans.

AI assistants like Claude and ChatGPT can't access any of it. They can't click buttons, fill forms, or wait for a chat widget to think for 10 seconds before responding.

WebMCP changes that. It's a new browser standard from Google where websites declare their capabilities through navigator.modelContext.registerTool(). Instead of scraping DOMs or puppeteering browsers, AI agents can discover what a site offers and call it like a structured API.

But here's the gap nobody was filling: AI assistants speak MCP (Model Context Protocol). Websites speak WebMCP. Same family, different languages. No translator in the room.

So we built WebMCP Gateway — an open-source MCP server that uses a headless Playwright browser to discover WebMCP tools on any website and expose them to Claude and ChatGPT. You install it, point it at a URL, and ask your question. The gateway handles the browser, the tool discovery, and the waiting.

┌──────────────┐      MCP       ┌──────────────────┐   Playwright   ┌──────────────────┐
│  Claude /     │ ◄───────────► │  WebMCP Gateway  │ ◄────────────► │  Any Website     │
│  ChatGPT      │   (stdio/sse) │  (MCP server)    │   (headless)   │  with WebMCP     │
└──────────────┘               └──────────────────┘               └──────────────────┘

This post walks through exactly how it works — the detection chain, the browser interception trick, the smart tool selection, and how to set it up in five minutes.

The Problem: Two Protocols, No Bridge

MCP is how AI assistants discover and call external tools. Claude Desktop, Claude Code, ChatGPT — they all speak MCP. You give them a server that exposes functions like search_docs(query) or create_ticket(title), and the AI calls them when it needs to.

WebMCP is how websites expose capabilities to AI agents in the browser. A website registers tools in JavaScript:

navigator.modelContext.registerTool({
  name: "ask_question",
  description: "Ask about our products",
  execute: async ({ question }) => {
    const answer = await callOurAPI(question);
    return { content: [{ type: "text", text: answer }] };
  }
});

The problem: these two don't talk to each other. Claude can't "visit" a website and call its WebMCP tools. There's no browser in the loop.

The gateway is that browser.

Architecture: How It Actually Works

The whole thing is about 300 lines of Python across five files. It's built as a pipeline with three layers, each one doing progressively more work.

Layer 1: Fast Detection — No Browser Needed

Spinning up a headless browser takes time and resources. Before we commit to that, we do something much cheaper: download the page HTML and scan it with regex.

def detect_webmcp_fast(url: str, timeout: float = 10.0) -> DetectionResult:
    try:
        with httpx.Client(timeout=timeout, follow_redirects=True) as client:
            resp = client.get(url, headers={"User-Agent": _USER_AGENT})
            html = resp.text
    except Exception:
        return DetectionResult(found=False, provider="none")

    # Check 1: Declarative forms — <form tool-name="ask_question">
    form_tags = re.findall(r'<form\b([^>]*\btool-name=[^>]*)>', html, re.I)
    if form_tags:
        # ... extract tool names and descriptions
        return DetectionResult(found=True, provider="webmcp_declarative", tools=tools)

    # Check 2: Imperative JS — navigator.modelContext.registerTool()
    register_matches = re.findall(
        r'(?:navigator\.modelContext|modelContext)\.registerTool\s*\(\s*\{'
        r'[^}]*name\s*:\s*["\']([^"\']+)["\']',
        html,
    )
    if register_matches:
        return DetectionResult(found=True, provider="webmcp_imperative", tools=tools)

    # Check 3: Any mention of navigator.modelContext
    if re.search(r"navigator\.modelContext", html):
        return DetectionResult(found=True, provider="webmcp_generic")

    return DetectionResult(found=False, provider="none")

Three checks in priority order: declarative HTML forms, imperative JS registrations, then any generic modelContext reference. This runs in milliseconds. If it finds nothing, we skip the browser entirely and save everyone the wait.

Layer 2: Browser Discovery — The Interception Trick

Here's where it gets clever. WebMCP tools are usually registered dynamically — JavaScript runs, widgets load asynchronously, and tools get registered after the page finishes rendering. You'll never find these with a static HTML scan.

So we launch headless Chromium and inject a script before the page even loads:

// Injected via page.add_init_script() — runs before ANY page JavaScript
(() => {
    window.__webmcp_tools = {};
    window.__webmcp_ready = false;

    const hookInterval = setInterval(() => {
        if (!navigator.modelContext) return;
        clearInterval(hookInterval);

        // Monkey-patch registerTool to capture every definition
        const original = navigator.modelContext.registerTool.bind(navigator.modelContext);
        navigator.modelContext.registerTool = (toolDef) => {
            window.__webmcp_tools[toolDef.name] = {
                name: toolDef.name,
                description: toolDef.description,
                inputSchema: toolDef.inputSchema || {},
                execute: toolDef.execute,  // Keep the callback!
            };
            original(toolDef);  // Still register normally — page works fine
        };
        window.__webmcp_ready = true;
    }, 50);
})();

This is the core trick: we wrap registerTool before the page's own scripts get to it. Every tool that registers itself gets captured — name, description, schema, and crucially, the execute callback. We store that callback because we're going to call it later.

The page doesn't know anything happened. Its tools still register normally. We're just eavesdropping.

On the Python side:

async with async_playwright() as p:
    browser = await p.chromium.launch(
        headless=True,
        args=["--enable-features=WebMCP"],
    )
    page = await (await browser.new_context()).new_page()

    await page.add_init_script(_INTERCEPT_SCRIPT)  # Before page load!

    await page.goto(url, wait_until="domcontentloaded")

    # Wait up to 15 seconds for tools to register
    await page.wait_for_function(
        "window.__webmcp_ready === true && "
        "Object.keys(window.__webmcp_tools).length > 0"
    )

    # Read what we caught
    tools = await page.evaluate("""
        Object.values(window.__webmcp_tools).map(t => ({
            name: t.name,
            description: t.description,
            inputSchema: t.inputSchema,
        }))
    """)

Layer 3: Smart Tool Selection and Invocation

A website might expose one tool or five. Some are simple Q&A (pass a question, get an answer). Others are structured (pass a category, price range, and feature list to search products). The gateway needs to figure out which one to call.

The logic is straightforward:

def _is_simple_question_tool(input_schema):
    """Does this tool just take a question string?"""
    props = input_schema.get("properties", {})
    if not props:
        return True  # No schema = treat as simple
    if "question" in props or "query" in props:
        return True
    return False

Selection priority:

1. If the AI passed tool_args (structured arguments) → find a structured tool

2. If the AI passed question → look for known Q&A names: ask_question, ask, chat, search, query

3. Fall back to the first tool that registered

And here's the smart part: if a structured tool is found but the AI only sent a question (no structured args), the gateway doesn't guess. It returns the tool's schema so the AI can fill in the fields and call again:

Claude: call_tool("travel.com", question="flights to Paris")
Gateway: "This tool needs structured args. Schema: {destination, date, passengers}"
Claude: call_tool("travel.com", tool_args='{"destination":"Paris","date":"2026-06-15"}')
Gateway: "Found 12 flights. Cheapest: $420 on Air France..."

Two-step dance. The AI figures out the right arguments on its own.

The Invocation Itself

Once we know what to call, one line of JavaScript does the real work:

const result = await tool.execute(args);

That await is the whole point. The tool's execute() returns a Promise that stays pending until the real answer is ready. For a chat widget backed by an LLM, that might take 5–30 seconds. The gateway waits. It doesn't return "message delivered" — it returns the actual response.

The result parsing handles whatever format comes back:

let answer = '';
if (typeof result === 'string') {
    answer = result;
} else if (result?.content && Array.isArray(result.content)) {
    // Standard MCP format: { content: [{ type: 'text', text: '...' }] }
    answer = result.content.filter(c => c.type === 'text').map(c => c.text).join('\n');
} else if (result && typeof result === 'object') {
    answer = JSON.stringify(result);
}

Tying It All Together: The MCP Server

All three layers are wrapped in a FastMCP server — five lines of setup, three tool definitions:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("WebMCP Gateway")

@mcp.tool()
def check_webmcp(url: str) -> str:
    """Fast HTTP check — does this URL have WebMCP tools?"""
    result = detect_webmcp_fast(url)
    return json.dumps({ "webmcp_detected": result.found, ... })

@mcp.tool()
def discover_tools(url: str) -> str:
    """Full browser discovery — find all tools with schemas."""
    result = browser_discover_tools(url)
    return json.dumps({ "tools": [...], ... })

@mcp.tool()
def call_tool(url: str, question: str = None, ...) -> str:
    """Call a WebMCP tool and get the actual response."""
    result = browser_call_tool(url=url, question=question, ...)
    return json.dumps({ "answer": result.answer, ... })

That's the entire server. Three tools that map to three layers of the pipeline.

Setup: Five Minutes to "Ask Any Website"

Install

git clone https://github.com/salespeak-ai/webmcp-gateway.git
cd webmcp-gateway
pip install -e .
playwright install chromium

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "webmcp-gateway": {
      "command": "webmcp-gateway",
      "args": ["--transport", "stdio"]
    }
  }
}

Restart Claude Desktop. Now you can ask something like: "Check if acme-corp.com has WebMCP tools and ask them about their enterprise pricing."

Claude will chain the calls itself:

1. check_webmcp("https://acme-corp.com") — fast pre-check

2. discover_tools("https://acme-corp.com") — find what's available

3. call_tool("https://acme-corp.com", question="What is your enterprise pricing?") — get the answer

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "webmcp-gateway": {
      "command": "webmcp-gateway",
      "args": ["--transport", "stdio"]
    }
  }
}

SSE Mode (Remote Clients, ChatGPT)

webmcp-gateway --transport sse --port 8808

Any MCP client that supports SSE transport can connect to http://your-server:8808.

Test Drive: The Demo Site

The repo includes a demo site (examples/demo_site.html) that registers two tools so you can try the full flow locally:

// A simple Q&A tool
navigator.modelContext.registerTool({
  name: "ask_question",
  description: "Ask about our products",
  execute: async ({ question }) => {
    await new Promise(r => setTimeout(r, 2000)); // Simulate LLM thinking
    return { content: [{ type: "text", text: "Our pricing starts at..." }] };
  }
});

// A structured search tool
navigator.modelContext.registerTool({
  name: "search_products",
  description: "Search by category and price range",
  inputSchema: {
    properties: {
      category: { type: "string" },
      max_price: { type: "number" }
    },
    required: ["category"]
  },
  execute: async ({ category, max_price }) => {
    // Filter products, return results
  }
});

Serve it and point Claude at it:

python -m http.server 8000 -d examples/
# Then ask Claude: "Discover tools on http://localhost:8000/demo_site.html"

When Claude calls call_tool with a question, the gateway launches a browser, discovers both tools, picks ask_question (it matches the Q&A pattern), calls await tool.execute({question: "..."}), waits 2 seconds for the simulated response, and returns the answer. The AI gets a real answer, not a confirmation.

The Codebase

src/webmcp_gateway/
├── __init__.py      # Package version
├── __main__.py      # python -m webmcp_gateway
├── cli.py           # CLI entry point (stdio/sse transport)
├── server.py        # MCP server with 3 tools
├── detect.py        # Fast HTTP-based detection (no browser)
└── browser.py       # Playwright discovery & invocation

Five files. About 300 lines of core code. The complexity isn't in the gateway — it's in the async patterns that websites use to respond. That's what the next post covers in depth.

The Bigger Picture

WebMCP Gateway is a bet on a future where every website is also an API. Where the line between "browsing" and "calling tools" disappears.

Today, if you want to compare pricing across three vendors, you open three browser tabs and manually read through each site. Tomorrow, you ask Claude:

You: "Compare pricing on store-a.com, store-b.com, and store-c.com"

Claude: [calls check_webmcp on all three]
Claude: [calls call_tool on each one that has WebMCP]
Claude: "Here's a comparison:
  - Store A: 30-day returns, free shipping. Pro plan $99/mo.
  - Store B: 14-day returns, $8 return shipping. Starts at $79/mo.
  - Store C: 60-day returns, free for members. Enterprise only, custom pricing."

The website decides what to expose. The AI decides what to ask. The gateway handles the plumbing.

Try it: pip install webmcp-gateway && playwright install chromium.

WebMCP Gateway is open source under the MIT license. Built by [Salespeak AI](https://salespeak.ai).

No items found.