Skip to main content

MCP server + CLI that lets an AI coding agent run FRASER's persona swarm against a build and gate the fix pass/fail

Project description

FRASER Experience Merge-Gate — for AI coding agents

Point FRASER's persona swarm at a build, get back grounded, machine-readable experience findings, ship a fix, then re-run the identical cast to gate the fix pass | fail. FRASER is the loop's brain and eyes — it finds where real users break and verifies the fix helped. It never writes or merges your code; your agent does that.

Why this exists: a build can pass its own typecheck + unit tests and still have a user drop off. That gap — experience ≠ correctness — is what the gate catches.

The loop

your agent builds + deploys ─▶ fraser_start_review(target_url)   → {run_id, project_id, flow_id}
                                     │  (async, minutes — poll)
                              fraser_get_status(run_id) ─▶ complete
                              fraser_get_findings(run_id)
                                     │  → findings[] {finding_id, screenshot, reproduction, fix_hint} + fix_prompt
   your agent fixes + redeploys ◀────┘   (FRASER never touches code)
                                     ▼
                              fraser_validate_fix(project_id, flow_id, baseline_run_id, new_url)
                              fraser_get_validation(run_id, baseline_run_id)
                                     │  → {gate: pass|fail, per-finding {fixed|still_present|regressed}, new_findings}
                              gate=fail ⇒ don't merge · gate=pass ⇒ ship

Setup (one paste)

Get an API token from the FRASER dashboard (Settings → Connect MCP → Generate token), then add to your agent's .mcp.json:

{
  "mcpServers": {
    "fraser": {
      "command": "uvx",
      "args": ["--from", "fraser-gate", "fraser-gate-mcp"],
      "env": { "FRASER_API_KEY": "<your token>", "FRASER_API_URL": "https://fraser.lythe.ai" }
    }
  }
}

That's it. localhost just works — if you point a review at http://localhost:3000, the MCP opens an ephemeral public tunnel automatically so the hosted engine can reach your machine; you set nothing up.

Tools (6)

Tool Use
fraser_start_review(target_url, mode?, objective?, context?, num_testers?, auth_notes?) Start a review. Async — returns a run_id.
fraser_get_status(run_id) Poll until terminal (complete/failed/timed_out). Runs take minutes.
fraser_get_findings(run_id) Scrubbed findings + fix_prompt. You fix from these.
fraser_validate_fix(project_id, flow_id, baseline_run_id, target_url) Re-run the identical cast on the fix. Async.
fraser_get_validation(run_id, baseline_run_id) The pass/fail gate verdict.
fraser_cancel(run_id) Stop a run.

It takes minutes. FRASER generates personas from your app, then drives a real browser as each one. Start the review, do other work, and poll fraser_get_status every few seconds.

Knobs (defaults are good): mode = visual (experience critique, default) or battle (defect sweep); num_testers 0 = the grounded cast; context = one line on what the product is (anchors the personas for a new/thin app); auth_notes = app login creds if it's behind your own login (secret).

CLI (same loop, for CI without MCP)

export FRASER_API_KEY=<token> FRASER_API_URL=https://fraser.lythe.ai
fraser review https://myapp-pr42.vercel.app --wait          # prints findings JSON
fraser validate <project_id> <flow_id> <baseline_run_id> <new_url> --wait   # exits non-zero on a FAIL gate

Local dev of this package: pip install -e . then run python mcp_server.py (stdio) or python cli.py.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fraser_gate-0.1.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fraser_gate-0.1.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file fraser_gate-0.1.0.tar.gz.

File metadata

  • Download URL: fraser_gate-0.1.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for fraser_gate-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b76808e5d7a45cf14510c0a7c3ede13856fae19424bda5d35ff87aa0c18fad6d
MD5 8048477e060c2914a1b15e560317be00
BLAKE2b-256 7f7fb8b2e402343cbe14f8a45d5b6332b47b25886a55696dafd00f5433d23fd1

See more details on using hashes here.

File details

Details for the file fraser_gate-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fraser_gate-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for fraser_gate-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b85986b8f4303527c41fc10f9744072ff5b31a1f75cbabca4392eb5586f83f4
MD5 0f31401a561b90d646f0c9a9f0551387
BLAKE2b-256 92c570f40b37629c6c42ba1472e7414e4e953bdb9f248c0cf092662643b733de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page