Skip to content

v1.0.0 — The WebMCP Challenge submission

Latest

Choose a tag to compare

@ribdsp ribdsp released this 01 Sep 00:20
ad77fe9

The state of the repository as submitted to The WebMCP Challenge. Tagged so the snapshot judges evaluated stays reachable if work continues on main.

What's in it

17 WebMCP tools over a session replay engine. The agent reads the session's shape, compresses a replayed DOM into something a model can actually read, and binary-searches the timeline for the millisecond a state change happened — then hands the answer back to a human by moving their playhead to it.

Two things it does that a tool surface usually doesn't:

  • ask_human_visual blocks. The agent declares that it cannot see rendered output, asks a person to look at a specific moment, and waits. Answers come back structured — a choice plus a timestamp — not as prose to reinterpret. WebMCP has no "image" content type, and that constraint produced a better design than screenshots would have.
  • Every mutation carries an author. The activity feed distinguishes what the agent did from what the human did, per contribution, with undo on each.

No backend. Recordings are static JSON; replay, binary search, DOM compression and report validation all happen in the tab.

Verified at this tag

  • npx tsc --noEmit clean
  • 309 tests passing across 25 files. compress-dom, bisect and evaluatePredicate were written first as specifications and stayed red until the implementations satisfied them
  • no-eval.test.ts greps the source and fails the build if eval( or new Function appears — nothing from the model is ever executed

Known, and stated rather than hidden

registerDynamicTool is a stub and nothing calls it: promoting a hypothesis does not mint an 18th tool. bisect assumes a monotonic predicate. read_network cannot see sendBeacon, WebSockets or EventSource. Full list in the README's Status and limitations.

Requires Node 20+ and WebMCP in the browser — see Getting WebMCP in your browser. Without it, Traces still works as an ordinary replay player; the tools simply aren't registered.