2026-09-23·by Sijie Wang#standmeet#architecture#design

as-mcp-facade

The as-MCP facade

Parent: service-handle

This page is the service handle — StandMeet as an MCP server (the outward plane), not the capability plane where our own agent consumes plugins as host — see confusables.

The master design names three orientations of the platform:

  • host — runs plugins
  • connector-owner — holds credentialed integrations
  • as-MCP-server — the instance itself exposed as ONE MCP endpoint so that other people's agents can consume the owner's tools

Implementation

mcphandle.registerTools (backend/internal/routes/mcphandle/server.go:173) has two sources: registerCapabilities walks OwnerMCPBindings() on the capability registry (adapter.go:36) — capabilities declare their owner-facing tools once — and registerDispatcherOps (from_dispatcher.go:45) projects every op of the outbound-convergence dispatcher into a tool via d.Attach(MCPFace()).Ops(), the ui-mcp-parity projection. The old hand-written tools_*.go AddTool registrations were deleted (none exist at 36789537d). Since 2026-09-04 (a5e1cada9) the handshake reports the instance version and ships ServerInstructions (corpus model + "call instance.upgrade_check") to the connecting agent (server.go:57).

Auth = Sigv1.

Why it matters

With entry-agnostic-agent, this facade is just "another consumer" of the same neutral boundary — the machine-readable outlet of the product (your persona as an API for agents), unified rather than built twice.

flowchart LR
  EXT["owner's AI session · someone else's agent
(external MCP clients)"] --> F
  subgraph SM["StandMeet — our box"]
    F["/mcp/* facade (Sigv1)"] --> REG["capreg OwnerMCPBindings()"]
    F --> DISP["dispatcher ops
Attach(MCPFace).Ops()"]
    REG --> T1["owner tools, aggregated"]
    DISP --> T1
  end

The facade turns the capability registry into one aggregated tool surface for external agents — declared once at the capability, served once at the endpoint.

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →