Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for Co-Desk — Human + Agent Support Operations

The idea

Co-Desk is a human + agent support desk: a single live ticket queue that a person and an AI agent operate together, in real time, over WebMCP.

Why WebMCP

Before WebMCP, an agent helping with a real web workflow could only navigate the page and click — slow, brittle, and hard to verify. Co-Desk inverts this: instead of the agent guessing at our UI, the site declares its own operations as structured tools the agent can call. A person opens the app and works; an agent discovers those tools and acts inside the real workflow.

What people and agents can do together now

A support team can hand the agent the whole routine workload — opening requests, adding notes, routing to teams, escalating, resolving the mechanical cases — while the human watches the same screen update live and owns the judgment calls. One shared queue, two operators, with the human always in the loop. That is the collaboration WebMCP makes possible.

How we built it

  • 10 WebMCP tools (listOpenTickets, getTicket, createTicket, addNote, updateStatus, assignToTeam, escalateTicket, resolveTicket, searchTickets, summarizeQueue), each with a JSON Schema and real effects on a shared store.
  • Every action — human or agent — is written to one localStorage store and rendered live, so the queue and an activity feed update on screen.
  • Plain HTML/CSS/JS, no build step — trivially deployable.

Registration is done against document.modelContext:

await document.modelContext.registerTool({
  name: "resolveTicket",
  description: "Resolve a ticket with a short resolution summary.",
  inputSchema: {
    type: "object",
    properties: {
      ticketId: { type: "string" },
      resolution: { type: "string" },
    },
    required: ["ticketId", "resolution"],
  },
  execute: async (input) => { /* real action on the shared queue */ },
});

Challenges

The hardest part was keeping one source of truth. Tools and the human UI both mutate the same queue, so we made them share one store and one change-notification path. That guarantees an agent's action and a human click are never out of sync.

Try it

Open the live URL in ChatGPT's in-app browser or Chrome with WebMCP enabled, then ask the agent: "Summarize the queue, then handle the password-reset ticket — add a note, route it to account, and show me before resolving."

Built With

Share this project:

Updates

Submission history