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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b76808e5d7a45cf14510c0a7c3ede13856fae19424bda5d35ff87aa0c18fad6d
|
|
| MD5 |
8048477e060c2914a1b15e560317be00
|
|
| BLAKE2b-256 |
7f7fb8b2e402343cbe14f8a45d5b6332b47b25886a55696dafd00f5433d23fd1
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b85986b8f4303527c41fc10f9744072ff5b31a1f75cbabca4392eb5586f83f4
|
|
| MD5 |
0f31401a561b90d646f0c9a9f0551387
|
|
| BLAKE2b-256 |
92c570f40b37629c6c42ba1472e7414e4e953bdb9f248c0cf092662643b733de
|