Home/Lab/Resolve
Lab · Agentic Systems

Resolve: Autonomous Support Resolution on MCP

A production-grade support agent built on a real MCP client–server architecture. It reconciles two siloed systems of record in real time — and shows every step of its reasoning in the UI.

MCPAgentsClaudeNext.jsSSETypeScript
Launch Live Demo →Source on GitHub

Live Demo

Open full screen ↗

The scenario

A customer paid their subscription but still can't log in. Two systems of record disagree: Billing says the latest invoice is PAID; Access Control still has the account flagged SUSPENDED / past_due because a sync never cleared.

The agent calls lookup_customer get_access_status verify_payment → reasons that the suspension is stale → calls reactivate_subscription. The status badge in the header animates from red SUSPENDED to green ACTIVE the moment the mutation lands.

There's also a Devin Cole test case — whose latest invoice is genuinely FAILED. The agent declines to reactivate and explains the actual problem. This proves the agent reasons over evidence, not just rubber-stamps requests.

How the MCP loop works

1
listTools() discovery

On startup the agent connects to both MCP servers and calls listTools(). The Connected Systems panel is populated dynamically from what each server declares — not hard-coded.

2
Tool-use loop

The agent sends Claude the merged tool list. Claude decides which tools to call, in what order. The agent executes each callTool() and appends the result. The loop runs until Claude returns a final answer.

3
Cross-system reconciliation

Billing says PAID. Access Control says SUSPENDED. The agent reasons over both systems of record, identifies the contradiction, and resolves it — reactivate_subscription only if billing confirms payment.

4
Live trace visibility

Every tool_call, tool_result, and agent_thinking event streams to the UI over SSE. The Orchestration Trace panel shows the exact reasoning chain in real time.

Architecture — three tiers, one Next.js app

BrowserResolve Console3-pane React app. Conversation + live SSE trace panel.
Agent Layer/api/agentMCP Client connects to both servers. Runs Claude tool-use loop. Streams SSE events.
MCP ServerBilling MCPget_billing_history, verify_payment. Seeded in-memory data.
MCP ServerAccess Control MCPlookup_customer, get_access_status, reactivate_subscription. Mutable in-memory record.

Why MCP changes support operations

The real unlock of MCP isn't “AI can call an API” — it's that an agent can orchestrate across siloed systems of record that were never designed to talk to each other, reconcile their disagreements, and take the remediating action — with every step inspectable. The help desk is just the first place that pays for itself.