Skip to content

v8.0.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 16:29
· 5 commits to main since this release

Added

  • The MCP App workspace. The server now exposes one portable MCP App —
    a single bundled HTML resource registered at ui://getcompetitive/workspace
    (text/html;profile=mcp-app) and linked from the three App tools. It renders
    three Views over the existing deterministic engine: Team Doctor
    (analyze_team synergy/diagnose — six sets, labelled heuristic score,
    stacked weaknesses, coverage, speed and top fixes), Team Builder
    (optimize_team — select a proposed member, validate with team_io
    legality, export the paste), and Matchup Board (prepare_matchup —
    bring four, speed races, calculated damage and heuristic leads, with the
    opponent's set assumptions shown beside each roll). The bundle is built by
    scripts/build-app.mjs with esbuild and embedded in the compiled server JS,
    so the stdio, HTTP and serverless Worker entrypoints serve byte-identical
    markup with no runtime filesystem read, no external CDN, fonts or scripts.
  • A pinned App SDK. @modelcontextprotocol/ext-apps@1.7.5 (the release
    line that pairs with this server's @modelcontextprotocol/sdk@^1.30.0) is
    used for resource registration and App-side messages; the App itself imports
    the SDK's app-with-deps bundle. Host support is negotiated through the
    extension capability where the SDK requires it, and ordinary text output is
    preserved unchanged for hosts without Apps support.

Changed

  • Breaking: the three App tools wrap structuredContent in a versioned
    envelope.
    analyze_team, optimize_team and prepare_matchup now return
    { schemaVersion: 1, view, tool, mode, regulation, data } in
    structuredContent, where data is the unchanged analytics payload at the
    requested detail level. The model-facing text (the compact JSON summary) is
    byte-for-byte the same; only structuredContent consumers migrate their
    reads to …structuredContent.data.<field>. schemaVersion is the migration
    hook: a View that does not recognise the number renders an unsupported-schema
    state instead of guessing. Every other tool's structuredContent is
    untouched, and no tool's analytics field was renamed or reshaped.
  • The evidence app and the App are now distinct surfaces. The HTTP
    entrypoint's / page (the model-converses browser page) is unchanged; the
    MCP App is the sandboxed iframe served through resources/read.

Not included

  • App-only tools (_meta.ui.visibility: ["app"]) are deferred: every View
    interaction uses the existing public tools, so the model catalog stays at
    nine tools and app-initiated drilldowns request detail: "evidence" without
    adding to the model's history. Private endpoints (e.g. ui_get_team_detail)
    will only be added if a focused drilldown needs one.