Agentic Design System

MCP lab · one local evidence loop

The design loop,
callable.

Three tools let a coding agent render the interface, check the evidence, and prove why consequential decisions exist. The default stays model-free. Add explicit adapters when the work needs visual judgment or SwiftUI evidence.

TransportLocal stdio
ToolsExactly 3
Render targetsWeb + SwiftUI
Visual verdictExplicit opt-in

The public contract

See. Check. Explain.

Each tool does one job and returns typed output plus read-only ads://resources. There is no generic shell tool hiding behind the protocol.

  1. 01

    See

    ads_render

    Render the interface

    Capture a local URL or root-confined TSX component in a real browser, or call a configured SwiftUI snapshot adapter.

    Inspect request + result
    request
    {
      "target": {
        "type": "url",
        "url": "http://127.0.0.1:3000/mcp"
      },
      "states": [
        "default"
      ],
      "viewports": [
        {
          "width": 390,
          "height": 844
        },
        {
          "width": 1280,
          "height": 800
        }
      ],
      "waitFor": "main"
    }
    result
    {
      "status": "complete",
      "capturedStates": [
        "default"
      ],
      "viewports": [
        "390x844",
        "1280x800"
      ],
      "seriousAxeViolations": 0,
      "horizontalOverflowAt": [],
      "touchTargetsUnder44": []
    }
  2. 02

    Check

    ads_evaluate

    Evaluate the evidence

    Normalize deterministic gates into a review packet, then keep judgment human-owned or call an explicitly configured visual judge.

    Inspect request + result
    request
    {
      "runId": "run_ms0ubiex_26ad1c244418",
      "judge": {
        "mode": "none"
      },
      "rubric": {
        "task": "Make the ADS MCP understandable on mobile and desktop",
        "criteria": [
          {
            "name": "Design Quality",
            "weight": 35
          },
          {
            "name": "Originality",
            "weight": 30
          },
          {
            "name": "Craft",
            "weight": 20
          },
          {
            "name": "Functionality",
            "weight": 15
          }
        ]
      }
    }
    result
    {
      "status": "needs_human",
      "verdict": null,
      "scores": null,
      "blockers": []
    }
  3. 03

    Explain

    ads_trace

    Trace the decisions

    Verify that consequential decisions map to captured skill rules, source constraints, implementation files, and evidence from the same run.

    Inspect request + result
    request
    {
      "runId": "run_ms0ubiex_26ad1c244418",
      "context": "ADS MCP public lab",
      "decisions": [
        "semantic-contract-surface"
      ]
    }
    result
    {
      "valid": true,
      "errors": [],
      "resources": [
        "trace",
        "trace-validation"
      ]
    }

Frozen verification

One client. One run.
Receipts all the way down.

This packet is generated through the compiled stdio server and a real MCP client. It is a local verification artifact, not a simulated dashboard feed.

Local MCP verificationrun_ms0ubiex_26ad1c244418
  1. 01ads_render
    complete2 viewports · 0 blocking gates
  2. 02ads_evaluate
    needs_humandeterministic checks passed
  3. 03ads_trace
    validdecision provenance verified
@modelcontextprotocol/sdkPlaywright Chromium2026-07-25

Read-only evidence

The run stays inspectable.

Large artifacts remain outside the chat transcript. Agents can fetch only the known files recorded for a run; the server never becomes a general filesystem browser.

  • ads://runs/{runId}/manifest
  • ads://runs/{runId}/evidence
  • ads://runs/{runId}/receipt
  • ads://runs/{runId}/report
  • ads://runs/{runId}/trace
  • ads://runs/{runId}/trace-validation
  • ads://runs/{runId}/screenshots/{filename}

The honest boundary

Proof travels with the work.
Judgment does not disappear.