· case v / viii — capability webmcp challenge · in judging

signpost.ziola.dev

A stateless capability resolver for WebMCP.

year
MMXXVI
role
Design & build
surface
WebMCP resolver
website
source

The brief

Signpost lets a generic browser agent discover where a capability can be performed without taking ownership of the agent's objective, decomposition, or sequence. The agent decides what it needs and what to do next; when it needs a capability, it calls one resolver — resolve_surface({ capability }) — and Signpost returns matching provider surfaces. It holds no journey state, session, route, cursor, history, or server-side plan.

Agent owns why and sequence. Signpost answers where. Providers own what. Consequential providers control whether a mutation may execute. Evidence records what happened.

The demonstration

one objective, three providers

One compound objective — order a coffee, book the earliest basic haircut, and check whether a palette contains a hex value — resolved one capability at a time across three independently built providers, with the agent choosing the sequence itself.

Reference providers

independently built
deckhouse.coffee order_item · consequential live ↗
chairandcomb.studio book_appointment · consequential live ↗
hexregistry.dev check_palette · read-only live ↗
demo scope · all orders and bookings are simulated · no payment is collected and no real reservation is created

Notes from the build

decisions that held
resolution, not orchestration

Signpost does not plan the journey or coordinate providers. A response carries candidate surfaces only — retrieval scores and match diagnostics stay internal to the resolver, out of its public contract.

no embeddings, no state

Retrieval is transparent lexical and fuzzy matching over provider-authored capability IDs and descriptions. No model-based retrieval, and nothing retained between one resolution call and the next.

exact terms, or nothing

Authorization binds the exact material terms and is single-use. The drift test authorizes an appointment for 10:00, presents 10:30 at execution, and returns block with zero provider calls.

← back to ziola next The WebMCP provider stack →