Callingly · The WebMCP Challenge

A website an AI agent can actually hire.

Below is one plumber's site, twice. The pages are identical except for a single script tag. On the second one, an agent can find out whether anyone is free and get you a phone call in the next minute — and a real phone rings.

Before

The web as it is

A good site. Real phone number, real reviews, and a contact form that promises a reply “within 1–2 business days”. An agent that lands here can read the page and nothing more — there is no action for it to take.

Open the before page

After · one line added

The same site, hireable

Two WebMCP tools appear: one reads the team's live calling hours, one asks Callingly to ring the team and bridge them to you. The contact form is untouched — the human path did not need replacing.

Open the after page

The entire difference

Not a plugin, not an SDK, not a rewrite. The line a customer pastes:

<script src="https://callingly.com/js/webmcp.js"
        data-callingly-key="YOUR_WEBHOOK_KEY" async></script>

The key is the slug from a Callingly webhook integration — public by design, the same way the webhook URL customers already paste into other tools is.

Trying it

Joe's Plumbing is fictional. The calls are not: they route through Callingly's production dialer to a real demo team.

Seeing the tool calls

These pages are deliberately uninstrumented, because that is the point — an ordinary business site, unaware of any of this. To watch the tool calls themselves, with arguments and return values as your agent makes them, use the instrumented console at callingly.com/webmcp.