Tier-1 support is mostly the same five questions read from three systems and answered from one wiki. The hard part isn’t the model — it’s wiring the helpdesk, the knowledge base, the bug tracker, and the human handoff channel into one coherent agent loop without writing four SDK adapters by hand.
Every support team rebuilds the same plumbing: a Zendesk client, an Intercom client, a Notion search wrapper, a Slack notifier, retries, rate-limit handling, schemas the model can call. By the time you ship, you’ve built more glue than agent. The reply quality you wanted got buried under a half-finished integration backlog.
The shape of the work is identical across teams. What changes is which helpdesk, which wiki, which paging channel. That’s exactly what a Model Context Protocol gateway is for: hand it a vendor URL or OpenAPI spec, get back schema-valid tools the agent can call.
wmcp.sh is that gateway. It turns Zendesk, Intercom, Notion, Linear, and Slack endpoints into MCP-shaped tools your Claude or GPT agent can invoke directly — so you can spend the week on policy and prompts, not SDK wrappers. wmcp.sh is not affiliated with Zendesk, Intercom, Notion, Linear, or Slack.
1. Inbox listener. A webhook on your helpdesk fires whenever a new ticket lands. The listener forwards the ticket ID into a queue (Cloudflare Queues, SQS, or any task runner) so each ticket gets its own agent run.
2. Tool gateway (wmcp.sh). The agent calls https://wmcp.sh/api/v1/tools?url=... once at boot to materialize tool schemas for the helpdesk, the knowledge base, the bug tracker, and the handoff channel. The agent receives a unified MCP tool list.
3. Reasoning loop. The model (Claude Sonnet works well; wmcp.sh is not affiliated with Anthropic) reads the ticket, searches the KB, drafts a reply into the ticket as a private note, and decides whether to file a Linear escalation or page #support-eng in Slack.
4. Human gate. A support engineer reviews the draft, edits, and clicks send. The agent never closes a ticket on its own; it only proposes. Audit logs land in your warehouse via /managed.
| Capability | Vendor | How wmcp.sh wires it |
|---|---|---|
| Read & update tickets | Zendesk / Intercom | ✅ Point /integration/openapi at the vendor OpenAPI spec |
| Search policy / KB | Notion | ✅ Native adapter at /integration/notion |
| File escalation ticket | Linear | ✅ OpenAPI adapter, scoped to issues.create |
| Page on-call human | Slack | ✅ Native adapter at /integration/slack |
| Scrape a status page | Any public URL | ✅ Generic web extraction via /api/v1/tools?url=... |
| Audit log + replay | Your warehouse | ✅ Included on /managed |
Minimal Python loop using the Anthropic Messages API and wmcp.sh tool extraction. Drops your ticket ID in, gets a draft reply and an escalation decision out.
import os, httpx
from anthropic import Anthropic
client = Anthropic()
WMCP = "https://wmcp.sh"
# 1. Materialize MCP tools for each connected system
def tools_for(url):
r = httpx.get(f"{WMCP}/api/v1/tools", params={"url": url})
return r.json()["tools"]
tools = (
tools_for("https://acme.zendesk.com/api/v2")
+ tools_for("https://www.notion.so/acme-handbook")
+ tools_for("https://api.linear.app")
+ tools_for("https://slack.com/api")
)
# 2. Triage a single ticket
ticket_id = os.environ["TICKET_ID"]
msg = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=2048,
tools=tools,
messages=[{"role": "user",
"content": f"Triage ticket {ticket_id}. Search the handbook before drafting. "
"Post the draft as a private internal note. If it's a bug, file a Linear "
"issue and page #support-eng in Slack. Never close the ticket."}],
)
print(msg.content) # tool_use blocks + final text
/api/v1/tools call returns schema-valid MCP toolsCustom adapter + hosted MCP at mcp.yourbrand.com + verified badge. Starter $499 one-time · Managed Retainer $999/mo · Enterprise $4,999+/mo.